From 029f9f13231c03fc0dd094a15fe56f17bc2bfda9 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 10 Jul 2024 16:24:12 -0700 Subject: [PATCH] refactor: connect to camera manually --- src/use-viewport/use-viewport.ts | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/use-viewport/use-viewport.ts b/src/use-viewport/use-viewport.ts index b03cfaa..1c2fb28 100644 --- a/src/use-viewport/use-viewport.ts +++ b/src/use-viewport/use-viewport.ts @@ -1,4 +1,4 @@ -import { useBinding, useEffect, useMemo } from "@rbxts/react"; +import { useBinding, useEffect } from "@rbxts/react"; import { useCamera } from "../use-camera"; import { useEventListener } from "../use-event-listener"; @@ -9,21 +9,20 @@ import { useEventListener } from "../use-event-listener"; */ export function useViewport(listener?: (viewport: Vector2) => void) { const camera = useCamera(); - const [viewport, setViewport] = useBinding(Vector2.one); + const [viewport, setViewport] = useBinding(camera.ViewportSize); + + useEffect(() => { + const connection = camera.GetPropertyChangedSignal("ViewportSize").Connect(() => { + setViewport(camera.ViewportSize); + listener?.(camera.ViewportSize); + }); - useEventListener(camera?.GetPropertyChangedSignal("ViewportSize"), () => { setViewport(camera.ViewportSize); listener?.(camera.ViewportSize); - }); - useMemo(() => { - if (camera) { - setViewport(camera.ViewportSize); - } - }, [camera]); - - useEffect(() => { - listener?.(viewport.getValue()); + return () => { + connection.Disconnect(); + }; }, [camera]); return viewport;