Ver código fonte

feat(core): reference raycaster from core state

alvarosabu 2 anos atrás
pai
commit
5d366a06b5

+ 1 - 0
packages/tres/src/core/index.ts

@@ -7,3 +7,4 @@ export * from './useScene/'
 export * from './useLoader'
 export * from './useTexture'
 export * from './useTres'
+export * from './useRaycaster'

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

@@ -6,7 +6,7 @@ import { useEventListener } from '@vueuse/core'
 
 import { isArray, isDefined, isFunction } from '@alvarosabu/utils'
 import { normalizeVectorFlexibleParam } from '/@/utils/normalize'
-import { useCamera, useCatalogue, useRenderLoop, useScene } from '/@/core/'
+import { useCamera, useCatalogue, useRenderLoop, useScene, useTres } from '/@/core/'
 import { useLogger } from '/@/composables'
 import { TresAttributes, TresCatalogue, TresInstance, TresVNode, TresVNodeType, TresEvent } from '/@/types'
 import { useRaycaster } from '../useRaycaster'
@@ -160,11 +160,12 @@ export function useInstanceCreator(prefix: string) {
           const cmp = defineComponent({
             name,
             setup(_props, { slots, attrs, ...ctx }) {
+              const { state } = useTres()
               const { scene: fallback } = useScene()
               const { onLoop } = useRenderLoop()
               const scene = inject('local-scene', fallback)
               const { raycaster: raycasterFallback } = useRaycaster()
-              const raycaster = inject('raycaster', raycasterFallback) /* 
+              const raycaster = state.raycaster || raycasterFallback /* 
               const currentInstance = inject<Ref>('currentInstance') */
               const { pushCamera } = useCamera()
 

+ 6 - 0
packages/tres/src/core/useRaycaster/index.ts

@@ -1,11 +1,17 @@
 import { Raycaster, Vector2 } from 'three'
 import { onUnmounted, provide, ref, shallowRef } from 'vue'
+import { useTres } from '/@/core'
 
 const raycaster = shallowRef(new Raycaster())
 const pointer = ref(new Vector2())
 const currentInstance = ref(null)
 
 export function useRaycaster() {
+  const { setState } = useTres()
+  setState('raycaster', raycaster)
+  setState('pointer', pointer)
+  setState('currentInstance', currentInstance)
+
   provide('raycaster', raycaster)
   provide('pointer', pointer)
   provide('currentInstance', currentInstance)