瀏覽代碼

fix(core): avoid multiple calls to useCamera

alvarosabu 2 年之前
父節點
當前提交
b0278c653c
共有 2 個文件被更改,包括 5 次插入5 次删除
  1. 3 4
      packages/tres/src/core/useInstanceCreator/index.ts
  2. 2 1
      packages/tres/src/core/useRenderer/index.ts

+ 3 - 4
packages/tres/src/core/useInstanceCreator/index.ts

@@ -24,7 +24,7 @@ const COLOR_KEYS = ['r', 'g', 'b']
  */
 export function useInstanceCreator(prefix: string) {
   const { /* logMessage, */ logError } = useLogger()
-
+  const { pushCamera } = useCamera()
   /**
    * Process props to `.setAttribute` on instance.
    *
@@ -167,8 +167,8 @@ export function useInstanceCreator(prefix: string) {
       return
     } else {
       const vNodeType = ((vnode.type as TresVNodeType).name as string).replace(prefix, '')
-      const { catalogue: fallback } = useCatalogue()
-      const catalogue = inject<Ref<TresCatalogue>>('catalogue') || fallback
+
+      const catalogue = inject<Ref<TresCatalogue>>('catalogue')
 
       // check if args prop is defined on the vnode
       let internalInstance
@@ -265,7 +265,6 @@ export function useInstanceCreator(prefix: string) {
               const { onLoop } = useRenderLoop()
               const scene = state.scene
               const raycaster = state.raycaster
-              const { pushCamera } = useCamera()
 
               let instance = createInstance(threeObj, attrs, slots)
               processProps(attrs, instance)

+ 2 - 1
packages/tres/src/core/useRenderer/index.ts

@@ -149,6 +149,8 @@ export function useRenderer(canvas: MaybeElementRef, container: MaybeElementRef,
     preset = undefined,
   } = toRefs(options)
 
+  const { setState } = useTres()
+
   const { width, height } = resolveUnref(windowSize) ? useWindowSize() : useElementSize(container)
   const { logError } = useLogger()
   const { pixelRatio } = useDevicePixelRatio()
@@ -212,7 +214,6 @@ export function useRenderer(canvas: MaybeElementRef, container: MaybeElementRef,
       premultipliedAlpha: resolveUnref(premultipliedAlpha),
     })
 
-    const { setState } = useTres()
     setState('renderer', renderer.value)
     setState('clock', new Clock())
     setState('aspectRatio', aspectRatio)