Explorar o código

feat: camera registration ops from node local state ctx

alvarosabu hai 1 ano
pai
achega
5bd10da2b9

+ 0 - 3
src/composables/useCamera/index.ts

@@ -50,9 +50,6 @@ export const useCamera = ({ sizes, scene }: Pick<TresContext, 'sizes'> & { scene
     }
   })
 
-  scene.userData.tres__registerCamera = registerCamera
-  scene.userData.tres__deregisterCamera = deregisterCamera
-
   onUnmounted(() => {
     cameras.value = []
   })

+ 3 - 1
src/composables/useTresContextProvider/index.ts

@@ -191,7 +191,9 @@ export function useTresContextProvider({
   provide('useTres', ctx)
 
   // Add context to scene local state
-  ctx.scene.value.__tres.root = ctx
+  ctx.scene.value.__tres = {
+    root: ctx,
+  }
 
   // Performance
   const updateInterval = 100 // Update interval in milliseconds

+ 2 - 5
src/core/nodeOps.ts

@@ -107,10 +107,7 @@ export const nodeOps: RendererOptions<TresObject, TresObject | null> = {
     if (child?.isObject3D) {
 
       if (child?.isCamera) {
-        if (!scene?.userData.tres__registerCamera)
-          throw 'could not find tres__registerCamera on scene\'s userData'
-
-        scene?.userData.tres__registerCamera?.(child as unknown as Camera)
+        child.__tres.root.registerCamera?.(child as unknown as Camera)
       }
 
       if (
@@ -179,7 +176,7 @@ export const nodeOps: RendererOptions<TresObject, TresObject | null> = {
       }
 
       const deregisterCameraIfRequired = (object: Object3D) => {
-        const deregisterCamera = scene?.userData.tres__deregisterCamera
+        const deregisterCamera = node.__tres.root.deregisterCamera
 
         if (!deregisterCamera)
           throw 'could not find tres__deregisterCamera on scene\'s userData'