1
0
mirror of https://github.com/troisjs/trois.git synced 2024-11-24 12:22:03 +08:00
trois/build/trois.js.map
2023-04-06 19:39:47 +02:00

1 line
215 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"trois.js","sources":["../src/tools.ts","../src/core/useRaycaster.ts","../src/core/usePointer.ts","../src/core/useThree.ts","../src/core/Renderer.ts","../src/core/Camera.ts","../src/core/OrthographicCamera.ts","../src/core/PerspectiveCamera.ts","../src/core/Scene.ts","../src/core/Object3D.ts","../src/core/Group.ts","../src/core/Raycaster.ts","../src/core/CubeCamera.ts","../src/meshes/Mesh.ts","../src/geometries/Geometry.ts","../src/geometries/BoxGeometry.ts","../src/geometries/CircleGeometry.ts","../src/geometries/ConeGeometry.ts","../src/geometries/CylinderGeometry.ts","../src/geometries/DodecahedronGeometry.ts","../src/geometries/ExtrudeGeometry.ts","../src/geometries/IcosahedronGeometry.ts","../src/geometries/LatheGeometry.ts","../src/geometries/OctahedronGeometry.ts","../src/geometries/PlaneGeometry.ts","../src/geometries/PolyhedronGeometry.ts","../src/geometries/RingGeometry.ts","../src/geometries/SphereGeometry.ts","../src/geometries/ShapeGeometry.ts","../src/geometries/TetrahedronGeometry.ts","../src/geometries/TorusGeometry.ts","../src/geometries/TorusKnotGeometry.ts","../src/geometries/TubeGeometry.ts","../src/lights/Light.ts","../src/lights/AmbientLight.ts","../src/lights/DirectionalLight.ts","../src/lights/HemisphereLight.ts","../src/lights/PointLight.ts","../src/lights/RectAreaLight.ts","../src/lights/SpotLight.ts","../src/materials/Material.ts","../src/materials/MatcapMaterial.ts","../src/materials/ShaderMaterial.ts","../src/materials/SubsurfaceScatteringShader.ts","../src/materials/SubSurfaceMaterial.ts","../src/materials/Texture.ts","../src/materials/CubeTexture.ts","../src/materials/VideoTexture.ts","../src/meshes/Box.ts","../src/meshes/Circle.ts","../src/meshes/Cone.ts","../src/meshes/Cylinder.ts","../src/meshes/Dodecahedron.ts","../src/meshes/Icosahedron.ts","../src/meshes/Lathe.ts","../src/meshes/Octahedron.ts","../src/meshes/Plane.ts","../src/meshes/Polyhedron.ts","../src/meshes/Ring.ts","../src/meshes/Sphere.ts","../src/meshes/Tetrahedron.ts","../src/meshes/Text.ts","../src/meshes/Torus.ts","../src/meshes/TorusKnot.ts","../src/meshes/Tube.ts","../src/meshes/Image.ts","../src/meshes/InstancedMesh.ts","../src/meshes/Sprite.ts","../src/meshes/Points.ts","../src/models/Model.ts","../src/models/GLTF.ts","../src/models/FBX.ts","../src/effects/EffectComposer.ts","../src/effects/EffectPass.ts","../src/effects/RenderPass.ts","../src/effects/BokehPass.ts","../src/effects/FilmPass.ts","../src/effects/FXAAPass.ts","../src/effects/HalftonePass.ts","../src/effects/SMAAPass.ts","../src/effects/SSAOPass.ts","../src/shaders/default.ts","../src/shaders/TiltShift.ts","../src/effects/TiltShiftPass.ts","../src/effects/UnrealBloomPass.ts","../src/shaders/ZoomBlur.ts","../src/effects/ZoomBlurPass.ts","../src/plugin.ts","../src/use/useTextures.ts"],"sourcesContent":["import { ref, toRef, watch, WatchStopHandle } from 'vue'\n\ntype OptionSetter = (dst: any, key: string, value: any) => void\n\nexport function applyObjectProps(\n dst: any,\n options: Record<string, unknown>,\n setter?: OptionSetter\n): void {\n if (options instanceof Object) {\n Object.entries(options).forEach(([key, value]) => {\n if (setter) setter(dst, key, value)\n else dst[key] = value\n })\n }\n}\n\nexport function bindObjectProp(\n src: any,\n prop: string,\n dst: any,\n apply = true,\n setter?: OptionSetter\n): WatchStopHandle {\n if (apply) applyObjectProps(dst, src[prop], setter)\n const r = toRef(src, prop)\n return watch(r, (value) => { applyObjectProps(dst, value, setter) })\n}\n\nexport function bindObjectProps(\n src: any,\n dst: any,\n apply = true,\n setter?: OptionSetter\n): WatchStopHandle {\n if (apply) applyObjectProps(dst, src, setter)\n const r = ref(src)\n return watch(r, (value) => { applyObjectProps(dst, value, setter) }, { deep: true })\n}\n\nexport function setFromProp(o: Record<string, unknown>, prop: Record<string, unknown>): void {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value\n })\n }\n}\n\nexport function bindProps(src: any, props: string[], dst: any): void {\n props.forEach(prop => {\n bindProp(src, prop, dst, prop)\n })\n}\n\nexport function bindProp(src: any, srcProp: string, dst: any, dstProp?: string): void {\n const _dstProp = dstProp || srcProp\n const ref = toRef(src, srcProp)\n if (ref.value instanceof Object) {\n setFromProp(dst[_dstProp], ref.value)\n watch(ref, (value) => { setFromProp(dst[_dstProp], value) }, { deep: true })\n } else {\n if (ref.value !== undefined) dst[_dstProp] = src[srcProp]\n watch(ref, (value) => { dst[_dstProp] = value })\n }\n}\n\nexport function propsValues(props: Record<string, unknown>, exclude: string[] = []): Record<string, unknown> {\n const values: Record<string, unknown> = {}\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || !exclude.includes(key)) {\n values[key] = value\n }\n })\n return values\n}\n\nexport function lerp(value1: number, value2: number, amount: number): number {\n amount = amount < 0 ? 0 : amount\n amount = amount > 1 ? 1 : amount\n return value1 + (value2 - value1) * amount\n}\n\nexport function limit(val: number, min: number, max: number): number {\n return val < min ? min : (val > max ? max : val)\n}\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d'\nconst DEFAULT_MATCAP = '0404E8_0404B5_0404CB_3333FC'\n\nexport function getMatcapUrl(hash = DEFAULT_MATCAP, format = 1024): string {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`\n return `${MATCAP_ROOT}/${format}/${fileName}`\n}\n\nfunction getMatcapFormatString(format: number) {\n switch (format) {\n case 64:\n return '-64px'\n case 128:\n return '-128px'\n case 256:\n return '-256px'\n case 512:\n return '-512px'\n default:\n return ''\n }\n}\n","import { Camera, Intersection, Object3D, Plane, Raycaster, Vector2, Vector3 } from 'three'\n\nexport interface RaycasterInterface {\n position: Vector3\n updatePosition(coords: Vector2): void\n intersect(coords: Vector2, objects: Object3D[], recursive?: boolean): Intersection[],\n}\n\nexport interface RaycasterConfigInterface {\n camera: Camera\n resetPosition?: Vector3\n}\n\nexport default function useRaycaster(options: RaycasterConfigInterface): RaycasterInterface {\n const {\n camera,\n resetPosition = new Vector3(0, 0, 0),\n } = options\n\n const raycaster = new Raycaster()\n const position = resetPosition.clone()\n const plane = new Plane(new Vector3(0, 0, 1), 0)\n\n const updatePosition = (coords: Vector2) => {\n raycaster.setFromCamera(coords, camera)\n camera.getWorldDirection(plane.normal)\n raycaster.ray.intersectPlane(plane, position)\n }\n\n const intersect = (coords: Vector2, objects: Object3D[], recursive = false) => {\n raycaster.setFromCamera(coords, camera)\n return raycaster.intersectObjects(objects, recursive)\n }\n\n return {\n position,\n updatePosition,\n intersect,\n }\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Camera, InstancedMesh, Intersection, Object3D, Vector2, Vector3 } from 'three'\nimport useRaycaster from './useRaycaster'\n\nexport interface PointerEventInterface {\n type: 'pointerenter' | 'pointermove' | 'pointerleave' | 'click'\n position?: Vector2\n positionN?: Vector2\n positionV3?: Vector3\n}\n\nexport interface PointerIntersectEventInterface {\n type: 'pointerenter' | 'pointerover' | 'pointermove' | 'pointerleave' | 'click'\n component: any\n over?: boolean\n intersect?: Intersection\n}\n\nexport type PointerCallbackType = (e: PointerEventInterface) => void\nexport type PointerIntersectCallbackType = (e: PointerIntersectEventInterface) => void\n\nexport interface PointerPublicConfigInterface {\n intersectMode?: 'frame'\n intersectRecursive?: boolean\n touch?: boolean\n resetOnEnd?: boolean\n onEnter?: PointerCallbackType\n onMove?: PointerCallbackType\n onLeave?: PointerCallbackType\n onClick?: PointerCallbackType\n onIntersectEnter?: PointerIntersectCallbackType\n onIntersectOver?: PointerIntersectCallbackType\n onIntersectMove?: PointerIntersectCallbackType\n onIntersectLeave?: PointerIntersectCallbackType\n onIntersectClick?: PointerIntersectCallbackType\n}\n\nexport interface PointerConfigInterface extends PointerPublicConfigInterface {\n camera: Camera\n domElement: HTMLCanvasElement\n intersectObjects: Object3D[] | (() => Object3D[])\n}\n\nexport interface PointerInterface {\n position: Vector2\n positionN: Vector2\n positionV3: Vector3\n intersectObjects: Object3D[] | (() => Object3D[])\n listeners: boolean\n addListeners(cb: void): void\n removeListeners(cb: void): void\n intersect(): void\n}\n\nexport default function usePointer(options: PointerConfigInterface): PointerInterface {\n const {\n camera,\n domElement,\n intersectObjects,\n intersectRecursive = false,\n touch = true,\n resetOnEnd = false,\n onEnter = () => {},\n onMove = () => {},\n onLeave = () => {},\n onClick = () => {},\n onIntersectEnter = () => {},\n onIntersectOver = () => {},\n onIntersectMove = () => {},\n onIntersectLeave = () => {},\n onIntersectClick = () => {},\n } = options\n\n const position = new Vector2(0, 0)\n const positionN = new Vector2(0, 0)\n\n const raycaster = useRaycaster({ camera })\n const positionV3 = raycaster.position\n\n const obj: PointerInterface = {\n position,\n positionN,\n positionV3,\n intersectObjects,\n listeners: false,\n addListeners,\n removeListeners,\n intersect,\n }\n\n return obj\n\n function reset() {\n position.set(0, 0)\n positionN.set(0, 0)\n positionV3.set(0, 0, 0)\n }\n\n function updatePosition(event: TouchEvent | MouseEvent) {\n let x, y\n // @ts-ignore\n if (event.touches && event.touches.length > 0) {\n x = (<TouchEvent>event).touches[0].clientX\n y = (<TouchEvent>event).touches[0].clientY\n } else {\n x = (<MouseEvent>event).clientX\n y = (<MouseEvent>event).clientY\n }\n\n const rect = domElement.getBoundingClientRect()\n position.x = x - rect.left\n position.y = y - rect.top\n positionN.x = (position.x / rect.width) * 2 - 1\n positionN.y = -(position.y / rect.height) * 2 + 1\n raycaster.updatePosition(positionN)\n }\n\n function intersect() {\n const _intersectObjects = getIntersectObjects()\n if (_intersectObjects.length) {\n const intersects = raycaster.intersect(positionN, _intersectObjects, intersectRecursive)\n const offObjects: Object3D[] = [..._intersectObjects]\n const iMeshes: InstancedMesh[] = []\n\n intersects.forEach(intersect => {\n const { object } = intersect\n const component = getComponent(object)\n\n // only once for InstancedMesh\n if (object instanceof InstancedMesh) {\n if (iMeshes.indexOf(object) !== -1) return\n iMeshes.push(object)\n }\n\n if (!object.userData.over) {\n object.userData.over = true\n const overEvent: PointerIntersectEventInterface = { type: 'pointerover', over: true, component, intersect }\n const enterEvent: PointerIntersectEventInterface = { ...overEvent, type: 'pointerenter' }\n onIntersectOver(overEvent)\n onIntersectEnter(enterEvent)\n component?.onPointerOver?.(overEvent)\n component?.onPointerEnter?.(enterEvent)\n }\n\n const moveEvent: PointerIntersectEventInterface = { type: 'pointermove', component, intersect }\n onIntersectMove(moveEvent)\n component?.onPointerMove?.(moveEvent)\n\n offObjects.splice(offObjects.indexOf((<Object3D>object)), 1)\n })\n\n offObjects.forEach(object => {\n const component = getComponent(object)\n if (object.userData.over) {\n object.userData.over = false\n const overEvent: PointerIntersectEventInterface = { type: 'pointerover', over: false, component }\n const leaveEvent: PointerIntersectEventInterface = { ...overEvent, type: 'pointerleave' }\n onIntersectOver(overEvent)\n onIntersectLeave(leaveEvent)\n component?.onPointerOver?.(overEvent)\n component?.onPointerLeave?.(leaveEvent)\n }\n })\n }\n }\n\n function pointerEnter(event: TouchEvent | MouseEvent) {\n updatePosition(event)\n onEnter({ type: 'pointerenter', position, positionN, positionV3 })\n }\n\n function pointerMove(event: TouchEvent | MouseEvent) {\n updatePosition(event)\n onMove({ type: 'pointermove', position, positionN, positionV3 })\n intersect()\n }\n\n function pointerClick(event: TouchEvent | MouseEvent) {\n updatePosition(event)\n const _intersectObjects = getIntersectObjects()\n if (_intersectObjects.length) {\n const intersects = raycaster.intersect(positionN, _intersectObjects, intersectRecursive)\n const iMeshes: InstancedMesh[] = []\n intersects.forEach(intersect => {\n const { object } = intersect\n const component = getComponent(object)\n\n // only once for InstancedMesh\n if (object instanceof InstancedMesh) {\n if (iMeshes.indexOf(object) !== -1) return\n iMeshes.push(object)\n }\n\n const event: PointerIntersectEventInterface = { type: 'click', component, intersect }\n onIntersectClick(event)\n component?.onClick?.(event)\n })\n }\n onClick({ type: 'click', position, positionN, positionV3 })\n }\n\n function pointerLeave() {\n if (resetOnEnd) reset()\n onLeave({ type: 'pointerleave' })\n }\n\n function getComponent(object: Object3D) {\n if (object.userData.component) return object.userData.component\n\n let parent = object.parent\n while (parent) {\n if (parent.userData.component) {\n return parent.userData.component\n }\n parent = parent.parent\n }\n\n return undefined\n }\n\n function getIntersectObjects() {\n if (typeof intersectObjects === 'function') {\n return intersectObjects()\n } else return intersectObjects\n }\n\n function addListeners() {\n domElement.addEventListener('mouseenter', pointerEnter)\n domElement.addEventListener('mousemove', pointerMove)\n domElement.addEventListener('mouseleave', pointerLeave)\n domElement.addEventListener('click', pointerClick)\n if (touch) {\n domElement.addEventListener('touchstart', pointerEnter)\n domElement.addEventListener('touchmove', pointerMove)\n domElement.addEventListener('touchend', pointerLeave)\n }\n obj.listeners = true\n }\n\n function removeListeners() {\n domElement.removeEventListener('mouseenter', pointerEnter)\n domElement.removeEventListener('mousemove', pointerMove)\n domElement.removeEventListener('mouseleave', pointerLeave)\n domElement.removeEventListener('click', pointerClick)\n\n domElement.removeEventListener('touchstart', pointerEnter)\n domElement.removeEventListener('touchmove', pointerMove)\n domElement.removeEventListener('touchend', pointerLeave)\n obj.listeners = false\n }\n}\n","import { Camera, Object3D, OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderer, WebGLRendererParameters } from 'three'\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\nimport usePointer, { PointerConfigInterface, PointerPublicConfigInterface, PointerInterface } from './usePointer'\n\nexport interface SizeInterface {\n width: number\n height: number\n wWidth: number\n wHeight: number\n ratio: number\n}\n\nexport interface ThreeConfigInterface {\n params?: WebGLRendererParameters\n canvas?: HTMLCanvasElement\n antialias: boolean\n alpha: boolean\n autoClear: boolean\n orbitCtrl: boolean | Record<string, unknown>\n pointer: boolean | PointerPublicConfigInterface\n resize: boolean | string\n width?: number\n height?: number\n onResize?(size: SizeInterface): void\n [index:string]: any\n}\n\nexport interface ThreeInterface {\n config: ThreeConfigInterface\n renderer: WebGLRenderer\n composer?: EffectComposer\n camera?: Camera\n cameraCtrl?: OrbitControls\n scene?: Scene\n pointer?: PointerInterface\n size: SizeInterface\n init(): boolean\n dispose(): void\n render(): void\n renderC(): void\n setSize(width: number, height: number): void\n addIntersectObject(o: Object3D): void\n removeIntersectObject(o: Object3D): void\n}\n\n/**\n * Three.js helper\n */\nexport default function useThree(params: ThreeConfigInterface): ThreeInterface {\n // default config\n const config: ThreeConfigInterface = {\n antialias: true,\n alpha: false,\n autoClear: true,\n orbitCtrl: false,\n pointer: false,\n resize: false,\n width: 300,\n height: 150,\n }\n\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n config[key] = value\n })\n }\n\n // size\n const size: SizeInterface = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n }\n\n const beforeRenderCallbacks: {(): void}[] = []\n\n const intersectObjects: Object3D[] = []\n\n const renderer = createRenderer()\n\n // returned object\n const obj: ThreeInterface = {\n config,\n renderer,\n size,\n init,\n dispose,\n render,\n renderC,\n setSize,\n addIntersectObject, removeIntersectObject,\n }\n\n return obj\n\n /**\n * create WebGLRenderer\n */\n function createRenderer(): WebGLRenderer {\n const renderer = new WebGLRenderer({ canvas: config.canvas, antialias: config.antialias, alpha: config.alpha, ...config.params })\n renderer.autoClear = config.autoClear\n return renderer\n }\n\n /**\n * init three\n */\n function init() {\n if (!obj.scene) {\n console.error('Missing Scene')\n return false\n }\n\n if (!obj.camera) {\n console.error('Missing Camera')\n return false\n }\n\n if (config.resize) {\n onResize()\n window.addEventListener('resize', onResize)\n } else if (config.width && config.height) {\n setSize(config.width, config.height)\n }\n\n initPointer()\n\n if (config.orbitCtrl) {\n const cameraCtrl = new OrbitControls(obj.camera, obj.renderer.domElement)\n if (config.orbitCtrl instanceof Object) {\n Object.entries(config.orbitCtrl).forEach(([key, value]) => {\n // @ts-ignore\n cameraCtrl[key] = value\n })\n }\n onBeforeRender(() => { cameraCtrl.update() })\n obj.cameraCtrl = cameraCtrl\n }\n\n return true\n }\n\n /**\n * init pointer\n */\n function initPointer() {\n let pointerConf: PointerConfigInterface = {\n camera: obj.camera!,\n domElement: obj.renderer!.domElement,\n intersectObjects,\n }\n\n if (config.pointer && config.pointer instanceof Object) {\n pointerConf = { ...pointerConf, ...config.pointer }\n }\n\n const pointer = obj.pointer = usePointer(pointerConf)\n if (config.pointer || intersectObjects.length) {\n pointer.addListeners()\n if (pointerConf.intersectMode === 'frame') {\n onBeforeRender(pointer.intersect)\n }\n }\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(cb: {(): void}) {\n beforeRenderCallbacks.push(cb)\n }\n\n /**\n * default render\n */\n function render() {\n // if (obj.cameraCtrl) obj.cameraCtrl.update()\n beforeRenderCallbacks.forEach(c => c())\n obj.renderer!.render(obj.scene!, obj.camera!)\n }\n\n /**\n * composer render\n */\n function renderC() {\n // if (obj.cameraCtrl) obj.cameraCtrl.update()\n beforeRenderCallbacks.forEach(c => c())\n obj.composer!.render()\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o: Object3D) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o)\n }\n // add listeners if needed\n if (obj.pointer && !obj.pointer.listeners) {\n obj.pointer.addListeners()\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o: Object3D) {\n const i = intersectObjects.indexOf(o)\n if (i !== -1) {\n intersectObjects.splice(i, 1)\n }\n // remove listeners if needed\n if (obj.pointer && !config.pointer && intersectObjects.length === 0) {\n obj.pointer.removeListeners()\n }\n }\n\n /**\n * remove listeners and dispose\n */\n function dispose() {\n // beforeRenderCallbacks = []\n window.removeEventListener('resize', onResize)\n if (obj.pointer) obj.pointer.removeListeners()\n if (obj.cameraCtrl) obj.cameraCtrl.dispose()\n if (obj.renderer) obj.renderer.dispose()\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (config.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight)\n } else {\n const elt = obj.renderer!.domElement.parentNode as Element\n if (elt) setSize(elt.clientWidth, elt.clientHeight)\n }\n config.onResize?.(size)\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width: number, height: number) {\n size.width = width\n size.height = height\n size.ratio = width / height\n\n obj.renderer!.setSize(width, height, false)\n\n // already done in EffectComposer\n // if (obj.composer) {\n // obj.composer.setSize(width, height)\n // }\n\n const camera = (<Camera>obj.camera!)\n if (camera.type === 'PerspectiveCamera') {\n const pCamera = (<PerspectiveCamera>camera)\n pCamera.aspect = size.ratio\n pCamera.updateProjectionMatrix()\n }\n\n if (camera.type === 'OrthographicCamera') {\n const oCamera = (<OrthographicCamera>camera)\n size.wWidth = oCamera.right - oCamera.left\n size.wHeight = oCamera.top - oCamera.bottom\n } else {\n const wsize = getCameraSize()\n size.wWidth = wsize[0]\n size.wHeight = wsize[1]\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const camera = (<PerspectiveCamera>obj.camera!)\n const vFOV = (camera.fov * Math.PI) / 180\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(camera.position.z)\n const w = h * camera.aspect\n return [w, h]\n }\n}\n","/* eslint-disable no-use-before-define */\nimport { Camera, Scene, WebGLRenderer, WebGLRendererParameters } from 'three'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'\nimport { ComponentPublicInstance, defineComponent, InjectionKey, PropType, watchEffect } from 'vue'\nimport { bindObjectProp } from '../tools'\nimport { PointerInterface, PointerPublicConfigInterface } from './usePointer'\nimport useThree, { SizeInterface, ThreeConfigInterface, ThreeInterface } from './useThree'\n\ntype CallbackType<T> = (event: T) => void\n\n// type EventType = 'init' | 'mounted' | 'beforerender' | 'afterrender' | 'resize'\n\nexport interface EventInterface {\n type: 'init' | 'mounted'\n renderer: RendererInterface\n}\n\nexport interface RenderEventInterface {\n type: 'beforerender' | 'afterrender'\n renderer: RendererInterface\n time: number\n}\n\nexport interface ResizeEventInterface {\n type: 'resize'\n renderer: RendererInterface\n size: SizeInterface\n}\n\ntype InitCallbackType = CallbackType<EventInterface>\ntype MountedCallbackType = CallbackType<EventInterface>\ntype RenderCallbackType = CallbackType<RenderEventInterface>\ntype ResizeCallbackType = CallbackType<ResizeEventInterface>\n// type CallbackTypes = InitCallbackType | MountedCallbackType | RenderCallbackType | ResizeCallbackType\n\n// interface EventMap {\n// 'init': EventInterface;\n// 'mounted': EventInterface;\n// 'beforerender': RenderEventInterface;\n// 'afterrender': RenderEventInterface;\n// 'resize': ResizeEventInterface;\n// }\n\ninterface EventCallbackMap {\n 'init': InitCallbackType;\n 'mounted': MountedCallbackType;\n 'beforerender': RenderCallbackType;\n 'afterrender': RenderCallbackType;\n 'resize': ResizeCallbackType;\n}\n\ninterface RenderFunctionEventInterface {\n renderer: RendererInterface\n time: number\n}\n\ninterface RendererSetupInterface {\n canvas: HTMLCanvasElement\n three: ThreeInterface\n renderer: WebGLRenderer\n size: SizeInterface\n renderFn(e: RenderFunctionEventInterface): void\n raf: boolean\n\n $pointer?: PointerInterface\n\n initCallbacks: InitCallbackType[]\n mountedCallbacks: MountedCallbackType[]\n beforeRenderCallbacks: RenderCallbackType[]\n afterRenderCallbacks: RenderCallbackType[]\n resizeCallbacks: ResizeCallbackType[]\n}\n\nexport interface RendererInterface extends RendererSetupInterface {\n scene?: Scene\n camera?: Camera\n composer?: EffectComposer\n\n onInit(cb: InitCallbackType): void\n onMounted(cb: MountedCallbackType): void\n\n onBeforeRender(cb: RenderCallbackType): void\n offBeforeRender(cb: RenderCallbackType): void\n onAfterRender(cb: RenderCallbackType): void\n offAfterRender(cb: RenderCallbackType): void\n\n onResize(cb: ResizeCallbackType): void\n offResize(cb: ResizeCallbackType): void\n\n addListener<T extends keyof EventCallbackMap>(t: T, cb: EventCallbackMap[T]): void\n removeListener<T extends keyof EventCallbackMap>(t: T, cb: EventCallbackMap[T]): void\n}\n\nexport interface RendererPublicInterface extends ComponentPublicInstance, RendererInterface {}\n\nexport const RendererInjectionKey: InjectionKey<RendererPublicInterface> = Symbol('Renderer')\n\nexport default defineComponent({\n name: 'Renderer',\n props: {\n params: { type: Object as PropType<WebGLRendererParameters>, default: () => ({}) },\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n orbitCtrl: { type: [Boolean, Object] as PropType<boolean | Record<string, unknown>>, default: false },\n pointer: { type: [Boolean, Object] as PropType<boolean | PointerPublicConfigInterface>, default: false },\n resize: { type: [Boolean, String] as PropType<boolean | string>, default: false },\n shadow: Boolean,\n width: String,\n height: String,\n pixelRatio: Number,\n xr: Boolean,\n props: { type: Object, default: () => ({}) },\n onReady: Function as PropType<(r: RendererInterface) => void>,\n },\n inheritAttrs: false,\n setup(props, { attrs }): RendererSetupInterface {\n const initCallbacks: InitCallbackType[] = []\n const mountedCallbacks: MountedCallbackType[] = []\n const beforeRenderCallbacks: RenderCallbackType[] = []\n const afterRenderCallbacks: RenderCallbackType[] = []\n const resizeCallbacks: ResizeCallbackType[] = []\n\n const canvas = document.createElement('canvas')\n Object.entries(attrs).forEach(([key, value]) => {\n const matches = key.match(/^on([A-Z][a-zA-Z]*)$/)\n if (matches) {\n canvas.addEventListener(matches[1].toLowerCase(), value as {(): void })\n } else {\n canvas.setAttribute(key, value as string)\n }\n })\n\n const config: ThreeConfigInterface = {\n canvas,\n params: props.params,\n antialias: props.antialias,\n alpha: props.alpha,\n autoClear: props.autoClear,\n orbitCtrl: props.orbitCtrl,\n pointer: props.pointer,\n resize: props.resize,\n }\n\n if (props.width) config.width = parseInt(props.width)\n if (props.height) config.height = parseInt(props.height)\n\n const three = useThree(config)\n bindObjectProp(props, 'props', three.renderer)\n\n watchEffect(() => {\n if (props.pixelRatio) three.renderer.setPixelRatio(props.pixelRatio)\n })\n\n const renderFn: {(): void} = () => {}\n\n return {\n canvas,\n three,\n renderer: three.renderer,\n size: three.size,\n renderFn,\n raf: true,\n initCallbacks,\n mountedCallbacks,\n beforeRenderCallbacks,\n afterRenderCallbacks,\n resizeCallbacks,\n }\n },\n computed: {\n camera: {\n get: function(): Camera | undefined { return this.three.camera },\n set: function(camera: Camera): void { this.three.camera = camera },\n },\n scene: {\n get: function(): Scene | undefined { return this.three.scene },\n set: function(scene: Scene): void { this.three.scene = scene },\n },\n composer: {\n get: function(): EffectComposer | undefined { return this.three.composer },\n set: function(composer: EffectComposer): void { this.three.composer = composer },\n },\n },\n provide() {\n return {\n [RendererInjectionKey as symbol]: this,\n }\n },\n mounted() {\n // appendChild won't work on reload\n this.$el.parentNode.insertBefore(this.canvas, this.$el)\n\n if (this.three.init()) {\n if (this.three.pointer) {\n this.$pointer = this.three.pointer\n }\n\n // TODO : don't use config\n this.three.config.onResize = (size) => {\n this.resizeCallbacks.forEach(e => e({ type: 'resize', renderer: this, size }))\n }\n\n if (this.shadow) {\n this.renderer.shadowMap.enabled = true\n }\n\n this.renderFn = this.three.composer ? this.three.renderC : this.three.render\n\n this.initCallbacks.forEach(e => e({ type: 'init', renderer: this }))\n this.onReady?.(this as RendererInterface)\n\n if (this.xr) {\n this.renderer.xr.enabled = true\n this.renderer.setAnimationLoop(this.render)\n } else {\n requestAnimationFrame(this.renderLoop)\n }\n }\n\n this.mountedCallbacks.forEach(e => e({ type: 'mounted', renderer: this }))\n },\n beforeUnmount() {\n this.canvas.remove()\n this.beforeRenderCallbacks = []\n this.afterRenderCallbacks = []\n this.raf = false\n this.three.dispose()\n },\n methods: {\n onInit(cb: InitCallbackType) { this.addListener('init', cb) },\n onMounted(cb: MountedCallbackType) { this.addListener('mounted', cb) },\n onBeforeRender(cb: RenderCallbackType) { this.addListener('beforerender', cb) },\n offBeforeRender(cb: RenderCallbackType) { this.removeListener('beforerender', cb) },\n onAfterRender(cb: RenderCallbackType) { this.addListener('afterrender', cb) },\n offAfterRender(cb: RenderCallbackType) { this.removeListener('afterrender', cb) },\n onResize(cb: ResizeCallbackType) { this.addListener('resize', cb) },\n offResize(cb: ResizeCallbackType) { this.removeListener('resize', cb) },\n\n addListener(type: string, cb: {(e?: any): void}) {\n const callbacks = this.getCallbacks(type)\n callbacks.push(cb)\n },\n\n removeListener(type: string, cb: {(e?: any): void}) {\n const callbacks = this.getCallbacks(type)\n const index = callbacks.indexOf(cb)\n if (index !== -1) callbacks.splice(index, 1)\n },\n\n getCallbacks(type: string) {\n if (type === 'init') {\n return this.initCallbacks\n } else if (type === 'mounted') {\n return this.mountedCallbacks\n } else if (type === 'beforerender') {\n return this.beforeRenderCallbacks\n } else if (type === 'afterrender') {\n return this.afterRenderCallbacks\n } else {\n return this.resizeCallbacks\n }\n },\n\n render(time: number) {\n this.beforeRenderCallbacks.forEach(e => e({ type: 'beforerender', renderer: this, time }))\n // this.onFrame?.(cbParams)\n this.renderFn({ renderer: this, time })\n this.afterRenderCallbacks.forEach(e => e({ type: 'afterrender', renderer: this, time }))\n },\n renderLoop(time: number) {\n if (this.raf) requestAnimationFrame(this.renderLoop)\n this.render(time)\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n __hmrId: 'Renderer',\n})\n","import { defineComponent } from 'vue'\n// import { Camera } from 'three'\n// import { RendererInjectionKey, RendererInterface } from './Renderer'\n// import Object3D from './Object3D'\n\n// export interface CameraSetupInterface {\n// renderer?: RendererInterface\n// camera: Camera\n// }\n\nexport default defineComponent({\n // TODO: eventually extend Object3D\n // extends: Object3D,\n\n props: {\n props: { type: Object, default: () => ({}) },\n },\n\n // inject: { renderer: RendererInjectionKey as symbol },\n\n // setup(): CameraSetupInterface {\n // return {}\n // },\n\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n})\n\nexport function cameraSetProp(camera: any, key: string, value: any, updateProjectionMatrix = true) {\n camera[key] = value\n if (updateProjectionMatrix) camera.updateProjectionMatrix()\n}\n","import { defineComponent, inject, PropType, watch } from 'vue'\nimport { OrthographicCamera } from 'three'\nimport { bindObjectProp, bindProp } from '../tools'\nimport Camera, { cameraSetProp } from './Camera'\nimport { Vector3PropInterface } from './Object3D'\nimport { RendererInjectionKey } from './Renderer'\n\nexport default defineComponent({\n extends: Camera,\n name: 'OrthographicCamera',\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: Object as PropType<Vector3PropInterface>, default: () => ({ x: 0, y: 0, z: 0 }) },\n },\n setup(props) {\n const renderer = inject(RendererInjectionKey)\n if (!renderer) {\n console.error('Renderer not found')\n return\n }\n\n const camera = new OrthographicCamera(props.left, props.right, props.top, props.bottom, props.near, props.far)\n renderer.camera = camera\n\n bindProp(props, 'position', camera)\n bindObjectProp(props, 'props', camera, true, cameraSetProp);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n // @ts-ignore\n watch(() => props[p], (value) => {\n cameraSetProp(camera, p, value)\n })\n })\n\n return { renderer, camera }\n },\n __hmrId: 'OrthographicCamera',\n})\n","import { defineComponent, inject, PropType, watch } from 'vue'\nimport { PerspectiveCamera } from 'three'\nimport { bindObjectProp, bindProp } from '../tools'\nimport Camera, { cameraSetProp } from './Camera'\nimport { Vector3PropInterface } from './Object3D'\nimport { RendererInjectionKey } from './Renderer'\n\nexport default defineComponent({\n extends: Camera,\n name: 'PerspectiveCamera',\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: Object as PropType<Vector3PropInterface>, default: () => ({ x: 0, y: 0, z: 0 }) },\n lookAt: { type: Object as PropType<Vector3PropInterface>, default: null },\n },\n setup(props) {\n const renderer = inject(RendererInjectionKey)\n if (!renderer) {\n console.error('Renderer not found')\n return\n }\n\n const camera = new PerspectiveCamera(props.fov, props.aspect, props.near, props.far)\n renderer.camera = camera\n\n bindProp(props, 'position', camera)\n\n if (props.lookAt) camera.lookAt(props.lookAt.x ?? 0, props.lookAt.y, props.lookAt.z)\n watch(() => props.lookAt, (v) => { camera.lookAt(v.x ?? 0, v.y, v.z) }, { deep: true })\n\n bindObjectProp(props, 'props', camera, true, cameraSetProp);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n // @ts-ignore\n watch(() => props[p], (value) => {\n cameraSetProp(camera, p, value)\n })\n })\n\n return { renderer, camera }\n },\n __hmrId: 'PerspectiveCamera',\n})\n","import { defineComponent, inject, InjectionKey, provide, watch } from 'vue'\nimport { Scene, Color, Object3D, Texture } from 'three'\nimport { RendererInjectionKey } from './Renderer'\n\nexport const SceneInjectionKey: InjectionKey<Scene> = Symbol('Scene')\n\nexport default defineComponent({\n name: 'Scene',\n props: {\n background: [String, Number, Object],\n },\n setup(props) {\n const renderer = inject(RendererInjectionKey)\n const scene = new Scene()\n\n if (!renderer) {\n console.error('Renderer not found')\n return\n }\n\n renderer.scene = scene\n provide(SceneInjectionKey, scene)\n\n const setBackground = (value: any): void => {\n if (!value) return\n if (typeof value === 'string' || typeof value === 'number') {\n if (scene.background instanceof Color) scene.background.set(value)\n else scene.background = new Color(value)\n } else if (value instanceof Texture) {\n scene.background = value\n }\n }\n\n setBackground(props.background)\n watch(() => props.background, setBackground)\n\n const add = (o: Object3D): void => { scene.add(o) }\n const remove = (o: Object3D): void => { scene.remove(o) }\n\n return { scene, add, remove }\n },\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n __hmrId: 'Scene',\n})\n","import { Object3D, Scene } from 'three'\nimport { ComponentPublicInstance, defineComponent, getCurrentInstance, PropType, watch } from 'vue'\nimport { bindObjectProp, bindProp } from '../tools'\nimport { RendererInjectionKey, RendererInterface } from './Renderer'\nimport { SceneInjectionKey } from './Scene'\n\nexport interface Object3DSetupInterface {\n renderer?: RendererInterface\n scene?: Scene\n o3d?: Object3D\n parent?: ComponentPublicInstance\n}\n\nexport interface Object3DInterface extends Object3DSetupInterface {\n addToParent(o?: Object3D): boolean\n removeFromParent(o?: Object3D): boolean\n add(o: Object3D): void\n remove(o: Object3D): void\n}\n\nexport interface Object3DPublicInterface extends ComponentPublicInstance, Object3DInterface {}\n\n// export function object3DSetup(): Object3DSetupInterface {\n// const renderer = inject(RendererInjectionKey)\n// const scene = inject(SceneInjectionKey)\n// return { scene, renderer }\n// }\n\nexport const pointerProps = {\n onPointerEnter: Function,\n onPointerOver: Function,\n onPointerMove: Function,\n onPointerLeave: Function,\n onPointerDown: Function,\n onPointerUp: Function,\n onClick: Function,\n}\n\nexport interface Vector2PropInterface {\n x?: number\n y?: number\n width?: number\n height?: number\n}\n\nexport interface Vector3PropInterface extends Vector2PropInterface {\n z?: number\n}\n\nexport interface EulerPropInterface extends Vector3PropInterface {\n order?: 'XYZ' | 'YZX' | 'ZXY' | 'XZY' | 'YXZ' | 'ZYX'\n}\n\nexport default defineComponent({\n name: 'Object3D',\n // inject for sub components\n inject: {\n renderer: RendererInjectionKey as symbol,\n scene: SceneInjectionKey as symbol,\n },\n emits: ['created', 'ready'],\n props: {\n position: { type: Object as PropType<Vector3PropInterface>, default: () => ({ x: 0, y: 0, z: 0 }) },\n rotation: { type: Object as PropType<EulerPropInterface>, default: () => ({ x: 0, y: 0, z: 0 }) },\n scale: { type: Object as PropType<Vector3PropInterface>, default: () => ({ x: 1, y: 1, z: 1, order: 'XYZ' }) },\n lookAt: { type: Object as PropType<Vector3PropInterface>, default: null },\n userData: { type: Object, default: () => ({}) },\n visible: { type: Boolean, default: true },\n props: { type: Object, default: () => ({}) },\n disableAdd: { type: Boolean, default: false },\n disableRemove: { type: Boolean, default: false },\n ...pointerProps,\n },\n setup(): Object3DSetupInterface {\n // return object3DSetup()\n return {}\n },\n created() {\n if (!this.renderer) {\n console.error('Missing parent Renderer')\n }\n if (!this.scene) {\n console.error('Missing parent Scene')\n }\n },\n unmounted() {\n if (!this.disableRemove) this.removeFromParent()\n if (this.o3d) {\n if (this.renderer) this.renderer.three.removeIntersectObject(this.o3d)\n }\n },\n methods: {\n initObject3D(o3d: Object3D) {\n this.o3d = o3d\n o3d.userData.component = this\n\n if (this.onPointerEnter ||\n this.onPointerOver ||\n this.onPointerMove ||\n this.onPointerLeave ||\n this.onPointerDown ||\n this.onPointerUp ||\n this.onClick) {\n if (this.renderer) this.renderer.three.addIntersectObject(o3d)\n }\n\n bindProp(this, 'position', o3d)\n bindProp(this, 'rotation', o3d)\n bindProp(this, 'scale', o3d)\n bindProp(this, 'userData', o3d.userData)\n bindProp(this, 'visible', o3d)\n\n bindObjectProp(this, 'props', o3d)\n\n this.$emit('created', o3d)\n\n if (this.lookAt) o3d.lookAt(this.lookAt.x ?? 0, this.lookAt.y, this.lookAt.z)\n watch(() => this.lookAt, (v) => { o3d.lookAt(v.x ?? 0, v.y, v.z) }, { deep: true })\n\n this.parent = this.getParent()\n if (!this.disableAdd) {\n if (this.addToParent()) this.$emit('ready', this)\n else console.error('Missing parent (Scene, Group...)')\n }\n },\n getParent(): undefined | ComponentPublicInstance {\n let parent = this.$parent\n\n if (!parent) {\n // for script setup\n const instance = getCurrentInstance() as any // ctx is internal\n if (instance && instance.parent) parent = instance.parent.ctx\n }\n\n while (parent) {\n if ((parent as any).add) return parent\n parent = parent.$parent\n }\n return undefined\n },\n addToParent(o?: Object3D) {\n const o3d = o || this.o3d\n if (this.parent) {\n (this.parent as any).add(o3d)\n return true\n }\n return false\n },\n removeFromParent(o?: Object3D) {\n const o3d = o || this.o3d\n if (this.parent) {\n (this.parent as any).remove(o3d)\n return true\n }\n return false\n },\n add(o: Object3D) { this.o3d?.add(o) },\n remove(o: Object3D) { this.o3d?.remove(o) },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n __hmrId: 'Object3D',\n})\n","import { defineComponent } from 'vue'\nimport { Group } from 'three'\nimport Object3D from './Object3D'\n\nexport default defineComponent({\n name: 'Group',\n extends: Object3D,\n setup() {\n return {\n group: new Group(),\n }\n },\n created() {\n this.initObject3D(this.group)\n },\n __hmrId: 'Group',\n})\n","import { defineComponent, inject, PropType } from 'vue'\nimport usePointer, { PointerInterface, PointerIntersectCallbackType } from './usePointer'\nimport { RendererInjectionKey, RendererInterface } from './Renderer'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst emptyCallBack: PointerIntersectCallbackType = () => {}\n\ninterface RaycasterSetupInterface {\n renderer?: RendererInterface\n pointer?: PointerInterface\n}\n\nexport default defineComponent({\n name: 'Raycaster',\n props: {\n onPointerEnter: { type: Function as PropType<PointerIntersectCallbackType>, default: emptyCallBack },\n onPointerOver: { type: Function as PropType<PointerIntersectCallbackType>, default: emptyCallBack },\n onPointerMove: { type: Function as PropType<PointerIntersectCallbackType>, default: emptyCallBack },\n onPointerLeave: { type: Function as PropType<PointerIntersectCallbackType>, default: emptyCallBack },\n onClick: { type: Function as PropType<PointerIntersectCallbackType>, default: emptyCallBack },\n intersectMode: { type: String, default: 'move' },\n intersectRecursive: { type: Boolean, default: false },\n },\n setup(): RaycasterSetupInterface {\n const renderer = inject(RendererInjectionKey)\n return { renderer }\n },\n mounted() {\n if (!this.renderer) {\n console.error('Renderer not found')\n return\n }\n const renderer = this.renderer\n\n this.renderer.onMounted(() => {\n if (!renderer.camera) return\n\n this.pointer = usePointer({\n camera: renderer.camera,\n domElement: renderer.canvas,\n intersectObjects: () => renderer.scene ? renderer.scene.children : [],\n intersectRecursive: this.intersectRecursive,\n onIntersectEnter: this.onPointerEnter,\n onIntersectOver: this.onPointerOver,\n onIntersectMove: this.onPointerMove,\n onIntersectLeave: this.onPointerLeave,\n onIntersectClick: this.onClick,\n })\n this.pointer.addListeners()\n\n if (this.intersectMode === 'frame') {\n renderer.onBeforeRender(this.pointer.intersect)\n }\n })\n },\n unmounted() {\n if (this.pointer) {\n this.pointer.removeListeners()\n this.renderer?.offBeforeRender(this.pointer.intersect)\n }\n },\n render() {\n return []\n },\n __hmrId: 'Raycaster',\n})\n","import { defineComponent, inject, onUnmounted, PropType } from 'vue'\nimport { CubeCamera, LinearMipmapLinearFilter, Mesh, RGBAFormat, WebGLCubeRenderTarget } from 'three'\nimport Object3D from './Object3D'\nimport { RendererInjectionKey } from './Renderer'\n\ninterface CubeCameraSetupInterface {\n cubeRT?: WebGLCubeRenderTarget\n cubeCamera?: CubeCamera\n updateRT?: {(): void}\n}\n\nexport default defineComponent({\n extends: Object3D,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n hideMeshes: { type: Array as PropType<Mesh[]>, default: () => ([]) },\n },\n setup(props): CubeCameraSetupInterface {\n const rendererC = inject(RendererInjectionKey)\n if (!rendererC || !rendererC.scene) {\n console.error('Missing Renderer / Scene')\n return {}\n }\n\n const renderer = rendererC.renderer, scene = rendererC.scene\n const cubeRT = new WebGLCubeRenderTarget(props.cubeRTSize, { format: RGBAFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter })\n const cubeCamera = new CubeCamera(props.cubeCameraNear, props.cubeCameraFar, cubeRT)\n const updateRT = () => {\n props.hideMeshes.forEach(m => { m.visible = false })\n cubeCamera.update(renderer, scene)\n props.hideMeshes.forEach(m => { m.visible = true })\n }\n\n if (props.autoUpdate) {\n rendererC.onBeforeRender(updateRT)\n onUnmounted(() => { rendererC.offBeforeRender(updateRT) })\n } else {\n rendererC.onMounted(updateRT)\n }\n\n return { cubeRT, cubeCamera, updateRT }\n },\n created() {\n if (this.cubeCamera) this.initObject3D(this.cubeCamera)\n },\n render() {\n return []\n },\n __hmrId: 'CubeCamera',\n})\n","import { ComponentPropsOptions, ComponentPublicInstance, defineComponent, InjectionKey, watch } from 'vue'\nimport { BufferGeometry, Material, Mesh as TMesh } from 'three'\nimport Object3D, { Object3DSetupInterface } from '../core/Object3D'\nimport { bindProp } from '../tools'\n\nexport interface MeshSetupInterface extends Object3DSetupInterface {\n mesh?: TMesh\n geometry?: BufferGeometry\n material?: Material | Material[]\n loading?: boolean\n}\n\nexport interface MeshInterface extends MeshSetupInterface {\n setGeometry(g: BufferGeometry): void\n setMaterial(m: Material): void\n}\n\nexport interface MeshPublicInterface extends ComponentPublicInstance, MeshInterface {}\n\nexport const MeshInjectionKey: InjectionKey<MeshPublicInterface> = Symbol('Mesh')\n\nconst Mesh = defineComponent({\n name: 'Mesh',\n extends: Object3D,\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n setup(): MeshSetupInterface {\n return {}\n },\n provide() {\n return {\n [MeshInjectionKey as symbol]: this,\n }\n },\n mounted() {\n // TODO : proper ?\n if (!this.mesh && !this.loading) this.initMesh()\n },\n methods: {\n initMesh() {\n const mesh = new TMesh(this.geometry, this.material)\n\n bindProp(this, 'castShadow', mesh)\n bindProp(this, 'receiveShadow', mesh)\n\n this.mesh = mesh\n this.initObject3D(mesh)\n },\n createGeometry() {},\n addGeometryWatchers(props: Readonly<ComponentPropsOptions>) {\n Object.keys(props).forEach(prop => {\n // @ts-ignore\n watch(() => this[prop], () => {\n this.refreshGeometry()\n })\n })\n },\n setGeometry(geometry: BufferGeometry) {\n this.geometry = geometry\n if (this.mesh) this.mesh.geometry = geometry\n },\n setMaterial(material: Material | Material[]) {\n if (Array.isArray(material) || !this.material) {\n this.material = material\n if (this.mesh) this.mesh.material = material\n } else {\n let prev = this.material\n if (Array.isArray(prev)) {\n prev.push(material)\n } else {\n prev = [prev, material]\n }\n this.material = prev\n if (this.mesh) this.mesh.material = prev\n }\n },\n refreshGeometry() {\n const oldGeo = this.geometry\n this.createGeometry()\n if (this.mesh && this.geometry) this.mesh.geometry = this.geometry\n oldGeo?.dispose()\n },\n },\n unmounted() {\n // for predefined mesh (geometry/material are not unmounted)\n if (this.geometry) this.geometry.dispose()\n if (this.material) {\n if (Array.isArray(this.material)) {\n for (const m of this.material) m.dispose()\n } else {\n this.material.dispose()\n }\n }\n },\n __hmrId: 'Mesh',\n})\n\nexport default Mesh\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function meshComponent<P extends Readonly<ComponentPropsOptions>>(\n name: string,\n props: P,\n createGeometry: {(c: any): BufferGeometry}\n) {\n return defineComponent({\n name,\n extends: Mesh,\n props,\n created() {\n this.createGeometry()\n this.addGeometryWatchers(props)\n },\n methods: {\n createGeometry() {\n this.geometry = createGeometry(this)\n },\n },\n })\n}\n","import { ComponentPropsOptions, defineComponent, PropType, watch } from 'vue'\nimport { BufferAttribute, BufferGeometry } from 'three'\nimport { MeshInjectionKey, MeshInterface } from '../meshes/Mesh'\n\nexport interface GeometrySetupInterface {\n mesh?: MeshInterface\n geometry?: BufferGeometry\n watchProps?: string[]\n}\n\nexport interface GeometryAttributeInterface {\n name: string\n array: ArrayLike<number>\n itemSize: number\n normalized?: boolean\n}\n\n// function defaultSetup(): GeometryInterface {\n// const mesh = inject('mesh') as MeshInterface\n// const watchProps: string[] = []\n// return { mesh, watchProps }\n// }\n\nconst Geometry = defineComponent({\n emits: ['created'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n attributes: { type: Array as PropType<Array<GeometryAttributeInterface>>, default: () => ([]) },\n },\n // inject for sub components\n inject: {\n mesh: MeshInjectionKey as symbol,\n },\n setup(): GeometrySetupInterface {\n return {}\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh')\n return\n }\n\n this.createGeometry()\n this.rotateGeometry()\n if (this.geometry) this.mesh.setGeometry(this.geometry)\n\n Object.keys(this.$props).forEach(prop => {\n // @ts-ignore\n watch(() => this[prop], this.refreshGeometry)\n })\n },\n unmounted() {\n this.geometry?.dispose()\n },\n methods: {\n createGeometry() {\n const bufferAttributes: Record<string, unknown> = {}\n const geometry = new BufferGeometry()\n this.attributes.forEach(attribute => {\n if (attribute.name && attribute.itemSize && attribute.array) {\n const bufferAttribute = bufferAttributes[attribute.name] = new BufferAttribute(attribute.array, attribute.itemSize, attribute.normalized)\n geometry.setAttribute(attribute.name, bufferAttribute)\n }\n })\n geometry.computeBoundingBox()\n geometry.userData.component = this\n this.geometry = geometry\n this.$emit('created', geometry)\n },\n rotateGeometry() {\n if (!this.geometry) return\n if (this.rotateX) this.geometry.rotateX(this.rotateX)\n if (this.rotateY) this.geometry.rotateY(this.rotateY)\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ)\n },\n refreshGeometry() {\n const oldGeo = this.geometry\n this.createGeometry()\n this.rotateGeometry()\n if (this.geometry && this.mesh) this.mesh.setGeometry(this.geometry)\n oldGeo?.dispose()\n },\n },\n render() { return [] },\n})\n\nexport default Geometry\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function geometryComponent<P extends Readonly<ComponentPropsOptions>>(\n name: string,\n props: P,\n createGeometry: {(c: any): BufferGeometry}\n) {\n return defineComponent({\n name,\n extends: Geometry,\n props,\n methods: {\n createGeometry() {\n this.geometry = createGeometry(this)\n this.geometry.userData.component = this\n this.$emit('created', this.geometry)\n },\n },\n })\n}\n","import { geometryComponent } from './Geometry'\nimport { BoxGeometry } from 'three'\n\nexport const props = {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n} as const\n\nexport function createGeometry(comp: any): BoxGeometry {\n if (comp.size) {\n return new BoxGeometry(comp.size, comp.size, comp.size, comp.widthSegments, comp.heightSegments, comp.depthSegments)\n } else {\n return new BoxGeometry(comp.width, comp.height, comp.depth, comp.widthSegments, comp.heightSegments, comp.depthSegments)\n }\n}\n\nexport default geometryComponent('BoxGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { CircleGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): CircleGeometry {\n return new CircleGeometry(comp.radius, comp.segments, comp.thetaStart, comp.thetaLength)\n}\n\nexport default geometryComponent('CircleGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { ConeGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): ConeGeometry {\n return new ConeGeometry(comp.radius, comp.height, comp.radialSegments, comp.heightSegments, comp.openEnded, comp.thetaStart, comp.thetaLength)\n}\n\nexport default geometryComponent('ConeGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { CylinderGeometry } from 'three'\n\nexport const props = {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): CylinderGeometry {\n return new CylinderGeometry(comp.radiusTop, comp.radiusBottom, comp.height, comp.radialSegments, comp.heightSegments, comp.openEnded, comp.thetaStart, comp.thetaLength)\n}\n\nexport default geometryComponent('CylinderGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { DodecahedronGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n} as const\n\nexport function createGeometry(comp: any): DodecahedronGeometry {\n return new DodecahedronGeometry(comp.radius, comp.detail)\n}\n\nexport default geometryComponent('DodecahedronGeometry', props, createGeometry)\n","import { PropType } from 'vue'\nimport { geometryComponent } from './Geometry'\nimport { ExtrudeGeometry, ExtrudeGeometryOptions, Shape } from 'three'\n\nexport const props = {\n shapes: { type: [Object, Array] as PropType<Shape | Shape[]> },\n options: { type: Object as PropType<ExtrudeGeometryOptions> },\n} as const\n\nexport function createGeometry(comp: any): ExtrudeGeometry {\n return new ExtrudeGeometry(comp.shapes, comp.options)\n}\n\nexport default geometryComponent('ExtrudeGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { IcosahedronGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n} as const\n\nexport function createGeometry(comp: any): IcosahedronGeometry {\n return new IcosahedronGeometry(comp.radius, comp.detail)\n}\n\nexport default geometryComponent('IcosahedronGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { LatheGeometry } from 'three'\n\nexport const props = {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): LatheGeometry {\n return new LatheGeometry(comp.points, comp.segments, comp.phiStart, comp.phiLength)\n}\n\nexport default geometryComponent('LatheGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { OctahedronGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n} as const\n\nexport function createGeometry(comp: any): OctahedronGeometry {\n return new OctahedronGeometry(comp.radius, comp.detail)\n}\n\nexport default geometryComponent('OctahedronGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { PlaneGeometry } from 'three'\n\nexport const props = {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n} as const\n\nexport function createGeometry(comp: any): PlaneGeometry {\n return new PlaneGeometry(comp.width, comp.height, comp.widthSegments, comp.heightSegments)\n}\n\nexport default geometryComponent('PlaneGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { PolyhedronGeometry } from 'three'\n\nexport const props = {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n} as const\n\nexport function createGeometry(comp: any): PolyhedronGeometry {\n return new PolyhedronGeometry(comp.vertices, comp.indices, comp.radius, comp.detail)\n}\n\nexport default geometryComponent('PolyhedronGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { RingGeometry } from 'three'\n\nexport const props = {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): RingGeometry {\n return new RingGeometry(comp.innerRadius, comp.outerRadius, comp.thetaSegments, comp.phiSegments, comp.thetaStart, comp.thetaLength)\n}\n\nexport default geometryComponent('RingGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { SphereGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI },\n} as const\n\nexport function createGeometry(comp: any): SphereGeometry {\n return new SphereGeometry(comp.radius, comp.widthSegments, comp.heightSegments, comp.phiStart, comp.phiLength, comp.thetaStart, comp.thetaLength)\n}\n\nexport default geometryComponent('SphereGeometry', props, createGeometry)\n","import { PropType } from 'vue'\nimport { geometryComponent } from './Geometry'\nimport { Shape, ShapeGeometry } from 'three'\n\nexport const props = {\n shapes: { type: [Object, Array] as PropType<Shape | Shape[]> },\n curveSegments: { type: Number },\n} as const\n\nexport function createGeometry(comp: any): ShapeGeometry {\n return new ShapeGeometry(comp.shapes, comp.curveSegments)\n}\n\nexport default geometryComponent('ShapeGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { TetrahedronGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n} as const\n\nexport function createGeometry(comp: any): TetrahedronGeometry {\n return new TetrahedronGeometry(comp.radius, comp.detail)\n}\n\nexport default geometryComponent('TetrahedronGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { TorusGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n} as const\n\nexport function createGeometry(comp: any): TorusGeometry {\n return new TorusGeometry(comp.radius, comp.tube, comp.radialSegments, comp.tubularSegments, comp.arc)\n}\n\nexport default geometryComponent('TorusGeometry', props, createGeometry)\n","import { geometryComponent } from './Geometry'\nimport { TorusKnotGeometry } from 'three'\n\nexport const props = {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n} as const\n\nexport function createGeometry(comp: any): TorusKnotGeometry {\n return new TorusKnotGeometry(comp.radius, comp.tube, comp.tubularSegments, comp.radialSegments, comp.p, comp.q)\n}\n\nexport default geometryComponent('TorusKnotGeometry', props, createGeometry)\n","import { defineComponent } from 'vue'\nimport { CatmullRomCurve3, Curve, TubeGeometry, Vector3 } from 'three'\nimport Geometry from './Geometry'\n\nexport const props = {\n points: Array,\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n} as const\n\nexport function createGeometry(comp: any): TubeGeometry {\n let curve\n if (comp.points) {\n curve = new CatmullRomCurve3(comp.points)\n } else if (comp.path) {\n curve = comp.path\n } else {\n console.error('Missing path curve or points.')\n }\n return new TubeGeometry(curve, comp.tubularSegments, comp.radius, comp.radiusSegments, comp.closed)\n}\n\nexport default defineComponent({\n extends: Geometry,\n props,\n methods: {\n createGeometry() {\n this.geometry = createGeometry(this)\n },\n // update points (without using prop, faster)\n updatePoints(points: Vector3[]) {\n updateTubeGeometryPoints(this.geometry as TubeGeometry, points)\n },\n },\n})\n\nexport function updateTubeGeometryPoints(tube: TubeGeometry, points: Vector3[]): void {\n const curve = new CatmullRomCurve3(points)\n const { radialSegments, radius, tubularSegments, closed } = tube.parameters\n const frames = curve.computeFrenetFrames(tubularSegments, closed)\n tube.tangents = frames.tangents\n tube.normals = frames.normals\n tube.binormals = frames.binormals\n tube.parameters.path = curve\n\n const pAttribute = tube.getAttribute('position')\n const nAttribute = tube.getAttribute('normal')\n\n const normal = new Vector3()\n const P = new Vector3()\n\n for (let i = 0; i < tubularSegments; i++) {\n updateSegment(i)\n }\n updateSegment(tubularSegments)\n\n tube.attributes.position.needsUpdate = true\n tube.attributes.normal.needsUpdate = true\n\n function updateSegment(i: number) {\n curve.getPointAt(i / tubularSegments, P)\n const N = frames.normals[i]\n const B = frames.binormals[i]\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2\n const sin = Math.sin(v)\n const cos = -Math.cos(v)\n normal.x = (cos * N.x + sin * B.x)\n normal.y = (cos * N.y + sin * B.y)\n normal.z = (cos * N.z + sin * B.z)\n normal.normalize()\n const index = (i * (radialSegments + 1) + j)\n nAttribute.setXYZ(index, normal.x, normal.y, normal.z)\n pAttribute.setXYZ(index, P.x + radius * normal.x, P.y + radius * normal.y, P.z + radius * normal.z)\n }\n }\n}\n","import { DirectionalLight, Light, SpotLight } from 'three'\nimport { defineComponent, PropType, watch } from 'vue'\nimport Object3D, { Vector2PropInterface } from '../core/Object3D'\nimport { bindProp, setFromProp } from '../tools'\n\nexport interface LightSetupInterface {\n light?: Light\n}\n\nexport default defineComponent({\n extends: Object3D,\n name: 'Light',\n props: {\n color: { type: String, default: '#ffffff' },\n intensity: { type: Number, default: 1 },\n castShadow: { type: Boolean, default: false },\n shadowMapSize: { type: Object as PropType<Vector2PropInterface>, default: () => ({ x: 512, y: 512 }) },\n shadowCamera: { type: Object, default: () => ({}) },\n },\n setup(): LightSetupInterface {\n return {}\n },\n unmounted() {\n if (this.light instanceof SpotLight || this.light instanceof DirectionalLight) {\n this.removeFromParent(this.light.target)\n }\n },\n methods: {\n initLight(light: Light) {\n this.light = light\n\n if ((light as any).shadow) {\n light.castShadow = this.castShadow\n // @ts-ignore\n setFromProp(light.shadow.mapSize, this.shadowMapSize)\n // @ts-ignore\n setFromProp(light.shadow.camera, this.shadowCamera)\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => {\n if (p === 'color') {\n light.color.set(value)\n } else {\n // @ts-ignore\n light[p] = value\n }\n })\n })\n\n this.initObject3D(light)\n\n if (light instanceof SpotLight || light instanceof DirectionalLight) {\n bindProp(this, 'target', light.target, 'position')\n this.addToParent(light.target)\n }\n },\n },\n __hmrId: 'Light',\n})\n","import { defineComponent } from 'vue'\nimport { AmbientLight } from 'three'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n created() {\n this.initLight(new AmbientLight(this.color, this.intensity))\n },\n __hmrId: 'AmbientLight',\n})\n","import { defineComponent, PropType } from 'vue'\nimport { DirectionalLight } from 'three'\nimport { Vector3PropInterface } from '../core/Object3D'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n props: {\n target: { type: Object as PropType<Vector3PropInterface>, default: () => ({ x: 0, y: 0, z: 0 }) },\n },\n created() {\n this.initLight(new DirectionalLight(this.color, this.intensity))\n },\n __hmrId: 'DirectionalLight',\n})\n","import { defineComponent, watch } from 'vue'\nimport { HemisphereLight } from 'three'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n props: {\n groundColor: { type: String, default: '#444444' },\n },\n created() {\n const light = new HemisphereLight(this.color, this.groundColor, this.intensity)\n watch(() => this.groundColor, (value) => { light.groundColor.set(value) })\n this.initLight(light)\n },\n __hmrId: 'HemisphereLight',\n})\n","import { defineComponent } from 'vue'\nimport { PointLight } from 'three'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n props: {\n distance: { type: Number, default: 0 },\n decay: { type: Number, default: 1 },\n },\n created() {\n this.initLight(new PointLight(this.color, this.intensity, this.distance, this.decay))\n },\n __hmrId: 'PointLight',\n})\n","import { defineComponent, watch } from 'vue'\nimport { RectAreaLight } from 'three'\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js'\nimport { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n props: {\n width: { type: Number, default: 10 },\n height: { type: Number, default: 10 },\n helper: Boolean,\n },\n created() {\n RectAreaLightUniformsLib.init()\n const light = new RectAreaLight(this.color, this.intensity, this.width, this.height)\n\n const watchProps = ['width', 'height']\n watchProps.forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => { light[p] = value })\n })\n\n if (this.helper) {\n const lightHelper = new RectAreaLightHelper(light)\n light.add(lightHelper)\n }\n\n this.initLight(light)\n },\n __hmrId: 'RectAreaLight',\n})\n","import { defineComponent, watch } from 'vue'\nimport { SpotLight } from 'three'\nimport Light from './Light'\n\nexport default defineComponent({\n extends: Light,\n props: {\n angle: { type: Number, default: Math.PI / 3 },\n decay: { type: Number, default: 1 },\n distance: { type: Number, default: 0 },\n penumbra: { type: Number, default: 0 },\n target: Object,\n },\n created() {\n const light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay)\n\n const watchProps = ['angle', 'decay', 'distance', 'penumbra']\n watchProps.forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => { light[p] = value })\n })\n\n this.initLight(light)\n },\n __hmrId: 'SpotLight',\n})\n","import { ComponentPropsOptions, ComponentPublicInstance, defineComponent, InjectionKey, PropType, watch } from 'vue'\nimport { Color, Material, MeshBasicMaterial, MeshLambertMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, PointsMaterial as TPointsMaterial, Texture, ShadowMaterial as TShadowMaterial } from 'three'\nimport { MeshInjectionKey, MeshInterface } from '../meshes/Mesh'\nimport { bindObjectProp, propsValues } from '../tools'\nimport { BasicMaterialPropsInterface, LambertMaterialPropsInterface, MaterialPropsInterface, PhongMaterialPropsInterface, PhysicalMaterialPropsInterface, PointsMaterialPropsInterface, StandardMaterialPropsInterface, ToonMaterialPropsInterface } from './types'\n\nexport interface MaterialSetupInterface {\n mesh?: MeshInterface\n material?: Material\n createMaterial?(): Material\n}\n\nexport interface MaterialInterface extends MaterialSetupInterface {\n setTexture(texture: Texture | null, key: string): void\n}\n\nexport interface MaterialPublicInterface extends ComponentPublicInstance, MaterialInterface {}\n\nexport const MaterialInjectionKey: InjectionKey<MaterialPublicInterface> = Symbol('Material')\n\nconst BaseMaterial = defineComponent({\n emits: ['created'],\n props: {\n color: { type: String, default: '#ffffff' },\n props: { type: Object as PropType<MaterialPropsInterface>, default: () => ({}) },\n },\n inject: {\n mesh: MeshInjectionKey as symbol,\n },\n setup(): MaterialSetupInterface {\n return {}\n },\n provide() {\n return {\n [MaterialInjectionKey as symbol]: this,\n }\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh')\n return\n }\n\n if (this.createMaterial) {\n const material = this.material = this.createMaterial()\n // @ts-ignore\n watch(() => this.color, (value) => { material.color.set(value) })\n bindObjectProp(this, 'props', material, false, this.setProp)\n this.$emit('created', material)\n this.mesh.setMaterial(material)\n }\n },\n unmounted() {\n this.material?.dispose()\n },\n methods: {\n getMaterialParams() {\n return { ...propsValues(this.$props, ['props']), ...this.props }\n },\n setProp(material: any, key: string, value: any, needsUpdate = false) {\n const dstVal = material[key]\n if (dstVal instanceof Color) dstVal.set(value)\n else material[key] = value\n material.needsUpdate = needsUpdate\n },\n setTexture(texture: Texture | null, key = 'map') {\n this.setProp(this.material, key, texture, true)\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n __hmrId: 'Material',\n})\n\nexport default BaseMaterial\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function materialComponent<P extends Readonly<ComponentPropsOptions>>(\n name: string,\n props: P,\n createMaterial: {(opts: any): Material}\n) {\n return defineComponent({\n name,\n extends: BaseMaterial,\n props,\n methods: {\n createMaterial() {\n return createMaterial(this.getMaterialParams())\n },\n },\n })\n}\n\n// TODO : proper\nexport const BasicMaterial = materialComponent('BasicMaterial', { props: { type: Object as PropType<BasicMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshBasicMaterial(opts))\nexport const LambertMaterial = materialComponent('LambertMaterial', { props: { type: Object as PropType<LambertMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshLambertMaterial(opts))\nexport const PhongMaterial = materialComponent('PhongMaterial', { props: { type: Object as PropType<PhongMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshPhongMaterial(opts))\nexport const PhysicalMaterial = materialComponent('PhysicalMaterial', { props: { type: Object as PropType<PhysicalMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshPhysicalMaterial(opts))\nexport const PointsMaterial = materialComponent('PointsMaterial', { props: { type: Object as PropType<PointsMaterialPropsInterface>, default: () => ({}) } }, (opts) => new TPointsMaterial(opts))\nexport const ShadowMaterial = materialComponent('ShadowMaterial', { color: { type: String, default: '#000000' }, props: { type: Object as PropType<MaterialPropsInterface>, default: () => ({}) } }, (opts) => new TShadowMaterial(opts))\nexport const StandardMaterial = materialComponent('StandardMaterial', { props: { type: Object as PropType<StandardMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshStandardMaterial(opts))\nexport const ToonMaterial = materialComponent('ToonMaterial', { props: { type: Object as PropType<ToonMaterialPropsInterface>, default: () => ({}) } }, (opts) => new MeshToonMaterial(opts))\n","import { MeshMatcapMaterial, TextureLoader } from 'three'\nimport { propsValues, getMatcapUrl } from '../tools'\nimport { materialComponent } from './Material'\n\nexport default materialComponent(\n 'MatcapMaterial',\n {\n src: String,\n name: { type: String, default: '0404E8_0404B5_0404CB_3333FC' },\n },\n (opts) => {\n const src = opts.src ? opts.src : getMatcapUrl(opts.name)\n const params = propsValues(opts, ['src', 'name'])\n params.matcap = new TextureLoader().load(src)\n return new MeshMatcapMaterial(params)\n }\n)\n","import { ShaderMaterial } from 'three'\nimport { materialComponent } from './Material'\nimport { propsValues } from '../tools'\n\nconst defaultVertexShader = `\n varying vec2 vUv;\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n`\n\nconst defaultFragmentShader = `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(vUv.x, vUv.y, 0., 1.0);\n }\n`\n\nexport default materialComponent(\n 'ShaderMaterial',\n {\n props: { type: Object, default: () => ({\n uniforms: {},\n vertexShader: defaultVertexShader,\n fragmentShader: defaultFragmentShader,\n }) },\n },\n (opts) => new ShaderMaterial(propsValues(opts, ['color']))\n)\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three'\n\nfunction replaceAll(string: string, find: string, replace: string) {\n return string.split(find).join(replace)\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'))\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'))\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0xffffff) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include <lights_fragment_begin>',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n}\n\nexport default SubsurfaceScatteringShader\n","import { defineComponent, PropType } from 'vue'\nimport { Color, ShaderMaterial, UniformsUtils } from 'three'\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader'\nimport Material from './Material'\nimport { bindObjectProp } from '../tools'\n\nexport interface SubSurfaceMaterialUniformsInterface {\n diffuse?: string | number\n thicknessColor?: string | number\n thicknessDistortion?: number\n thicknessAmbient?: number\n thicknessAttenuation?: number\n thicknessPower?: number\n thicknessScale?: number\n}\n\nexport default defineComponent({\n extends: Material,\n props: {\n uniforms: { type: Object as PropType<SubSurfaceMaterialUniformsInterface>, default: () => ({\n diffuse: '#ffffff',\n thicknessColor: '#ffffff',\n thicknessDistortion: 0.4,\n thicknessAmbient: 0.01,\n thicknessAttenuation: 0.7,\n thicknessPower: 2,\n thicknessScale: 4,\n }) },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader\n const uniforms = UniformsUtils.clone(params.uniforms)\n\n bindObjectProp(this, 'uniforms', uniforms, true, (dst: any, key: string, value: any) => {\n const dstVal = dst[key].value\n if (dstVal instanceof Color) dstVal.set(value)\n else dst[key].value = value\n })\n\n const material = new ShaderMaterial({\n ...params,\n lights: true,\n ...this.props,\n uniforms,\n })\n\n return material\n },\n },\n})\n","import { defineComponent, PropType, watch } from 'vue'\nimport { ShaderMaterial, Texture, TextureLoader } from 'three'\nimport { bindObjectProp } from '../tools'\nimport { MaterialInjectionKey, MaterialInterface } from './Material'\n\nexport interface TexureInterface {\n material?: MaterialInterface\n texture?: Texture\n}\n\nexport default defineComponent({\n inject: {\n material: MaterialInjectionKey as symbol,\n },\n props: {\n name: { type: String, default: 'map' },\n uniform: String,\n src: String,\n onLoad: Function as PropType<(t: Texture) => void>,\n onProgress: Function as PropType<(e: ProgressEvent) => void>,\n onError: Function as PropType<(e: ErrorEvent) => void>,\n props: { type: Object, default: () => ({}) },\n },\n setup(): TexureInterface {\n return {}\n },\n created() {\n this.refreshTexture()\n watch(() => this.src, this.refreshTexture)\n },\n unmounted() {\n this.material?.setTexture(null, this.name)\n this.texture?.dispose()\n },\n methods: {\n createTexture() {\n if (!this.src) return undefined\n return new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError)\n },\n initTexture() {\n if (!this.texture) return\n\n bindObjectProp(this, 'props', this.texture)\n if (!this.material) return\n\n this.material.setTexture(this.texture, this.name)\n if (this.material.material instanceof ShaderMaterial && this.uniform) {\n (this.material.material).uniforms[this.uniform] = { value: this.texture }\n }\n },\n refreshTexture() {\n this.texture?.dispose()\n this.texture = this.createTexture()\n this.initTexture()\n },\n onLoaded(t: Texture) {\n this.onLoad?.(t)\n },\n },\n render() { return [] },\n})\n","import { defineComponent, PropType, watch } from 'vue'\nimport { CubeReflectionMapping, CubeTextureLoader } from 'three'\nimport Texture from './Texture'\n\nexport default defineComponent({\n extends: Texture,\n props: {\n name: { type: String, default: 'envMap' },\n path: { type: String, required: true },\n urls: {\n type: Array as PropType<string[]>,\n default: () => ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n props: { type: Object, default: () => ({ mapping: CubeReflectionMapping }) },\n },\n created() {\n watch(() => this.path, this.refreshTexture)\n watch(() => this.urls, this.refreshTexture)\n },\n methods: {\n createTexture() {\n return new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError)\n },\n },\n})\n","import { defineComponent, watch } from 'vue'\nimport { VideoTexture } from 'three'\nimport Texture from './Texture'\n\nexport default defineComponent({\n extends: Texture,\n props: {\n videoId: {\n type: String,\n required: true,\n },\n },\n created() {\n watch(() => this.videoId, this.refreshTexture)\n },\n methods: {\n createTexture() {\n const video = document.getElementById(this.videoId) as HTMLVideoElement\n return new VideoTexture(video)\n },\n },\n})\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/BoxGeometry'\n\nexport default meshComponent('Box', props, createGeometry)\n\n// import { defineComponent } from 'vue'\n// import Mesh, { meshComponent } from './Mesh'\n//\n// export default defineComponent({\n// extends: Mesh,\n// props,\n// created() {\n// this.createGeometry()\n// this.addGeometryWatchers(props)\n// },\n// methods: {\n// createGeometry() {\n// this.geometry = createGeometry(this)\n// },\n// },\n// })\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/CircleGeometry'\n\nexport default meshComponent('Circle', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/ConeGeometry'\n\nexport default meshComponent('Cone', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/CylinderGeometry'\n\nexport default meshComponent('Cylinder', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/DodecahedronGeometry'\n\nexport default meshComponent('Dodecahedron', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/IcosahedronGeometry'\n\nexport default meshComponent('Icosahedron', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/LatheGeometry'\n\nexport default meshComponent('Lathe', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/OctahedronGeometry'\n\nexport default meshComponent('Octahedron', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/PlaneGeometry'\n\nexport default meshComponent('Plane', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/PolyhedronGeometry'\n\nexport default meshComponent('Polyhedron', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/RingGeometry'\n\nexport default meshComponent('Ring', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/SphereGeometry'\n\nexport default meshComponent('Sphere', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/TetrahedronGeometry'\n\nexport default meshComponent('Tetrahedron', props, createGeometry)\n","import { defineComponent, PropType, watch } from 'vue'\nimport { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js'\nimport { Font, FontLoader } from 'three/examples/jsm/loaders/FontLoader.js'\nimport Mesh, { MeshSetupInterface } from './Mesh'\n\ninterface TextSetupInterface extends MeshSetupInterface {\n geometry?: TextGeometry\n font?: Font\n}\n\nconst props = {\n text: { type: String, required: true, default: 'Text' },\n fontSrc: { type: String, required: true },\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String] as PropType<boolean | string>, default: false },\n} as const\n\nexport default defineComponent({\n extends: Mesh,\n props,\n setup(): TextSetupInterface {\n return {}\n },\n created() {\n if (!this.fontSrc) {\n console.error('Missing required prop: \"font-src\"')\n return\n }\n // if (!this.text) {\n // console.error('Missing required prop: \"text\"')\n // return\n // }\n\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ]\n watchProps.forEach(p => {\n // @ts-ignore\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry()\n })\n })\n\n const loader = new FontLoader()\n this.loading = true\n loader.load(this.fontSrc, (font) => {\n this.loading = false\n this.font = font\n this.createGeometry()\n this.initMesh()\n })\n },\n methods: {\n createGeometry() {\n this.geometry = new TextGeometry(this.text, {\n // @ts-ignore\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n })\n\n if (this.align === 'center') {\n this.geometry.center()\n }\n },\n },\n})\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/TorusGeometry'\n\nexport default meshComponent('Torus', props, createGeometry)\n","import { meshComponent } from './Mesh'\nimport { props, createGeometry } from '../geometries/TorusKnotGeometry'\n\nexport default meshComponent('TorusKnot', props, createGeometry)\n","import { defineComponent } from 'vue'\nimport { TubeGeometry, Vector3 } from 'three'\nimport Mesh from './Mesh'\nimport { props, createGeometry, updateTubeGeometryPoints } from '../geometries/TubeGeometry'\n\nexport default defineComponent({\n extends: Mesh,\n props,\n created() {\n this.createGeometry()\n this.addGeometryWatchers(props)\n },\n methods: {\n createGeometry() {\n this.geometry = createGeometry(this)\n },\n // update curve points (without using prop, faster)\n updatePoints(points: Vector3[]) {\n updateTubeGeometryPoints(this.geometry as TubeGeometry, points)\n },\n },\n __hmrId: 'Tube',\n})\n","import { defineComponent, watch } from 'vue'\nimport { DoubleSide, MeshBasicMaterial, PlaneGeometry, Texture, TextureLoader } from 'three'\nimport Mesh, { MeshSetupInterface } from './Mesh'\n\ninterface ImageSetupInterface extends MeshSetupInterface {\n material?: MeshBasicMaterial\n texture?: Texture\n}\n\nexport default defineComponent({\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: { type: String, required: true },\n width: Number,\n height: Number,\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n keepSize: Boolean,\n },\n setup(): ImageSetupInterface {\n return {}\n },\n created() {\n if (!this.renderer) return\n\n this.geometry = new PlaneGeometry(1, 1, this.widthSegments, this.heightSegments)\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() })\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n // @ts-ignore\n watch(() => this[p], this.resize)\n })\n\n this.resize()\n if (this.keepSize) this.renderer.onResize(this.resize)\n },\n unmounted() {\n this.renderer?.offResize(this.resize)\n },\n methods: {\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded)\n },\n refreshTexture() {\n this.texture?.dispose()\n if (this.material) {\n this.material.map = this.loadTexture()\n this.material.needsUpdate = true\n }\n },\n onLoaded(texture: Texture) {\n this.texture = texture\n this.resize()\n this.$emit('loaded', texture)\n },\n resize() {\n if (!this.renderer || !this.texture) return\n const screen = this.renderer.size\n const iW = this.texture.image.width\n const iH = this.texture.image.height\n const iRatio = iW / iH\n let w = 1, h = 1\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width\n h = this.height * screen.wHeight / screen.height\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width\n h = w / iRatio\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height\n w = h * iRatio\n } else {\n if (iRatio > 1) w = h * iRatio\n else h = w / iRatio\n }\n if (this.mesh) {\n this.mesh.scale.x = w\n this.mesh.scale.y = h\n }\n },\n },\n __hmrId: 'Image',\n})\n","import { defineComponent } from 'vue'\nimport { InstancedMesh } from 'three'\nimport Mesh from './Mesh'\nimport { bindProp } from '../tools'\n\nexport default defineComponent({\n extends: Mesh,\n props: {\n count: { type: Number, required: true },\n },\n methods: {\n initMesh() {\n if (!this.renderer) return\n\n if (!this.geometry || !this.material) {\n console.error('Missing geometry and/or material')\n return false\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count)\n this.mesh.userData.component = this\n\n bindProp(this, 'castShadow', this.mesh)\n bindProp(this, 'receiveShadow', this.mesh)\n\n if (this.onPointerEnter ||\n this.onPointerOver ||\n this.onPointerMove ||\n this.onPointerLeave ||\n this.onPointerDown ||\n this.onPointerUp ||\n this.onClick) {\n this.renderer.three.addIntersectObject(this.mesh)\n }\n\n this.initObject3D(this.mesh)\n },\n },\n __hmrId: 'InstancedMesh',\n})\n","import { defineComponent } from 'vue'\nimport { Sprite, SpriteMaterial, Texture, TextureLoader } from 'three'\nimport Object3D, { Object3DSetupInterface } from '../core/Object3D'\n\ninterface SpriteSetupInterface extends Object3DSetupInterface {\n texture?: Texture\n material?: SpriteMaterial\n sprite?: Sprite\n}\n\nexport default defineComponent({\n extends: Object3D,\n emits: ['loaded'],\n props: {\n src: { type: String, required: true },\n },\n setup(): SpriteSetupInterface {\n return {}\n },\n created() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded)\n this.material = new SpriteMaterial({ map: this.texture })\n this.sprite = new Sprite(this.material)\n this.initObject3D(this.sprite)\n },\n unmounted() {\n this.texture?.dispose()\n this.material?.dispose()\n },\n methods: {\n onLoaded() {\n this.updateUV()\n this.$emit('loaded')\n },\n updateUV() {\n if (!this.texture || !this.sprite) return\n\n const iWidth = this.texture.image.width\n const iHeight = this.texture.image.height\n const iRatio = iWidth / iHeight\n\n let x = 0.5, y = 0.5\n if (iRatio > 1) {\n x = 0.5 * iRatio\n } else {\n y = 0.5 / iRatio\n }\n\n const positions = this.sprite.geometry.attributes.position.array as Array<number>\n positions[0] = -x; positions[1] = -y\n positions[5] = x; positions[6] = -y\n positions[10] = x; positions[11] = y\n positions[15] = -x; positions[16] = y\n this.sprite.geometry.attributes.position.needsUpdate = true\n },\n },\n __hmrId: 'Sprite',\n})\n","import { defineComponent } from 'vue'\nimport { BufferGeometry, Material, Points } from 'three'\nimport Object3D, { Object3DSetupInterface } from '../core/Object3D'\nimport { MeshInjectionKey } from './Mesh'\n\nexport interface PointsSetupInterface extends Object3DSetupInterface {\n mesh?: Points\n points?: Points\n geometry?: BufferGeometry\n material?: Material\n}\n\nexport interface PointsInterface extends PointsSetupInterface {\n setGeometry(geometry: BufferGeometry): void\n setMaterial(material: Material): void\n}\n\n// not really a mesh, but allow us to easily get geometry/material support\nexport default defineComponent({\n extends: Object3D,\n setup(): PointsSetupInterface {\n return {}\n },\n provide() {\n return {\n [MeshInjectionKey as symbol]: this,\n }\n },\n mounted() {\n this.mesh = this.points = new Points(this.geometry, this.material)\n this.initObject3D(this.mesh)\n },\n methods: {\n setGeometry(geometry: BufferGeometry) {\n this.geometry = geometry\n if (this.mesh) this.mesh.geometry = geometry\n },\n setMaterial(material: Material) {\n this.material = material\n if (this.mesh) this.mesh.material = material\n },\n },\n})\n","import { Object3D as TObject3D } from 'three'\nimport { defineComponent } from 'vue'\nimport Object3D from '../core/Object3D'\n\nexport default defineComponent({\n extends: Object3D,\n emits: ['before-load', 'load', 'progress', 'error'],\n props: {\n src: { type: String, required: true },\n },\n data() {\n return {\n progress: 0,\n }\n },\n methods: {\n onLoad(model: TObject3D) {\n this.$emit('load', model)\n },\n onProgress(progress: ProgressEvent) {\n this.progress = progress.loaded / progress.total\n this.$emit('progress', progress)\n },\n onError(error: ErrorEvent) {\n this.$emit('error', error)\n },\n },\n})\n","import { defineComponent } from 'vue'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport Model from './Model'\n\nexport default defineComponent({\n extends: Model,\n created() {\n const loader = new GLTFLoader()\n this.$emit('before-load', loader)\n loader.load(this.src, (gltf) => {\n this.onLoad(gltf)\n this.initObject3D(gltf.scene)\n }, this.onProgress, this.onError)\n },\n})\n","import { defineComponent } from 'vue'\nimport { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js'\nimport Model from './Model'\n\nexport default defineComponent({\n extends: Model,\n created() {\n const loader = new FBXLoader()\n this.$emit('before-load', loader)\n loader.load(this.src, (fbx) => {\n this.onLoad(fbx)\n this.initObject3D(fbx)\n }, this.onProgress, this.onError)\n },\n})\n","import { defineComponent, inject, InjectionKey } from 'vue'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass'\nimport { RendererInjectionKey, RendererInterface } from '../core/Renderer'\n\ninterface EffectComposerSetupInterface {\n renderer?: RendererInterface\n composer?: EffectComposer\n}\n\nexport interface EffectComposerInterface extends EffectComposerSetupInterface {\n addPass(pass: Pass): void\n removePass(pass: Pass): void\n}\n\nexport const ComposerInjectionKey: InjectionKey<EffectComposerInterface> = Symbol('Composer')\n\nexport default defineComponent({\n setup(): EffectComposerSetupInterface {\n const renderer = inject(RendererInjectionKey)\n return { renderer }\n },\n provide() {\n return {\n [ComposerInjectionKey as symbol]: this,\n }\n },\n created() {\n if (!this.renderer) {\n console.error('Renderer not found')\n return\n }\n const renderer = this.renderer\n\n const composer = new EffectComposer(this.renderer.renderer)\n this.composer = composer\n this.renderer.composer = composer\n\n // this.renderer.onInit(() => {\n renderer.addListener('init', () => {\n renderer.renderer.autoClear = false\n this.resize()\n renderer.addListener('resize', this.resize)\n })\n },\n unmounted() {\n this.renderer?.removeListener('resize', this.resize)\n },\n methods: {\n addPass(pass: Pass) {\n this.composer?.addPass(pass)\n },\n removePass(pass: Pass) {\n this.composer?.removePass(pass)\n },\n resize() {\n if (this.composer && this.renderer) {\n this.composer.setSize(this.renderer.size.width, this.renderer.size.height)\n }\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : []\n },\n __hmrId: 'EffectComposer',\n})\n","import { Pass } from 'three/examples/jsm/postprocessing/Pass'\nimport { defineComponent } from 'vue'\nimport { RendererInjectionKey, RendererInterface } from '../core/Renderer'\nimport { ComposerInjectionKey, EffectComposerInterface } from './EffectComposer'\n\nexport interface EffectSetupInterface {\n renderer?: RendererInterface\n composer?: EffectComposerInterface\n pass?: Pass\n}\n\nexport default defineComponent({\n // inject for sub components\n inject: {\n renderer: RendererInjectionKey as symbol,\n composer: ComposerInjectionKey as symbol,\n },\n emits: ['ready'],\n setup(): EffectSetupInterface {\n return {}\n },\n created() {\n if (!this.composer) {\n console.error('Missing parent EffectComposer')\n }\n if (!this.renderer) {\n console.error('Missing parent Renderer')\n }\n },\n unmounted() {\n if (this.pass) {\n this.composer?.removePass(this.pass);\n (this.pass as any).dispose?.()\n }\n },\n methods: {\n initEffectPass(pass: Pass) {\n this.pass = pass\n this.composer?.addPass(pass)\n this.$emit('ready', pass)\n },\n },\n render() {\n return []\n },\n __hmrId: 'EffectPass',\n})\n","import { defineComponent } from 'vue'\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'\nimport EffectPass from './EffectPass'\n\nexport default defineComponent({\n extends: EffectPass,\n created() {\n if (!this.renderer) return\n\n if (!this.renderer.scene) {\n console.error('Missing Scene')\n return\n }\n if (!this.renderer.camera) {\n console.error('Missing Camera')\n return\n }\n const pass = new RenderPass(this.renderer.scene, this.renderer.camera)\n this.initEffectPass(pass)\n },\n __hmrId: 'RenderPass',\n})\n","import { defineComponent, watch } from 'vue'\nimport { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js'\nimport EffectPass from './EffectPass'\n\nconst props = {\n focus: { type: Number, default: 1 },\n aperture: { type: Number, default: 0.025 },\n maxblur: { type: Number, default: 0.01 },\n} as const\n\nexport default defineComponent({\n extends: EffectPass,\n props,\n created() {\n if (!this.renderer) return\n\n if (!this.renderer.scene) {\n console.error('Missing Scene')\n return\n }\n if (!this.renderer.camera) {\n console.error('Missing Camera')\n return\n }\n\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.renderer.size.width,\n height: this.renderer.size.height,\n }\n\n const pass = new BokehPass(this.renderer.scene, this.renderer.camera, params)\n\n Object.keys(props).forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => { pass.uniforms[p].value = value })\n })\n\n this.initEffectPass(pass)\n },\n __hmrId: 'BokehPass',\n})\n","import { defineComponent, watch } from 'vue'\nimport { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js'\nimport EffectPass from './EffectPass'\n\nconst props = {\n noiseIntensity: { type: Number, default: 0.5 },\n scanlinesIntensity: { type: Number, default: 0.05 },\n scanlinesCount: { type: Number, default: 4096 },\n grayscale: { type: Number, default: 0 },\n} as const\n\nexport default defineComponent({\n extends: EffectPass,\n props,\n created() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale)\n\n Object.keys(props).forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => { pass.uniforms[p].value = value })\n })\n\n this.initEffectPass(pass)\n },\n __hmrId: 'FilmPass',\n})\n","import { defineComponent } from 'vue'\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js'\nimport EffectPass from './EffectPass'\nimport { SizeInterface } from '../core/useThree'\n\nexport default defineComponent({\n extends: EffectPass,\n created() {\n const pass = new ShaderPass(FXAAShader)\n\n // resize will be first called in renderer init\n this.renderer?.addListener('resize', this.resize)\n\n this.initEffectPass(pass)\n },\n unmounted() {\n this.renderer?.removeListener('resize', this.resize)\n },\n methods: {\n resize({ size }: { size: SizeInterface }) {\n if (this.pass) {\n const { resolution } = (this.pass as ShaderPass).material.uniforms\n resolution.value.x = 1 / size.width\n resolution.value.y = 1 / size.height\n }\n },\n },\n __hmrId: 'FXAAPass',\n})\n","import { defineComponent, watch } from 'vue'\nimport { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js'\nimport EffectPass from './EffectPass'\n\nconst props = {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n} as const\n\nexport default defineComponent({\n extends: EffectPass,\n props,\n created() {\n if (!this.renderer) return\n\n const pass = new HalftonePass(this.renderer.size.width, this.renderer.size.height, {})\n\n Object.keys(props).forEach(p => {\n // @ts-ignore\n pass.uniforms[p].value = this[p]\n // @ts-ignore\n watch(() => this[p], (value) => { pass.uniforms[p].value = value })\n })\n\n this.initEffectPass(pass)\n },\n __hmrId: 'HalftonePass',\n})\n","import { defineComponent } from 'vue'\nimport { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js'\nimport EffectPass from './EffectPass'\n\nexport default defineComponent({\n extends: EffectPass,\n created() {\n if (!this.renderer) return\n\n const pass = new SMAAPass(this.renderer.size.width, this.renderer.size.height)\n this.initEffectPass(pass)\n },\n __hmrId: 'SMAAPass',\n})\n","import { defineComponent } from 'vue'\nimport { SSAOPass } from 'three/examples/jsm/postprocessing/SSAOPass.js'\nimport EffectPass from './EffectPass'\n\nexport default defineComponent({\n extends: EffectPass,\n props: {\n options: {\n type: Object,\n default: () => ({}),\n },\n },\n created() {\n if (!this.renderer) return\n\n if (!this.renderer.scene) {\n console.error('Missing Scene')\n return\n }\n if (!this.renderer.camera) {\n console.error('Missing Camera')\n return\n }\n\n const pass = new SSAOPass(\n this.renderer.scene,\n this.renderer.camera,\n this.renderer.size.width,\n this.renderer.size.height\n )\n\n Object.keys(this.options).forEach(key => {\n // @ts-ignore\n pass[key] = this.options[key]\n })\n\n this.initEffectPass(pass)\n },\n __hmrId: 'SSAOPass',\n})\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n}\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three'\nimport DefaultShader from './default'\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n}\n","import { defineComponent, PropType, watch } from 'vue'\nimport { Vector2 } from 'three'\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'\nimport EffectPass from './EffectPass'\nimport TiltShift from '../shaders/TiltShift'\nimport { Vector2PropInterface } from '../core/Object3D'\nimport { bindProp } from '../tools'\n\nconst props = {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object as PropType<Vector2PropInterface>, default: () => ({ x: 0, y: 100 }) },\n end: { type: Object as PropType<Vector2PropInterface>, default: () => ({ x: 10, y: 100 }) },\n} as const\n\ninterface TiltShiftPassSetupInterface {\n uniforms1: {[name: string]: { value: any }}\n uniforms2: {[name: string]: { value: any }}\n pass1?: ShaderPass\n pass2?: ShaderPass\n}\n\nexport default defineComponent({\n extends: EffectPass,\n props,\n setup(): TiltShiftPassSetupInterface {\n return { uniforms1: {}, uniforms2: {} }\n },\n created() {\n if (!this.composer) return\n\n this.pass1 = new ShaderPass(TiltShift)\n this.pass2 = new ShaderPass(TiltShift)\n\n const uniforms1 = this.uniforms1 = this.pass1.uniforms\n const uniforms2 = this.uniforms2 = this.pass2.uniforms\n\n // shared uniforms\n uniforms2.blurRadius = uniforms1.blurRadius\n uniforms2.gradientRadius = uniforms1.gradientRadius\n uniforms2.start = uniforms1.start\n uniforms2.end = uniforms1.end\n uniforms2.texSize = uniforms1.texSize\n\n bindProp(this, 'blurRadius', uniforms1.blurRadius, 'value')\n bindProp(this, 'gradientRadius', uniforms1.gradientRadius, 'value')\n\n this.updateFocusLine();\n\n ['start', 'end'].forEach(p => {\n // @ts-ignore\n watch(() => this[p], this.updateFocusLine, { deep: true })\n })\n\n this.pass1.setSize = (width: number, height: number) => {\n uniforms1.texSize.value.set(width, height)\n }\n\n this.initEffectPass(this.pass1)\n this.composer.addPass(this.pass2)\n },\n unmounted() {\n if (this.composer && this.pass2) this.composer.removePass(this.pass2)\n },\n methods: {\n updateFocusLine() {\n this.uniforms1.start.value.copy(this.start)\n this.uniforms1.end.value.copy(this.end)\n const dv = new Vector2().copy(this.end as Vector2).sub(this.start as Vector2).normalize()\n this.uniforms1.delta.value.copy(dv)\n this.uniforms2.delta.value.set(-dv.y, dv.x)\n },\n },\n __hmrId: 'TiltShiftPass',\n})\n","import { defineComponent, watch } from 'vue'\nimport { Vector2 } from 'three'\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js'\nimport EffectPass from './EffectPass'\n\nconst props = {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n} as const\n\nexport default defineComponent({\n extends: EffectPass,\n props,\n created() {\n if (!this.renderer) return\n\n const size = new Vector2(this.renderer.size.width, this.renderer.size.height)\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold)\n\n Object.keys(props).forEach(p => {\n // @ts-ignore\n watch(() => this[p], (value) => { pass.uniforms[p].value = value })\n })\n\n this.initEffectPass(pass)\n },\n __hmrId: 'UnrealBloomPass',\n})\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three'\nimport DefaultShader from './default'\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n}\n","import { defineComponent, PropType } from 'vue'\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'\nimport EffectPass from './EffectPass'\nimport ZoomBlur from '../shaders/ZoomBlur'\nimport { Vector2PropInterface } from '../core/Object3D'\nimport { bindProp } from '../tools'\n\nexport default defineComponent({\n extends: EffectPass,\n props: {\n center: { type: Object as PropType<Vector2PropInterface>, default: () => ({ x: 0.5, y: 0.5 }) },\n strength: { type: Number, default: 0.5 },\n },\n created() {\n const pass = new ShaderPass(ZoomBlur)\n\n bindProp(this, 'center', pass.uniforms.center, 'value')\n bindProp(this, 'strength', pass.uniforms.strength, 'value')\n\n this.initEffectPass(pass)\n },\n __hmrId: 'ZoomBlurPass',\n})\n","import { App, createApp as _createApp } from 'vue'\nimport * as TROIS from './index'\n\nexport const TroisJSVuePlugin = {\n install(app: App): void {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Raycaster',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'CubeCamera',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'HemisphereLight',\n 'PointLight',\n 'RectAreaLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'PointsMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'BufferGeometry',\n\n 'Mesh',\n\n 'Box', 'BoxGeometry',\n 'Circle', 'CircleGeometry',\n 'Cone', 'ConeGeometry',\n 'Cylinder', 'CylinderGeometry',\n 'Dodecahedron', 'DodecahedronGeometry',\n 'Icosahedron', 'IcosahedronGeometry',\n 'Lathe', 'LatheGeometry',\n 'Octahedron', 'OctahedronGeometry',\n 'Plane', 'PlaneGeometry',\n 'Polyhedron', 'PolyhedronGeometry',\n 'Ring', 'RingGeometry',\n 'Sphere', 'SphereGeometry',\n 'Tetrahedron', 'TetrahedronGeometry',\n 'Text',\n 'Torus', 'TorusGeometry',\n 'TorusKnot', 'TorusKnotGeometry',\n 'Tube', 'TubeGeometry',\n\n 'Image',\n 'InstancedMesh',\n 'Points',\n 'Sprite',\n\n 'FbxModel',\n 'GltfModel',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'SSAOPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n ]\n\n comps.forEach(comp => {\n // @ts-ignore\n app.component(comp, TROIS[comp])\n })\n },\n}\n\nexport function createApp(params: any): App {\n return _createApp(params).use(TroisJSVuePlugin)\n}\n","import { Texture, TextureLoader } from 'three'\n\nexport interface TextureConfigInterface {\n src: string\n}\n\nexport interface TexturesInterface {\n loader: TextureLoader\n count: number\n textures: Texture[],\n loadProgress: number\n loadTextures(images: TextureConfigInterface[], cb: {() : void}): void\n dispose(): void\n}\n\nexport default function useTextures(): TexturesInterface {\n const obj: TexturesInterface = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n }\n return obj\n\n function loadTextures(images: TextureConfigInterface[], cb: {() : void}) {\n obj.count = images.length\n obj.textures.splice(0)\n obj.loadProgress = 0\n Promise.all(images.map(loadTexture)).then(cb)\n }\n\n function loadTexture(img: TextureConfigInterface, index: number) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count\n obj.textures[index] = texture\n resolve(texture)\n }\n )\n })\n }\n\n function dispose() {\n obj.textures.forEach(t => t.dispose())\n }\n}\n"],"names":["toRef","watch","ref","Vector3","Raycaster","Plane","Vector2","intersect","InstancedMesh","event","renderer","WebGLRenderer","OrbitControls","defineComponent","watchEffect","inject","OrthographicCamera","PerspectiveCamera","_a","Scene","provide","Color","Texture","getCurrentInstance","Group","WebGLCubeRenderTarget","RGBAFormat","LinearMipmapLinearFilter","CubeCamera","onUnmounted","TMesh","BufferGeometry","BufferAttribute","props","createGeometry","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","ExtrudeGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PlaneGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","ShapeGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","Curve","CatmullRomCurve3","TubeGeometry","SpotLight","DirectionalLight","AmbientLight","HemisphereLight","PointLight","RectAreaLightUniformsLib","RectAreaLight","RectAreaLightHelper","MeshBasicMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshPhysicalMaterial","TPointsMaterial","TShadowMaterial","MeshStandardMaterial","MeshToonMaterial","TextureLoader","MeshMatcapMaterial","ShaderMaterial","ShaderChunk","UniformsUtils","ShaderLib","Material","CubeReflectionMapping","CubeTextureLoader","VideoTexture","FontLoader","TextGeometry","DoubleSide","SpriteMaterial","Sprite","Points","GLTFLoader","FBXLoader","EffectComposer","RenderPass","BokehPass","FilmPass","ShaderPass","FXAAShader","HalftonePass","SMAAPass","SSAOPass","UnrealBloomPass","_createApp"],"mappings":"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"}