@relu-interactives/spatial-ecs 0.4.5 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/{System-ln4Q7Eot.d.cts → System-V_mv07le.d.cts} +2 -2
  2. package/dist/{System-ln4Q7Eot.d.ts → System-V_mv07le.d.ts} +2 -2
  3. package/dist/{XRHandPose-CxPv-LBo.d.cts → XRHandPose-CQTLGxFC.d.cts} +218 -2
  4. package/dist/{XRHandPose-BImIa4ZS.d.ts → XRHandPose-CU3vNFuS.d.ts} +218 -2
  5. package/dist/{chunk-4AK4I3QF.js → chunk-BUEKOSR5.js} +102 -3
  6. package/dist/chunk-BUEKOSR5.js.map +1 -0
  7. package/dist/{chunk-QIIWFP3V.js → chunk-Q52ADLF7.js} +1255 -18
  8. package/dist/chunk-Q52ADLF7.js.map +1 -0
  9. package/dist/{chunk-SGADE55G.js → chunk-RXBLOO5B.js} +249 -90
  10. package/dist/chunk-RXBLOO5B.js.map +1 -0
  11. package/dist/{chunk-4DWZK4X4.js → chunk-WJD2VKEH.js} +3 -3
  12. package/dist/chunk-WJD2VKEH.js.map +1 -0
  13. package/dist/components/index.cjs +99 -0
  14. package/dist/components/index.cjs.map +1 -1
  15. package/dist/components/index.d.cts +3 -3
  16. package/dist/components/index.d.ts +3 -3
  17. package/dist/components/index.js +1 -1
  18. package/dist/docs/guide/spatial-ui.md +165 -0
  19. package/dist/factories/index.cjs +372 -114
  20. package/dist/factories/index.cjs.map +1 -1
  21. package/dist/factories/index.d.cts +13 -3
  22. package/dist/factories/index.d.ts +13 -3
  23. package/dist/factories/index.js +3 -3
  24. package/dist/{index-CuGqxuk-.d.ts → index-C3ik3sA1.d.ts} +16 -3
  25. package/dist/{index-BphKHaV-.d.ts → index-D2Jt_JzH.d.ts} +156 -3
  26. package/dist/{index-CH7qMsQT.d.cts → index-DaG03vyN.d.cts} +156 -3
  27. package/dist/{index-CQsHUez3.d.cts → index-Dlr-7-4m.d.cts} +16 -3
  28. package/dist/index.cjs +1864 -360
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +42 -9
  31. package/dist/index.d.ts +42 -9
  32. package/dist/index.js +10 -8
  33. package/dist/index.js.map +1 -1
  34. package/dist/systems/index.cjs +1346 -13
  35. package/dist/systems/index.cjs.map +1 -1
  36. package/dist/systems/index.d.cts +2 -2
  37. package/dist/systems/index.d.ts +2 -2
  38. package/dist/systems/index.js +3 -3
  39. package/dist/types.d.cts +1 -1
  40. package/dist/types.d.ts +1 -1
  41. package/dist/worldSnapshotUtils.d.cts +1 -1
  42. package/dist/worldSnapshotUtils.d.ts +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-4AK4I3QF.js.map +0 -1
  45. package/dist/chunk-4DWZK4X4.js.map +0 -1
  46. package/dist/chunk-QIIWFP3V.js.map +0 -1
  47. package/dist/chunk-SGADE55G.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/factories/components/AnimationFactory.ts","../core/factories/components/AudioComponentFactory.ts","../core/factories/components/CameraFactory.ts","../core/factories/components/PhysicsFactory.ts","../core/factories/components/EnvironmentFactory.ts","../core/factories/components/EntityTypeFactory.ts","../core/factories/components/ImageComponentFactory.ts","../core/factories/components/ImageTargetAnchorFactory.ts","../core/factories/components/ImageTargetFactory.ts","../core/factories/components/LightFactory.ts","../core/factories/components/MaterialFactory.ts","../core/factories/components/MeshFactory.ts","../core/factories/components/MeshGeometryFactory.ts","../core/factories/components/ModelFactory.ts","../core/factories/components/NameFactory.ts","../core/factories/components/Object3DRefFactory.ts","../core/factories/components/ParentIdFactory.ts","../core/factories/components/PostprocessingFactory.ts","../core/factories/components/ScriptComponentFactory.ts","../core/factories/components/ScriptObjectComponentFactory.ts","../core/factories/components/SelectableFactory.ts","../core/factories/components/SelectionTransformStateFactory.ts","../core/factories/components/SpriteFactory.ts","../core/factories/components/TransformFactory.ts","../core/factories/components/InstancedMeshComponentFactory.ts","../core/factories/components/InstanceSlotComponentFactory.ts","../core/factories/components/VideoFactory.ts","../core/factories/components/XRRigFactory.ts","../core/factories/components/VRTeleportAreaFactory.ts","../core/factories/components/XRHandPoseFactory.ts","../core/factories/components/XRAnchorFactory.ts","../core/factories/components/XRInteractableFactory.ts","../core/factories/components/XRInteractorFactory.ts","../core/factories/components/XRInteractorSideFactory.ts","../core/factories/components/UIButtonComponentFactory.ts","../core/factories/components/UIPanelComponentFactory.ts","../core/factories/components/UISliderComponentFactory.ts","../core/factories/components/UITextComponentFactory.ts","../core/factories/components/UIToggleComponentFactory.ts","../core/factories/registerDefaultComponentFactories.ts","../core/factories/objects/shared.ts","../core/factories/objects/AudioFactory.ts","../core/factories/objects/CameraFactory.ts","../core/factories/objects/CapsuleFactory.ts","../core/factories/objects/CubeFactory.ts","../core/factories/objects/CylinderFactory.ts","../core/factories/objects/EmptyFactory.ts","../core/factories/objects/ImageFactory.ts","../core/factories/objects/ImageTargetFactory.ts","../core/factories/objects/InstancedMeshFactory.ts","../core/factories/objects/InstanceSlotFactory.ts","../core/factories/objects/lights/AmbientLightFactory.ts","../core/factories/objects/lights/AreaLightFactory.ts","../core/factories/objects/lights/DirectionalLightFactory.ts","../core/factories/objects/lights/PointLightFactory.ts","../core/factories/objects/lights/SpotLightFactory.ts","../core/factories/objects/ModelFactory.ts","../core/factories/objects/PlaneFactory.ts","../core/factories/objects/ScriptObjectFactory.ts","../core/factories/objects/TeleportAreaFactory.ts","../core/factories/objects/XRInteractorFactory.ts","../core/factories/objects/UIButtonObjectFactory.ts","../core/factories/objects/UIPanelObjectFactory.ts","../core/factories/objects/UISliderObjectFactory.ts","../core/factories/objects/UITextObjectFactory.ts","../core/factories/objects/UIToggleObjectFactory.ts","../core/factories/objects/XRRigFactory.ts","../core/factories/objects/SpriteFactory.ts","../core/factories/objects/SphereFactory.ts","../core/factories/objects/VideoFactory.ts","../core/factories/registerDefaultFactories.ts"],"names":["THREE","material","THREE2","THREE3","THREE4","THREE5","THREE6","THREE7","THREE8","THREE9","THREE10","THREE11","THREE12","THREE13","THREE14","THREE15","THREE16","THREE17","THREE18","THREE19","THREE20","THREE21","THREE22","THREE23","THREE24","THREE25","THREE26","THREE27","THREE28","THREE29","getOrCreateListener","normalizeDistanceModel"],"mappings":"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","file":"chunk-RXBLOO5B.js","sourcesContent":["import { AnimationComponent } from \"../../components/Animation\";\nimport type { World } from \"../../World\";\n\nexport function createAnimationComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof AnimationComponent>\n): AnimationComponent {\n const component = new AnimationComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import * as THREE from \"three\";\nimport { AudioComponent } from \"../../components/Audio\";\nimport type { World } from \"../../World\";\n\ntype CreateAudioComponentContext = {\n object?: THREE.Object3D | null;\n listener?: THREE.AudioListener | null;\n isEditor?: boolean;\n};\n\nfunction normalizeDistanceModel(\n distanceModel: string,\n): \"inverse\" | \"linear\" | \"exponential\" {\n const normalized = distanceModel.trim().toLowerCase();\n\n if (normalized === \"linear\" || normalized === \"exponential\") {\n return normalized;\n }\n\n return \"inverse\";\n}\n\nfunction createConfiguredAudio(\n listener: THREE.AudioListener,\n options: AudioComponent[\"options\"],\n): THREE.Audio<GainNode> | THREE.PositionalAudio {\n const sound = options.positional\n ? new THREE.PositionalAudio(listener)\n : new THREE.Audio(listener);\n\n sound.setLoop(options.loop);\n sound.setVolume(options.volume);\n sound.setPlaybackRate(options.pitch);\n\n if (sound instanceof THREE.PositionalAudio) {\n sound.setRefDistance(options.refDistance);\n sound.setDistanceModel(normalizeDistanceModel(options.distanceModel));\n sound.setRolloffFactor(options.rolloffFactor);\n }\n\n return sound;\n}\n\nfunction createAudioEditorHelper(): THREE.Object3D {\n if (typeof document === \"undefined\") {\n const geometry = new THREE.EdgesGeometry(\n new THREE.OctahedronGeometry(0.22, 0),\n );\n const material = new THREE.LineBasicMaterial({\n color: \"#8bc8ff\",\n transparent: true,\n opacity: 0.95,\n depthTest: false,\n });\n\n const fallback = new THREE.LineSegments(geometry, material);\n fallback.renderOrder = 10;\n fallback.userData.ecsHelper = true;\n fallback.visible = false;\n return fallback;\n }\n\n const size = 96;\n const canvas = document.createElement(\"canvas\");\n canvas.width = size;\n canvas.height = size;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return new THREE.Object3D();\n }\n\n ctx.clearRect(0, 0, size, size);\n\n ctx.fillStyle = \"rgba(27, 35, 52, 0.9)\";\n ctx.beginPath();\n ctx.arc(size / 2, size / 2, 36, 0, Math.PI * 2);\n ctx.fill();\n\n ctx.strokeStyle = \"rgba(137, 202, 255, 0.9)\";\n ctx.lineWidth = 4;\n ctx.beginPath();\n ctx.arc(size / 2, size / 2, 36, 0, Math.PI * 2);\n ctx.stroke();\n\n ctx.fillStyle = \"#d9ecff\";\n ctx.beginPath();\n ctx.moveTo(33, 56);\n ctx.lineTo(43, 56);\n ctx.lineTo(54, 66);\n ctx.lineTo(54, 30);\n ctx.lineTo(43, 40);\n ctx.lineTo(33, 40);\n ctx.closePath();\n ctx.fill();\n\n ctx.strokeStyle = \"#7fd2ff\";\n ctx.lineWidth = 4;\n ctx.lineCap = \"round\";\n ctx.beginPath();\n ctx.arc(56, 48, 10, -0.8, 0.8);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.arc(56, 48, 16, -0.8, 0.8);\n ctx.stroke();\n\n const texture = new THREE.CanvasTexture(canvas);\n texture.needsUpdate = true;\n\n const material = new THREE.SpriteMaterial({\n map: texture,\n transparent: true,\n depthTest: false,\n });\n\n const helper = new THREE.Sprite(material);\n helper.scale.set(0.68, 0.68, 0.68);\n helper.renderOrder = 10;\n helper.userData.ecsHelper = true;\n helper.visible = false;\n\n return helper;\n}\n\nexport function createAudioComponent(\n world: World,\n entityId: number,\n path = \"\",\n options: Partial<AudioComponent[\"options\"]> = {},\n context?: CreateAudioComponentContext,\n): AudioComponent {\n const component = new AudioComponent(path, options);\n\n const anchor = context?.object ?? null;\n const listener = context?.listener ?? null;\n if (anchor && listener) {\n component.object = anchor;\n const sound = createConfiguredAudio(listener, component.options);\n\n if (context?.isEditor) {\n anchor.add(createAudioEditorHelper());\n }\n\n anchor.add(sound);\n component.audio = sound;\n }\n\n world.addComponent(entityId, component);\n return component;\n}\n","import * as THREE from \"three\";\n\nimport { CameraComponent, type CameraComponentOptions } from \"../../components/Camera\";\nimport { Object3DRef } from \"../../components/Object3DRef\";\nimport type { World } from \"../../World\";\n\nexport function createCameraComponent(\n world: World,\n entityId: number,\n payload: CameraComponentOptions = {},\n): CameraComponent {\n const object = world.getComponent(entityId, Object3DRef)?.object;\n const objectCamera = object instanceof THREE.Camera ? object : undefined;\n\n const component = new CameraComponent({\n ...payload,\n camera: payload.camera ?? objectCamera,\n });\n\n world.addComponent(entityId, component);\n return component;\n}\n","import {\n PhysicsComponent,\n type ColliderState,\n type RigidbodyState,\n} from \"../../components/Physics\";\nimport {\n MeshGeometryComponent,\n type CubeMeshParameters,\n type PlaneMeshParameters,\n type RadiusHeightMeshParameters,\n type RadiusMeshParameters,\n} from \"../../components/MeshGeometry\";\nimport type { World } from \"../../World\";\n\ntype PhysicsFactoryValues = {\n rigidbody?: Partial<RigidbodyState>;\n collider?: Partial<ColliderState>;\n};\n\n/**\n * Derive a collider that matches the entity's primitive geometry, so adding a\n * PhysicsComponent \"just works\" without hand-authoring dimensions.\n *\n * Collider dimensions are authored in unscaled local units (PhysicsSyncSystem\n * multiplies by world scale), and `size` holds FULL edge lengths — both of\n * which the mesh-geometry parameters already are, so they map 1:1.\n *\n * Returns null for models and unknown kinds — those keep the generic defaults\n * and should be sized explicitly from measured bounds.\n */\nfunction deriveColliderFromGeometry(\n world: World,\n entityId: number,\n): PhysicsFactoryValues | null {\n const meshGeometry = world.getComponent(entityId, MeshGeometryComponent);\n if (!meshGeometry) {\n return null;\n }\n\n switch (meshGeometry.kind) {\n case \"plane\": {\n const params = meshGeometry.parameters as PlaneMeshParameters;\n // PlaneGeometry lies in the local XY plane (the plane factory pre-rotates\n // the entity -90° on X to lay it flat), so the plane's normal is LOCAL Z.\n // The collider must therefore be a thin slab on Z — a thin Y slab would\n // stand up as a wall once the entity rotation is applied.\n return {\n collider: {\n shape: \"cuboid\",\n size: { x: params.width, y: params.height, z: 0.05 },\n },\n // An (effectively) zero-thickness sheet is only physically meaningful\n // as static geometry — planes are floors/walls, not dynamic bodies.\n rigidbody: { type: \"fixed\" },\n };\n }\n case \"cube\": {\n const params = meshGeometry.parameters as CubeMeshParameters;\n return {\n collider: {\n shape: \"cuboid\",\n size: { x: params.width, y: params.height, z: params.depth },\n },\n };\n }\n case \"sphere\": {\n const params = meshGeometry.parameters as RadiusMeshParameters;\n return { collider: { shape: \"ball\", radius: params.radius } };\n }\n case \"capsule\": {\n const params = meshGeometry.parameters as RadiusHeightMeshParameters;\n return {\n collider: {\n shape: \"capsule\",\n radius: params.radius,\n height: params.height,\n },\n };\n }\n case \"cylinder\": {\n const params = meshGeometry.parameters as RadiusHeightMeshParameters;\n return {\n collider: {\n shape: \"cylinder\",\n radius: params.radius,\n height: params.height,\n },\n };\n }\n default:\n return null;\n }\n}\n\nexport function createPhysicsComponent(\n world: World,\n entityId: number,\n values?: PhysicsFactoryValues,\n): PhysicsComponent {\n // Only derive when the caller supplied nothing: hydration/duplication pass\n // (or copy over) saved values, and explicit authoring wins untouched.\n const initial =\n values ?? deriveColliderFromGeometry(world, entityId) ?? undefined;\n const component = new PhysicsComponent(initial);\n world.addComponent(entityId, component);\n return component;\n}\n","import { Environment, type EnvironmentState } from \"../../components/Environment\";\nimport type { World } from \"../../World\";\n\nexport function createEnvironmentComponent(\n world: World,\n entityId: number,\n values?: Partial<EnvironmentState>,\n): Environment {\n const component = new Environment(values);\n world.addComponent(entityId, component);\n return component;\n}\n","import { EntityType } from \"../../components/EntityType\";\nimport type { World } from \"../../World\";\n\nexport function createEntityTypeComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof EntityType>\n): EntityType {\n const component = new EntityType(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ImageComponent } from \"../../components/Image\";\nimport type { World } from \"../../World\";\n\nexport function createImageComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof ImageComponent>\n): ImageComponent {\n const component = new ImageComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ImageTargetAnchor } from \"../../components/ImageTargetAnchor\";\nimport type { World } from \"../../World\";\n\nexport function createImageTargetAnchorComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof ImageTargetAnchor>\n): ImageTargetAnchor {\n const component = new ImageTargetAnchor(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ImageTarget } from \"../../components/ImageTarget\";\nimport type { World } from \"../../World\";\n\nexport function createImageTargetComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof ImageTarget>\n): ImageTarget {\n const component = new ImageTarget(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { LightComponent } from \"../../components/Light\";\nimport type { World } from \"../../World\";\n\nexport function createLightComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof LightComponent>\n): LightComponent {\n const component = new LightComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { MaterialComponent } from \"../../components/Material\";\nimport type { World } from \"../../World\";\n\nexport function createMaterialComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof MaterialComponent>\n): MaterialComponent {\n const component = new MaterialComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { MeshComponent } from \"../../components/Mesh\";\nimport type { World } from \"../../World\";\n\nexport function createMeshComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof MeshComponent>\n): MeshComponent {\n const component = new MeshComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { MeshGeometryComponent } from \"../../components/MeshGeometry\";\nimport type { World } from \"../../World\";\n\nexport function createMeshGeometryComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof MeshGeometryComponent>\n): MeshGeometryComponent {\n const component = new MeshGeometryComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ModelComponent } from \"../../components/Model\";\nimport type { World } from \"../../World\";\n\nexport function createModelComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof ModelComponent>\n): ModelComponent {\n const component = new ModelComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { Name } from \"../../components/Name\";\nimport type { World } from \"../../World\";\n\nexport function createNameComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof Name>\n): Name {\n const component = new Name(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { Object3DRef } from \"../../components/Object3DRef\";\nimport type { World } from \"../../World\";\n\nexport function createObject3DRefComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof Object3DRef>\n): Object3DRef {\n const component = new Object3DRef(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ParentId } from \"../../components/ParentId\";\nimport type { World } from \"../../World\";\n\nexport function createParentIdComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof ParentId>\n): ParentId {\n const component = new ParentId(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import {\n Postprocessing,\n type PostprocessingState,\n} from \"../../components/Postprocessing\";\nimport type { World } from \"../../World\";\n\nexport function createPostprocessingComponent(\n world: World,\n entityId: number,\n values?: Partial<PostprocessingState>,\n): Postprocessing {\n const component = new Postprocessing(values);\n world.addComponent(entityId, component);\n return component;\n}\n","import { ScriptComponent, type ScriptEntry } from \"../../components/ScriptComponent\";\nimport type { World } from \"../../World\";\n\ntype ScriptComponentPayload = {\n entries?: Array<Partial<ScriptEntry>>;\n};\n\nexport function createScriptComponent(\n world: World,\n entityId: number,\n payload: ScriptComponentPayload = {},\n): ScriptComponent {\n const entries = Array.isArray(payload.entries)\n ? payload.entries.map((entry) => ({\n entityId,\n className: typeof entry.className === \"string\" ? entry.className : \"\",\n scriptUrl: typeof entry.scriptUrl === \"string\" ? entry.scriptUrl : \"\",\n enabled: typeof entry.enabled === \"boolean\" ? entry.enabled : true,\n data:\n entry.data && typeof entry.data === \"object\" && !Array.isArray(entry.data)\n ? (entry.data as Record<string, unknown>)\n : {},\n runtimeState: entry.runtimeState,\n runtimeMessage:\n typeof entry.runtimeMessage === \"string\" ? entry.runtimeMessage : undefined,\n }))\n : [];\n\n const component = new ScriptComponent(entries);\n\n world.addComponent(entityId, component);\n return component;\n}","import {\n ScriptObjectComponent,\n type ScriptObjectComponentInput,\n} from \"../../components/ScriptObjectComponent\";\nimport type { World } from \"../../World\";\n\nexport function createScriptObjectComponent(\n world: World,\n entityId: number,\n payload: ScriptObjectComponentInput = {},\n): ScriptObjectComponent {\n const component = new ScriptObjectComponent(payload);\n world.addComponent(entityId, component);\n return component;\n}\n","import { Selectable } from \"../../components/Selectable\";\nimport type { World } from \"../../World\";\n\nexport function createSelectableComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof Selectable>\n): Selectable {\n const component = new Selectable(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { SelectionTransformState } from \"../../components/SelectionTransformState\";\nimport type { World } from \"../../World\";\n\nexport function createSelectionTransformStateComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof SelectionTransformState>\n): SelectionTransformState {\n const component = new SelectionTransformState(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { SpriteComponent } from \"../../components/Sprite\";\nimport type { World } from \"../../World\";\n\nexport function createSpriteComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof SpriteComponent>\n): SpriteComponent {\n const component = new SpriteComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { TransformComponent } from \"../../components/Transform\";\nimport type { World } from \"../../World\";\n\nexport function createTransformComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof TransformComponent>\n): TransformComponent {\n const component = new TransformComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { InstancedMeshComponent } from \"../../components/InstancedMesh\";\nimport type { InstancedMeshKind } from \"../../components/InstancedMesh\";\nimport type { MeshGeometryParameters } from \"../../components/MeshGeometry\";\nimport type { World } from \"../../World\";\n\nexport function createInstancedMeshComponent(\n world: World,\n entityId: number,\n meshKind: InstancedMeshKind,\n meshParameters?: Partial<MeshGeometryParameters>,\n options?: {\n castShadow?: boolean;\n receiveShadow?: boolean;\n instanceEntityIds?: number[];\n modelPath?: string;\n },\n): InstancedMeshComponent {\n const component = new InstancedMeshComponent(meshKind, meshParameters, options);\n world.addComponent(entityId, component);\n return component;\n}\n","import { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport type { World } from \"../../World\";\n\nexport function createInstanceSlotComponent(\n world: World,\n entityId: number,\n groupEntityId: number,\n slotIndex: number,\n): InstanceSlotComponent {\n const component = new InstanceSlotComponent(groupEntityId, slotIndex);\n world.addComponent(entityId, component);\n return component;\n}\n","import { VideoComponent } from \"../../components/Video\";\nimport type { World } from \"../../World\";\n\nexport function createVideoComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof VideoComponent>\n): VideoComponent {\n const component = new VideoComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRRigComponent } from \"../../components/XRRig\";\nimport type { World } from \"../../World\";\n\nexport function createXRRigComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRRigComponent>\n): XRRigComponent {\n const component = new XRRigComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { VRTeleportAreaComponent } from \"../../components/VRTeleportArea\";\nimport type { World } from \"../../World\";\n\nexport function createVRTeleportAreaComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof VRTeleportAreaComponent>\n): VRTeleportAreaComponent {\n const component = new VRTeleportAreaComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRHandPoseComponent } from \"../../components/XRHandPose\";\nimport type { World } from \"../../World\";\n\nexport function createXRHandPoseComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRHandPoseComponent>\n): XRHandPoseComponent {\n const component = new XRHandPoseComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRAnchorComponent } from \"../../components/XRAnchor\";\nimport type { World } from \"../../World\";\n\nexport function createXRAnchorComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRAnchorComponent>\n): XRAnchorComponent {\n const component = new XRAnchorComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { World } from \"../../World\";\n\nexport function createXRInteractableComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRInteractableComponent>\n): XRInteractableComponent {\n const component = new XRInteractableComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRInteractorComponent } from \"../../components/XRInteractor\";\nimport type { World } from \"../../World\";\n\nexport function createXRInteractorComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRInteractorComponent>\n): XRInteractorComponent {\n const component = new XRInteractorComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { XRInteractorSideComponent } from \"../../components/XRInteractor\";\nimport type { World } from \"../../World\";\n\nexport function createXRInteractorSideComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof XRInteractorSideComponent>\n): XRInteractorSideComponent {\n const component = new XRInteractorSideComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { UIButtonComponent } from \"../../components/UIButton\";\nimport type { World } from \"../../World\";\n\nexport function createUIButtonComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof UIButtonComponent>\n): UIButtonComponent {\n const component = new UIButtonComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { UIPanelComponent } from \"../../components/UIPanel\";\nimport type { World } from \"../../World\";\n\nexport function createUIPanelComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof UIPanelComponent>\n): UIPanelComponent {\n const component = new UIPanelComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { UISliderComponent } from \"../../components/UISlider\";\nimport type { World } from \"../../World\";\n\nexport function createUISliderComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof UISliderComponent>\n): UISliderComponent {\n const component = new UISliderComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { UITextComponent } from \"../../components/UIText\";\nimport type { World } from \"../../World\";\n\nexport function createUITextComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof UITextComponent>\n): UITextComponent {\n const component = new UITextComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import { UIToggleComponent } from \"../../components/UIToggle\";\nimport type { World } from \"../../World\";\n\nexport function createUIToggleComponent(\n world: World,\n entityId: number,\n ...args: ConstructorParameters<typeof UIToggleComponent>\n): UIToggleComponent {\n const component = new UIToggleComponent(...args);\n world.addComponent(entityId, component);\n return component;\n}\n","import {\n createAnimationComponent,\n createAudioComponent,\n createCameraComponent,\n createEnvironmentComponent,\n createEntityTypeComponent,\n createImageComponent,\n createImageTargetAnchorComponent,\n createImageTargetComponent,\n createInstancedMeshComponent,\n createLightComponent,\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n createModelComponent,\n createNameComponent,\n createObject3DRefComponent,\n createParentIdComponent,\n createPhysicsComponent,\n createPostprocessingComponent,\n createScriptComponent,\n createScriptObjectComponent,\n createSelectableComponent,\n createSelectionTransformStateComponent,\n createSpriteComponent,\n createTransformComponent,\n createUIButtonComponent,\n createUIPanelComponent,\n createUISliderComponent,\n createUITextComponent,\n createUIToggleComponent,\n createVideoComponent,\n createVRTeleportAreaComponent,\n createXRAnchorComponent,\n createXRHandPoseComponent,\n createXRInteractableComponent,\n createXRInteractorComponent,\n createXRInteractorSideComponent,\n createXRRigComponent,\n} from \"./components\";\nimport type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\n\nexport function registerDefaultComponentFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.registerComponentFactory(\"animation\", createAnimationComponent);\n objectManagementSystem.registerComponentFactory(\"audio\", createAudioComponent);\n objectManagementSystem.registerComponentFactory(\"camera\", createCameraComponent);\n objectManagementSystem.registerComponentFactory(\"physics\", createPhysicsComponent);\n objectManagementSystem.registerComponentFactory(\"environment\", createEnvironmentComponent);\n objectManagementSystem.registerComponentFactory(\"entityType\", createEntityTypeComponent);\n objectManagementSystem.registerComponentFactory(\"image\", createImageComponent);\n objectManagementSystem.registerComponentFactory(\"xrRig\", createXRRigComponent);\n objectManagementSystem.registerComponentFactory(\"vrTeleportArea\", createVRTeleportAreaComponent);\n objectManagementSystem.registerComponentFactory(\"xrHandPose\", createXRHandPoseComponent);\n objectManagementSystem.registerComponentFactory(\"xrAnchor\", createXRAnchorComponent);\n objectManagementSystem.registerComponentFactory(\"uiPanel\", createUIPanelComponent);\n objectManagementSystem.registerComponentFactory(\"uiText\", createUITextComponent);\n objectManagementSystem.registerComponentFactory(\"uiButton\", createUIButtonComponent);\n objectManagementSystem.registerComponentFactory(\"uiToggle\", createUIToggleComponent);\n objectManagementSystem.registerComponentFactory(\"uiSlider\", createUISliderComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractable\", createXRInteractableComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractor\", createXRInteractorComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractorSide\", createXRInteractorSideComponent);\n objectManagementSystem.registerComponentFactory(\n \"imageTargetAnchor\",\n createImageTargetAnchorComponent,\n );\n objectManagementSystem.registerComponentFactory(\"imageTarget\", createImageTargetComponent);\n objectManagementSystem.registerComponentFactory(\"light\", createLightComponent);\n objectManagementSystem.registerComponentFactory(\"material\", createMaterialComponent);\n objectManagementSystem.registerComponentFactory(\"mesh\", createMeshComponent);\n objectManagementSystem.registerComponentFactory(\n \"meshGeometry\",\n createMeshGeometryComponent,\n );\n objectManagementSystem.registerComponentFactory(\"model\", createModelComponent);\n objectManagementSystem.registerComponentFactory(\"name\", createNameComponent);\n objectManagementSystem.registerComponentFactory(\n \"object3DRef\",\n createObject3DRefComponent,\n );\n objectManagementSystem.registerComponentFactory(\"parentId\", createParentIdComponent);\n objectManagementSystem.registerComponentFactory(\n \"postprocessing\",\n createPostprocessingComponent,\n );\n\n objectManagementSystem.registerComponentFactory(\"script\", createScriptComponent);\n objectManagementSystem.registerComponentFactory(\n \"scriptObject\",\n createScriptObjectComponent,\n );\n objectManagementSystem.registerComponentFactory(\"selectable\", createSelectableComponent);\n objectManagementSystem.registerComponentFactory(\n \"selectionTransformState\",\n createSelectionTransformStateComponent,\n );\n objectManagementSystem.registerComponentFactory(\"sprite\", createSpriteComponent);\n objectManagementSystem.registerComponentFactory(\"transform\", createTransformComponent);\n objectManagementSystem.registerComponentFactory(\"video\", createVideoComponent);\n objectManagementSystem.registerComponentFactory(\"instancedMesh\", createInstancedMeshComponent);\n}\n","import type * as THREE from \"three\";\n\nimport type { TransformData } from \"../../components/Transform\";\nimport {\n createEntityTypeComponent,\n createNameComponent,\n createObject3DRefComponent,\n createParentIdComponent,\n createSelectableComponent,\n} from \"../components\";\n\nimport {\n applyTransform,\n createTransform,\n} from \"../../systems/ObjectManagementSystem\";\nimport type { EcsEntityKind, EntityId } from \"../../types\";\nimport type { World } from \"../../World\";\n\ntype CreateBaseEntityOptions = {\n label: string;\n entityType: EcsEntityKind;\n transformInput?: TransformData;\n parentId?: EntityId | null;\n};\n\nexport function createBaseEntity(\n world: World,\n object: THREE.Object3D,\n options: CreateBaseEntityOptions,\n): number {\n const entityId = world.createEntity();\n object.userData.entityId = entityId;\n\n const transform = createTransform(options.transformInput);\n applyTransform(object, transform);\n\n world.addComponent(entityId, transform);\n createObject3DRefComponent(world, entityId, object);\n createNameComponent(world, entityId, options.label);\n createEntityTypeComponent(world, entityId, options.entityType);\n createParentIdComponent(world, entityId, options.parentId ?? null);\n createSelectableComponent(world, entityId, true);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createAudioComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\n\nexport function createAudio({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Audio\",\n entityType: \"audio\",\n transformInput: payload.transform,\n });\n\n const audio = createAudioComponent(\n world,\n entityId,\n payload.path ?? \"\",\n payload.options ?? {},\n {\n object: anchor,\n listener: getOrCreateListener(camera),\n isEditor,\n },\n );\n scene.add(anchor);\n\n if (!audio.path) {\n return entityId;\n }\n\n if (!isEditor) {\n const loader = new THREE.AudioLoader();\n loader.load(\n audio.path,\n (buffer) => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n const sound = audio.audio;\n if (!sound) {\n return;\n }\n\n sound.setBuffer(buffer);\n if (audio.options.autoplay) {\n audio.play();\n }\n },\n undefined,\n (error) => {\n console.error(`Failed to load audio: ${audio.path}`, error);\n },\n );\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type {\n CameraComponentOptions,\n CameraProjection,\n CameraRuntimeType,\n} from \"../../components/Camera\";\nimport { createCameraComponent } from \"../components\";\nimport { Object3DRef } from \"../../components/Object3DRef\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype CameraCreateOptions = {\n type?: CameraRuntimeType;\n isDefault?: boolean;\n projection?: CameraProjection;\n fov?: number;\n near?: number;\n far?: number;\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n zoom?: number;\n};\n\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 2000;\nconst DEFAULT_FOV = 50;\nconst DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT = 5;\n\nfunction readViewportAspect(): number {\n if (typeof window === \"undefined\") {\n return 1;\n }\n\n const width = window.innerWidth;\n const height = window.innerHeight;\n if (\n Number.isFinite(width) &&\n Number.isFinite(height) &&\n width > 0 &&\n height > 0\n ) {\n return width / height;\n }\n\n return 1;\n}\n\nfunction toCameraCreateOptions(input: unknown): CameraCreateOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as Record<string, unknown>;\n\n const type =\n value.type === \"3d\" || value.type === \"ar\"\n ? value.type\n : undefined;\n\n const projection =\n value.projection === \"orthographic\" || value.projection === \"perspective\"\n ? value.projection\n : undefined;\n\n return {\n type,\n isDefault: typeof value.isDefault === \"boolean\" ? value.isDefault : undefined,\n projection,\n fov: typeof value.fov === \"number\" && Number.isFinite(value.fov) ? value.fov : undefined,\n near:\n typeof value.near === \"number\" && Number.isFinite(value.near)\n ? value.near\n : undefined,\n far: typeof value.far === \"number\" && Number.isFinite(value.far) ? value.far : undefined,\n left:\n typeof value.left === \"number\" && Number.isFinite(value.left)\n ? value.left\n : undefined,\n right:\n typeof value.right === \"number\" && Number.isFinite(value.right)\n ? value.right\n : undefined,\n top:\n typeof value.top === \"number\" && Number.isFinite(value.top)\n ? value.top\n : undefined,\n bottom:\n typeof value.bottom === \"number\" && Number.isFinite(value.bottom)\n ? value.bottom\n : undefined,\n zoom:\n typeof value.zoom === \"number\" && Number.isFinite(value.zoom)\n ? value.zoom\n : undefined,\n };\n}\n\nfunction resolveCameraCreateOptions(payload: {\n options?: unknown;\n camera?: unknown;\n}): CameraCreateOptions {\n // Prefer new payload.options shape, but support legacy payload.camera for\n // backward compatibility with older editor/serialized payloads.\n const next = toCameraCreateOptions(payload.options);\n\n if (payload.options && typeof payload.options === \"object\") {\n return next;\n }\n\n return toCameraCreateOptions(payload.camera);\n}\n\nfunction applyCameraSettings(camera: THREE.Camera, options: CameraCreateOptions): void {\n const near = typeof options.near === \"number\" ? options.near : DEFAULT_NEAR;\n const far = typeof options.far === \"number\" ? options.far : DEFAULT_FAR;\n const projection = options.projection;\n\n if (camera instanceof THREE.PerspectiveCamera) {\n if (!projection || projection === \"perspective\") {\n camera.fov = typeof options.fov === \"number\" ? options.fov : DEFAULT_FOV;\n }\n\n camera.aspect = readViewportAspect();\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n return;\n }\n\n if (camera instanceof THREE.OrthographicCamera) {\n camera.left =\n typeof options.left === \"number\"\n ? options.left\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.right =\n typeof options.right === \"number\"\n ? options.right\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.top =\n typeof options.top === \"number\"\n ? options.top\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.bottom =\n typeof options.bottom === \"number\"\n ? options.bottom\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.zoom = typeof options.zoom === \"number\" ? options.zoom : 1;\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n}\n\nfunction createCameraObject(options: CameraCreateOptions): THREE.Camera {\n const projection = options.projection ?? \"perspective\";\n const near = options.near ?? DEFAULT_NEAR;\n const far = options.far ?? DEFAULT_FAR;\n\n if (projection === \"orthographic\") {\n const top = options.top ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const bottom = options.bottom ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const left = options.left ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const right = options.right ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const camera = new THREE.OrthographicCamera(\n left,\n right,\n top,\n bottom,\n near,\n far,\n );\n\n camera.zoom = options.zoom ?? 1;\n camera.updateProjectionMatrix();\n return camera;\n }\n\n return new THREE.PerspectiveCamera(\n options.fov ?? DEFAULT_FOV,\n readViewportAspect(),\n near,\n far,\n );\n}\n\nexport function createCamera({ world, scene, camera, payload, isEditor }: CreateContext): number {\n const options = resolveCameraCreateOptions(payload);\n const useWorldCamera = !isEditor && (payload.useWorldCamera === true || Boolean(options.isDefault));\n const object = useWorldCamera ? camera : createCameraObject(options);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Camera\",\n entityType: \"camera\",\n transformInput: payload.transform,\n });\n\n const objectRef = world.getComponent(entityId, Object3DRef);\n if (objectRef?.object instanceof THREE.Camera) {\n objectRef.object.userData.entityId = entityId;\n }\n\n const componentOptions: CameraComponentOptions = {\n camera: object,\n type: options.type,\n isDefault: options.isDefault,\n projection: options.projection,\n fov: options.fov,\n near: options.near,\n far: options.far,\n left: options.left,\n right: options.right,\n top: options.top,\n bottom: options.bottom,\n zoom: options.zoom,\n };\n\n const component = createCameraComponent(world, entityId, componentOptions);\n\n if (useWorldCamera) {\n applyCameraSettings(object, options);\n } else {\n applyCameraSettings(object, options);\n // No THREE.CameraHelper: the editor's camera-preview inset already shows\n // the camera's view, so the frustum wireframe is visual noise.\n scene.add(object);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCapsule({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CapsuleGeometry(0.5, 1, 4, 8);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Capsule\",\n entityType: \"capsule\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"capsule\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCube({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.BoxGeometry(1, 1, 1);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cube\",\n entityType: \"cube\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cube\", mesh, {\n width: 1,\n height: 1,\n depth: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCylinder({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CylinderGeometry(0.5, 0.5, 1, 20);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cylinder\",\n entityType: \"cylinder\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cylinder\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction createEmptyEditorHelper(): THREE.LineSegments {\n const geometry = new THREE.EdgesGeometry(new THREE.BoxGeometry(0.1, 0.1, 0.1));\n const material = new THREE.LineBasicMaterial({\n color: \"#7f8ea3\",\n transparent: true,\n opacity: 0.9,\n depthTest: false,\n });\n\n const helper = new THREE.LineSegments(geometry, material);\n helper.renderOrder = 10;\n helper.userData.ecsHelper = true;\n\n return helper;\n}\n\nexport function createEmpty({ world, scene, payload, isEditor }: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Empty\",\n entityType: \"empty\",\n transformInput: payload.transform,\n });\n\n // if (isEditor) {\n // object.add(createEmptyEditorHelper());\n // }\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createImageComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createImage({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image\",\n entityType: \"image\",\n transformInput: payload.transform,\n });\n\n const image = createImageComponent(world, entityId, imagePath);\n image.object = anchor;\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n image.width = width;\n image.height = height;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n image.texture = texture;\n image.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n type ImageTarget,\n type ImageTargetReference,\n} from \"../../components/ImageTarget\";\nimport { createImageTargetComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype ImageTargetOptions = {\n targets?: ImageTargetReference[];\n compiledTargetUrl?: string;\n compiledTargetDir?: string;\n};\n\nfunction toImageTargetOptions(input: unknown): ImageTargetOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as {\n targets?: unknown;\n compiledTargetUrl?: unknown;\n compiledTargetDir?: unknown;\n };\n\n const targets = Array.isArray(value.targets)\n ? value.targets.filter((target): target is ImageTargetReference => {\n if (!target || typeof target !== \"object\") {\n return false;\n }\n\n const candidate = target as Partial<ImageTargetReference>;\n return (\n typeof candidate.id === \"number\" &&\n Number.isFinite(candidate.id) &&\n typeof candidate.url === \"string\" &&\n candidate.url.length > 0 &&\n typeof candidate.width === \"number\" &&\n Number.isFinite(candidate.width) &&\n typeof candidate.height === \"number\" &&\n Number.isFinite(candidate.height)\n );\n })\n : undefined;\n\n return {\n targets,\n compiledTargetUrl:\n typeof value.compiledTargetUrl === \"string\"\n ? value.compiledTargetUrl\n : undefined,\n compiledTargetDir:\n typeof value.compiledTargetDir === \"string\"\n ? value.compiledTargetDir\n : undefined,\n };\n}\n\nexport function createImageTarget({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image Target\",\n entityType: \"imageTarget\",\n transformInput: payload.transform,\n });\n\n const targetOptions = toImageTargetOptions(payload.options);\n const imageTarget: ImageTarget = createImageTargetComponent(\n world,\n entityId,\n targetOptions,\n );\n scene.add(anchor);\n\n // Only editor sessions should load and render image planes for targets.\n if (!isEditor || !imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as\n | { width?: number; height?: number }\n | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n imageTarget.texture = texture;\n imageTarget.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image target: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}","import * as THREE from \"three\";\n\nimport {\n type InstancedMeshKind,\n type InstanceTransform,\n DEFAULT_INSTANCE_TRANSFORM,\n} from \"../../components/InstancedMesh\";\nimport { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport type { MeshGeometryParameters } from \"../../components/MeshGeometry\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport { createInstancedMeshComponent } from \"../components/InstancedMeshComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction isInstancedMeshKind(value: unknown): value is InstancedMeshKind {\n return (\n value === \"cube\" ||\n value === \"sphere\" ||\n value === \"plane\" ||\n value === \"cylinder\" ||\n value === \"capsule\" ||\n value === \"model\"\n );\n}\n\n/**\n * Creates a lightweight instance-slot entity for the given group, using the\n * provided transform data. Does NOT add an `Object3DRef` — instance slots are\n * pure data entities whose transform is read by `InstancedMeshSystem`.\n */\nfunction createInstanceSlotEntity(\n world: Parameters<typeof createBaseEntity>[0],\n groupEntityId: number,\n slotIndex: number,\n label: string,\n transform?: InstanceTransform,\n): number {\n const instanceEntityId = world.createEntity();\n world.addComponent(instanceEntityId, new Name(label));\n world.addComponent(\n instanceEntityId,\n createTransform(\n transform\n ? {\n position: transform.position,\n rotation: transform.rotation,\n scale: transform.scale,\n }\n : undefined,\n ),\n );\n world.addComponent(\n instanceEntityId,\n new InstanceSlotComponent(groupEntityId, slotIndex),\n );\n world.addComponent(instanceEntityId, new EntityType(\"instanceSlot\"));\n world.addComponent(instanceEntityId, new Selectable(true));\n world.addComponent(instanceEntityId, new ParentId(groupEntityId));\n return instanceEntityId;\n}\n\nexport function createInstancedMesh({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const opts = payload.options ?? {};\n const meshKind: InstancedMeshKind = isInstancedMeshKind(opts.meshKind)\n ? (opts.meshKind as InstancedMeshKind)\n : \"cube\";\n\n const meshParameters =\n opts.meshParameters && typeof opts.meshParameters === \"object\"\n ? (opts.meshParameters as Partial<MeshGeometryParameters>)\n : undefined;\n\n const castShadow =\n typeof opts.castShadow === \"boolean\" ? opts.castShadow : false;\n const receiveShadow =\n typeof opts.receiveShadow === \"boolean\" ? opts.receiveShadow : false;\n const modelPath =\n typeof opts.modelPath === \"string\" ? opts.modelPath : undefined;\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Instanced Mesh\",\n entityType: \"instancedMesh\",\n transformInput: payload.transform,\n });\n\n // Determine instance entity IDs.\n // Three cases:\n // 1. `opts.instanceEntityIds` is present (new-format hydration) — skip child creation.\n // 2. `opts.instances` is present (old-format migration) — create a slot entity per legacy transform.\n // 3. Neither — fresh creation from UI: create one default slot entity.\n let instanceEntityIds: number[] = [];\n\n if (Array.isArray(opts.instanceEntityIds)) {\n // New hydration format — child entities are already in snapshot.entities and\n // will be created separately. Leave instanceEntityIds empty here; it will be\n // populated by restoreComponentState + remapped by restorePostCreateComponents.\n instanceEntityIds = [];\n } else if (Array.isArray(opts.instances) && (opts.instances as InstanceTransform[]).length > 0) {\n // Old snapshot migration: create a slot entity for each legacy InstanceTransform.\n const legacyInstances = opts.instances as InstanceTransform[];\n for (let i = 0; i < legacyInstances.length; i++) {\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n i,\n `Instance ${i + 1}`,\n legacyInstances[i],\n );\n instanceEntityIds.push(slotId);\n }\n } else {\n // Fresh creation: one default instance.\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n 0,\n \"Instance 1\",\n { ...DEFAULT_INSTANCE_TRANSFORM },\n );\n instanceEntityIds = [slotId];\n }\n\n createInstancedMeshComponent(world, entityId, meshKind, meshParameters, {\n castShadow,\n receiveShadow,\n instanceEntityIds,\n modelPath,\n });\n\n scene.add(anchor);\n return entityId;\n}\n","import { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\n\n/**\n * Creates a lightweight instance-slot entity.\n *\n * Instance slot entities carry `TransformComponent` and `InstanceSlotComponent`\n * but intentionally do **not** have an `Object3DRef` — they are pure data\n * containers whose transform is consumed by `InstancedMeshSystem` to build\n * instance matrices. They appear in the hierarchy as children of the owning\n * `instancedMesh` group entity.\n */\nexport function createInstanceSlot({ world, payload }: CreateContext): number {\n const opts = payload.options ?? {};\n const groupEntityId =\n typeof opts.groupEntityId === \"number\" ? opts.groupEntityId : -1;\n const slotIndex =\n typeof opts.slotIndex === \"number\" ? opts.slotIndex : 0;\n\n const entityId = world.createEntity();\n\n world.addComponent(\n entityId,\n new Name(payload.name ?? `Instance ${slotIndex + 1}`),\n );\n world.addComponent(entityId, createTransform(payload.transform));\n world.addComponent(entityId, new InstanceSlotComponent(groupEntityId, slotIndex));\n world.addComponent(entityId, new EntityType(\"instanceSlot\"));\n world.addComponent(entityId, new Selectable(true));\n // ParentId is applied by applyParentLinks during hydration, or set directly\n // by the instanced mesh factory / runtime when creating fresh instances.\n world.addComponent(entityId, new ParentId(groupEntityId !== -1 ? groupEntityId : null));\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAmbientLight({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const light = new THREE.AmbientLight(\"#ffffff\", 0.6);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Ambient Light\",\n entityType: \"ambientLight\",\n transformInput: payload.transform,\n });\n\n createLightComponent(world, entityId, light);\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\nimport { RectAreaLightHelper } from \"three/examples/jsm/helpers/RectAreaLightHelper.js\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAreaLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.RectAreaLight(\"#ffffff\", 5, 4, 4);\n light.lookAt(0, 0, 0);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Area Light\",\n entityType: \"areaLight\",\n transformInput: payload.transform ?? {\n position: { x: 0, y: 4, z: 0 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new RectAreaLightHelper(light, \"#fb7185\");\n helper.onBeforeRender = () => {\n helper.updateMatrixWorld(true);\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createDirectionalLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.DirectionalLight(\"#ffffff\", 1.5);\n light.castShadow = true;\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Directional Light\",\n entityType: \"directionalLight\",\n transformInput: payload.transform ?? {\n position: { x: 3, y: 6, z: 4 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.DirectionalLightHelper(light, 1.8, \"#38bdf8\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createPointLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.PointLight(\"#ffffff\", 1, 10);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Point Light\",\n entityType: \"pointLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 3, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.PointLightHelper(light, 0.35, \"#fbbf24\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createSpotLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.SpotLight(\"#ffffff\", 1, 20, Math.PI / 6, 0.1, 1);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Spot Light\",\n entityType: \"spotLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 5, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.SpotLightHelper(light, \"#f59e0b\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { GLTFLoader, type GLTF } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { resolveDracoDecoderPath } from \"../../utils/dracoDecoderPath\";\nimport { cloneModelScene, loadSharedGltf } from \"../../utils/modelCache\";\n\nimport {\n createAnimationComponent,\n createMeshGeometryComponent,\n createModelComponent,\n} from \"../components\";\nimport { AnimationComponent } from \"../../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getModelFileName(path: string): string {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? \"\";\n}\n\nfunction createModelLoader(): GLTFLoader {\n const loader = new GLTFLoader();\n\n try {\n const dracoLoader = new DRACOLoader();\n // Resolved per loader so a setDracoDecoderPath() override made after\n // module load still takes effect. Keep decoder version aligned with the\n // three.js runtime used by the app.\n dracoLoader.setDecoderPath(resolveDracoDecoderPath());\n loader.setDRACOLoader(dracoLoader);\n } catch (error) {\n console.warn(\"DRACOLoader could not be configured. Loading non-Draco models only.\", error);\n }\n\n return loader;\n}\n\nfunction collectModelMaterials(rootObject: THREE.Object3D): THREE.Material[] {\n const materialSet = new Set<THREE.Material>();\n\n rootObject.traverse((child) => {\n const asMesh = child as THREE.Mesh;\n if (!asMesh.material) {\n return;\n }\n\n if (Array.isArray(asMesh.material)) {\n for (const material of asMesh.material) {\n if (material) {\n materialSet.add(material);\n }\n }\n return;\n }\n\n materialSet.add(asMesh.material);\n });\n\n return [...materialSet];\n}\n\nexport function createModel({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const modelPath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Model\",\n entityType: \"model\",\n transformInput: payload.transform,\n });\n\n const model = createModelComponent(world, entityId, modelPath);\n const meshGeometry = createMeshGeometryComponent(world, entityId, \"model\", anchor, {}, {\n modelName: getModelFileName(modelPath),\n castShadow: false,\n receiveShadow: false,\n });\n\n model.object = anchor;\n scene.add(anchor);\n\n if (!modelPath) {\n return entityId;\n }\n\n const attachLoadedModel = (gltf: GLTF, object: THREE.Object3D) => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n object.userData.entityId = entityId;\n object.traverse((child) => {\n child.userData.entityId = entityId;\n });\n\n anchor.add(object);\n model.object = object;\n meshGeometry.object = object;\n\n if (gltf.animations.length > 0) {\n let animation = world.getComponent(entityId, AnimationComponent);\n\n if (!animation) {\n animation = createAnimationComponent(world, entityId, {\n clips: gltf.animations,\n externalClipSources: [],\n paused: false,\n reverse: false,\n timeScale: 1,\n crossFadeDuration: 0,\n });\n }\n\n animation.setModelClips(gltf.animations);\n }\n };\n\n const onLoadError = (error: unknown) => {\n console.error(`Failed to load model: ${modelPath}`, error);\n };\n\n if (isEditor) {\n // Editor sessions can re-import an asset under the same URL, which a\n // shared cache would mask with stale content — load fresh per spawn.\n createModelLoader().load(\n modelPath,\n (gltf) => attachLoadedModel(gltf, gltf.scene),\n undefined,\n onLoadError,\n );\n } else {\n // Runtime: parse each model URL once and mount skeleton-aware clones, so\n // repeated spawns (and script-driven respawns) skip fetch and parse.\n loadSharedGltf(\n modelPath,\n () =>\n new Promise<GLTF>((resolve, reject) => {\n createModelLoader().load(modelPath, resolve, undefined, reject);\n }),\n )\n .then((gltf) => attachLoadedModel(gltf, cloneModelScene(gltf.scene)))\n .catch(onLoadError);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createPlane({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.PlaneGeometry(100, 100);\n const material = new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n side: THREE.DoubleSide,\n });\n\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(\n world,\n mesh,\n {\n label: payload.name ?? \"Plane\",\n entityType: \"plane\",\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? {\n x: -Math.PI / 2,\n y: 0,\n z: 0,\n },\n scale: payload.transform?.scale,\n },\n },\n );\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"plane\", mesh, {\n width: 10,\n height: 10,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createScriptObjectComponent } from \"../components/ScriptObjectComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * A \"script object\" entity: an empty Group whose visual is built at runtime by\n * a user {@link ScriptObject} script (attached via `ScriptObjectComponent`).\n * `ScriptObjectSystem` builds/ticks/disposes the visual in editor AND runtime.\n * Create payload `options` may pre-link a script: `{ scriptUrl, className,\n * enabled?, data? }`. `runtimeState` always starts `\"idle\"` so the system loads\n * cleanly.\n */\nexport function createScriptObject({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Script Object\",\n entityType: \"scriptObject\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n createScriptObjectComponent(world, entityId, {\n scriptUrl: typeof options.scriptUrl === \"string\" ? options.scriptUrl : null,\n className: typeof options.className === \"string\" ? options.className : null,\n enabled: typeof options.enabled === \"boolean\" ? options.enabled : true,\n data:\n options.data &&\n typeof options.data === \"object\" &&\n !Array.isArray(options.data)\n ? (options.data as Record<string, unknown>)\n : {},\n });\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { VRTeleportAreaComponent } from \"../../components/VRTeleportArea\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a teleport destination surface.\n *\n * The mesh is a real, raycastable plane lying in the XZ ground plane (rotated\n * -90° about X, matching the `plane` primitive's convention) because\n * `XRLocomotionSystem` teleports by raycasting against it.\n *\n * It renders as a translucent guide rather than an invisible trigger: in the\n * editor the author needs to see the walkable region, and in-headset a subtle\n * floor tint reads as \"you may stand here\" without dominating the scene.\n */\nexport function createTeleportArea({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const options = (payload.options ?? {}) as Record<string, unknown>;\n const width = typeof options.width === \"number\" ? options.width : 10;\n const depth = typeof options.depth === \"number\" ? options.depth : 10;\n\n const geometry = new THREE.PlaneGeometry(width, depth);\n const material = new THREE.MeshBasicMaterial({\n color: \"#4da3ff\",\n transparent: true,\n opacity: 0.18,\n side: THREE.DoubleSide,\n depthWrite: false,\n });\n\n const object = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Teleport Area\",\n entityType: \"teleportArea\",\n // The flat-on-the-ground rotation must live in the ECS TRANSFORM, not on\n // the Object3D: createBaseEntity applies the transform over the object, and\n // TransformSyncSystem re-applies it every frame — so a rotation set\n // directly on the mesh is overwritten immediately and the area stands up\n // like a wall. Same convention as the `plane` primitive.\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? { x: -Math.PI / 2, y: 0, z: 0 },\n scale: payload.transform?.scale,\n },\n });\n\n world.addComponent(\n entityId,\n new VRTeleportAreaComponent({ width, depth, ...options }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n XRInteractorComponent,\n XRInteractorSideComponent,\n} from \"../../components/XRInteractor\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR interactor and its two hand slots.\n *\n * The children exist so authors have somewhere to PUT custom hand content: drop\n * a mesh under \"Left Interactor\" and it renders at the left hand, with no\n * scripting. Both slots are created up front — discovering you have to\n * hand-build them would be a poor first experience, and their names are what\n * make the hierarchy self-explanatory.\n */\nexport function createXRInteractor({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const root = new THREE.Group();\n const options = (payload.options ?? {}) as Record<string, unknown>;\n\n const entityId = createBaseEntity(world, root, {\n label: payload.name ?? \"XR Interactor\",\n entityType: \"xrInteractor\",\n transformInput: payload.transform,\n });\n world.addComponent(entityId, new XRInteractorComponent(options));\n scene.add(root);\n\n // Skipped when hydrating: the saved scene already contains these slots (and\n // any content the author put in them), so creating a fresh pair on top would\n // add another Left/Right pair on EVERY load — which then gets saved, and\n // grows without bound.\n if (payload.skipDefaultChildren) {\n return entityId;\n }\n\n for (const side of [\"left\", \"right\"] as const) {\n const slot = new THREE.Group();\n const label = side === \"left\" ? \"Left Interactor\" : \"Right Interactor\";\n const slotEntityId = createBaseEntity(world, slot, {\n label,\n entityType: \"empty\",\n parentId: entityId,\n });\n world.addComponent(slotEntityId, new XRInteractorSideComponent({ side }));\n scene.add(slot);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIButtonComponent } from \"../../components/UIButton\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a pressable spatial button.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIButton({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Button\",\n entityType: \"uiButton\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIButtonComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIPanelComponent } from \"../../components/UIPanel\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial UI panel — the backdrop menus and HUDs are built on.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIPanel({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Panel\",\n entityType: \"uiPanel\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIPanelComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UISliderComponent } from \"../../components/UISlider\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a draggable spatial value control.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUISlider({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Slider\",\n entityType: \"uiSlider\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UISliderComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"none\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UITextComponent } from \"../../components/UIText\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial text block.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIText({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Text\",\n entityType: \"uiText\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UITextComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIToggleComponent } from \"../../components/UIToggle\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates an on/off spatial switch.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIToggle({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Toggle\",\n entityType: \"uiToggle\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIToggleComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { XRRigComponent } from \"../../components/XRRig\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR rig — the player's movable origin.\n *\n * A plain `Group`, because the rig's whole job is to be a transform the\n * locomotion system can move: three renders the headset as\n * `rig.matrixWorld × headPose`, so moving this group moves the player. The\n * scene's camera entity should be parented to it.\n */\nexport function createXRRig({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"XR Rig\",\n entityType: \"xrRig\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new XRRigComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createSpriteComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSprite({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Sprite\",\n entityType: \"sprite\",\n transformInput: payload.transform,\n });\n\n const spriteComponent = createSpriteComponent(world, entityId, imagePath);\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.SpriteMaterial({\n map: texture,\n transparent: true,\n });\n const sprite = new THREE.Sprite(material);\n sprite.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n spriteComponent.width = textureImage?.width ?? 1;\n spriteComponent.height = textureImage?.height ?? 1;\n\n anchor.add(sprite);\n spriteComponent.texture = texture;\n spriteComponent.object = sprite;\n },\n undefined,\n (error) => {\n console.error(`Failed to load sprite: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSphere({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.SphereGeometry(0.5, 24, 24);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Sphere\",\n entityType: \"sphere\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"sphere\", mesh, {\n radius: 0.5,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createVideoComponent } from \"../components\";\nimport type { VideoComponent } from \"../../components/Video\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\nfunction normalizeDistanceModel(\n value: string,\n): \"inverse\" | \"linear\" | \"exponential\" {\n const v = value.trim().toLowerCase();\n if (v === \"linear\" || v === \"exponential\") return v;\n return \"inverse\";\n}\n\ntype DistanceVideoOptions = VideoComponent[\"options\"];\n\nfunction toBool(value: unknown, fallback: boolean): boolean {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction toNumber(value: unknown, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n\n return value;\n}\n\nfunction toColor(value: unknown, fallback: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return fallback;\n }\n\n return value;\n}\n\nfunction normalizeOptions(\n input: Record<string, unknown> | undefined,\n): DistanceVideoOptions {\n return {\n autoplay: toBool(input?.autoplay, false),\n loop: toBool(input?.loop, true),\n volume: Math.max(0, Math.min(1, toNumber(input?.volume, 1))),\n width: Math.max(0.01, toNumber(input?.width, 1)),\n height: Math.max(0.01, toNumber(input?.height, 1)),\n isGreenScreen: toBool(input?.isGreenScreen, false),\n backgroundColor: toColor(input?.backgroundColor, \"#00ff00\"),\n similarity: Math.max(0.01, Math.min(1, toNumber(input?.similarity, 0.4))),\n smoothness: Math.max(0.001, Math.min(1, toNumber(input?.smoothness, 0.08))),\n spill: Math.max(0, Math.min(1, toNumber(input?.spill, 0.12))),\n positional: toBool(input?.positional, false),\n refDistance: Math.max(0, toNumber(input?.refDistance, 1)),\n distanceModel: toColor(input?.distanceModel, \"inverse\"),\n rolloffFactor: Math.max(0, toNumber(input?.rolloffFactor, 1)),\n };\n}\n\nfunction createChromaMaterial(\n texture: THREE.VideoTexture,\n options: DistanceVideoOptions,\n): THREE.ShaderMaterial {\n return new THREE.ShaderMaterial({\n uniforms: {\n tex: { value: texture },\n keyColor: { value: new THREE.Color(options.backgroundColor) },\n similarity: { value: options.similarity },\n smoothness: { value: options.smoothness },\n spill: { value: options.spill },\n },\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 uniform sampler2D tex;\n uniform vec3 keyColor;\n uniform float similarity;\n uniform float smoothness;\n uniform float spill;\n varying vec2 vUv;\n\n void main() {\n vec4 texel = texture2D(tex, vUv);\n float chromaDist = distance(texel.rgb, keyColor);\n float alpha = smoothstep(similarity, similarity + smoothness, chromaDist);\n\n float spillFactor = smoothstep(similarity, similarity + spill + smoothness, chromaDist);\n vec3 despilled = mix(vec3(dot(texel.rgb, vec3(0.299, 0.587, 0.114))), texel.rgb, spillFactor);\n\n gl_FragColor = vec4(despilled, texel.a * alpha);\n }\n `,\n transparent: true,\n side: THREE.DoubleSide,\n });\n}\n\nfunction createStandardMaterial(\n texture: THREE.VideoTexture,\n): THREE.MeshBasicMaterial {\n return new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n}\n\nfunction createVideoMesh(\n entityId: number,\n texture: THREE.VideoTexture,\n options: DistanceVideoOptions,\n): { mesh: THREE.Mesh; material: THREE.Material } {\n const geometry = new THREE.PlaneGeometry(1, 1);\n const material = options.isGreenScreen\n ? createChromaMaterial(texture, options)\n : createStandardMaterial(texture);\n const mesh = new THREE.Mesh(geometry, material);\n\n mesh.userData.entityId = entityId;\n mesh.scale.set(options.width, options.height, 1);\n\n return { mesh, material };\n}\n\nfunction applyMetadataSizing(\n video: HTMLVideoElement,\n mesh: THREE.Mesh,\n options: DistanceVideoOptions,\n): void {\n const width = video.videoWidth;\n const height = video.videoHeight;\n if (width <= 0 || height <= 0) {\n return;\n }\n\n // Respect explicit option sizing. Otherwise fall back to video aspect.\n const nextWidth = options.width > 0 ? options.width : width / height;\n const nextHeight = options.height > 0 ? options.height : 1;\n\n mesh.scale.set(nextWidth, nextHeight, 1);\n}\n\nfunction createVideoElement(\n path: string,\n options: DistanceVideoOptions,\n): HTMLVideoElement {\n const video = document.createElement(\"video\");\n video.src = path;\n video.crossOrigin = \"anonymous\";\n video.loop = options.loop;\n video.playsInline = true;\n video.preload = \"auto\";\n video.volume = options.volume;\n\n return video;\n}\n\nexport function createVideo({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n const path = payload.path ?? \"\";\n const options = normalizeOptions(payload.options);\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Video\",\n entityType: \"video\",\n transformInput: payload.transform,\n });\n\n const videoComponent = createVideoComponent(world, entityId, path, options);\n videoComponent.object = anchor;\n scene.add(anchor);\n\n if (!path || typeof document === \"undefined\") {\n return entityId;\n }\n\n const video = createVideoElement(path, options);\n const texture = new THREE.VideoTexture(video);\n texture.colorSpace = THREE.SRGBColorSpace;\n texture.needsUpdate = true;\n\n const { mesh, material } = createVideoMesh(entityId, texture, options);\n anchor.add(mesh);\n\n videoComponent.videoElement = video;\n videoComponent.texture = texture;\n videoComponent.material = material;\n videoComponent.object = mesh;\n\n video.addEventListener(\"loadedmetadata\", () => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n applyMetadataSizing(video, mesh, options);\n });\n\n // Route audio through the Web Audio API only when positional audio is\n // requested. Positional audio requires Web Audio for spatialization.\n // Non-positional video leaves the native <video> audio path intact so\n // the browser can play audio without needing the AudioContext to be\n // in \"running\" state (it is suspended until a user gesture).\n if (!isEditor && options.positional) {\n const listener = getOrCreateListener(camera);\n const audioNode = new THREE.PositionalAudio(listener);\n\n audioNode.setVolume(options.volume);\n audioNode.setRefDistance(options.refDistance);\n audioNode.setDistanceModel(normalizeDistanceModel(options.distanceModel));\n audioNode.setRolloffFactor(options.rolloffFactor);\n\n // Connects the video element's audio into the Web Audio graph.\n // After this call, video.volume acts as a pre-gain before the node —\n // reset it to 1 so the audioNode's own gain is the single source of truth.\n audioNode.setMediaElementSource(video);\n video.volume = 1;\n\n anchor.add(audioNode);\n videoComponent.audioNode = audioNode;\n }\n\n if (options.autoplay) {\n videoComponent.play(); // sets isPlaying flag; VideoSystem drives actual play()\n }\n\n return entityId;\n}\n","import type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\nimport { createAudio } from \"./objects/AudioFactory\";\nimport { createCamera } from \"./objects/CameraFactory\";\nimport { createCapsule } from \"./objects/CapsuleFactory\";\nimport { createCube } from \"./objects/CubeFactory\";\nimport { createCylinder } from \"./objects/CylinderFactory\";\nimport { createEmpty } from \"./objects/EmptyFactory\";\nimport { createImage } from \"./objects/ImageFactory\";\nimport { createImageTarget } from \"./objects/ImageTargetFactory\";\nimport { createInstancedMesh } from \"./objects/InstancedMeshFactory\";\nimport { createInstanceSlot } from \"./objects/InstanceSlotFactory\";\nimport { createAmbientLight } from \"./objects/lights/AmbientLightFactory\";\nimport { createAreaLight } from \"./objects/lights/AreaLightFactory\";\nimport { createDirectionalLight } from \"./objects/lights/DirectionalLightFactory\";\nimport { createPointLight } from \"./objects/lights/PointLightFactory\";\nimport { createSpotLight } from \"./objects/lights/SpotLightFactory\";\nimport { createModel } from \"./objects/ModelFactory\";\nimport { createPlane } from \"./objects/PlaneFactory\";\nimport { createScriptObject } from \"./objects/ScriptObjectFactory\";\nimport { createTeleportArea } from \"./objects/TeleportAreaFactory\";\nimport { createXRInteractor } from \"./objects/XRInteractorFactory\";\nimport { createUIButton } from \"./objects/UIButtonObjectFactory\";\nimport { createUIPanel } from \"./objects/UIPanelObjectFactory\";\nimport { createUISlider } from \"./objects/UISliderObjectFactory\";\nimport { createUIText } from \"./objects/UITextObjectFactory\";\nimport { createUIToggle } from \"./objects/UIToggleObjectFactory\";\nimport { createXRRig } from \"./objects/XRRigFactory\";\nimport { createSprite } from \"./objects/SpriteFactory\";\nimport { createSphere } from \"./objects/SphereFactory\";\nimport { createVideo } from \"./objects/VideoFactory\";\nimport { registerDefaultComponentFactories } from \"./registerDefaultComponentFactories\";\n\nexport function registerDefaultFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.register(\"cube\", createCube);\n objectManagementSystem.register(\"sphere\", createSphere);\n objectManagementSystem.register(\"plane\", createPlane);\n objectManagementSystem.register(\"capsule\", createCapsule);\n objectManagementSystem.register(\"cylinder\", createCylinder);\n objectManagementSystem.register(\"empty\", createEmpty);\n objectManagementSystem.register(\"model\", createModel);\n objectManagementSystem.register(\"image\", createImage);\n objectManagementSystem.register(\"imageTarget\", createImageTarget);\n objectManagementSystem.register(\"instancedMesh\", createInstancedMesh);\n objectManagementSystem.register(\"instanceSlot\", createInstanceSlot);\n objectManagementSystem.register(\"sprite\", createSprite);\n objectManagementSystem.register(\"audio\", createAudio);\n objectManagementSystem.register(\"camera\", createCamera);\n objectManagementSystem.register(\"video\", createVideo);\n objectManagementSystem.register(\"ambientLight\", createAmbientLight);\n objectManagementSystem.register(\"directionalLight\", createDirectionalLight);\n objectManagementSystem.register(\"pointLight\", createPointLight);\n objectManagementSystem.register(\"spotLight\", createSpotLight);\n objectManagementSystem.register(\"areaLight\", createAreaLight);\n objectManagementSystem.register(\"scriptObject\", createScriptObject);\n objectManagementSystem.register(\"xrRig\", createXRRig);\n objectManagementSystem.register(\"xrInteractor\", createXRInteractor);\n objectManagementSystem.register(\"teleportArea\", createTeleportArea);\n objectManagementSystem.register(\"uiPanel\", createUIPanel);\n objectManagementSystem.register(\"uiText\", createUIText);\n objectManagementSystem.register(\"uiButton\", createUIButton);\n objectManagementSystem.register(\"uiToggle\", createUIToggle);\n objectManagementSystem.register(\"uiSlider\", createUISlider);\n\n registerDefaultComponentFactories(objectManagementSystem);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { TransformComponent, Object3DRef, ParentId } from './chunk-4AK4I3QF.js';
1
+ import { TransformComponent, Object3DRef, ParentId } from './chunk-BUEKOSR5.js';
2
2
  import { __name } from './chunk-OY7ZODZP.js';
3
3
  import * as THREE2 from 'three';
4
4
  import { clone } from 'three/examples/jsm/utils/SkeletonUtils.js';
@@ -311,5 +311,5 @@ function resolveDracoDecoderPath() {
311
311
  __name(resolveDracoDecoderPath, "resolveDracoDecoderPath");
312
312
 
313
313
  export { ObjectManagementSystem, SHARED_MODEL_RESOURCE_FLAG, applyTransform, clearModelCache, cloneModelScene, createTransform, loadSharedGltf, resolveDracoDecoderPath, setDracoDecoderPath };
314
- //# sourceMappingURL=chunk-4DWZK4X4.js.map
315
- //# sourceMappingURL=chunk-4DWZK4X4.js.map
314
+ //# sourceMappingURL=chunk-WJD2VKEH.js.map
315
+ //# sourceMappingURL=chunk-WJD2VKEH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/utils/modelCache.ts","../core/systems/ObjectManagementSystem.ts","../core/utils/dracoDecoderPath.ts"],"names":["THREE","cloneWithSkeleton"],"mappings":"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","file":"chunk-WJD2VKEH.js","sourcesContent":["import * as THREE from \"three\";\nimport type { GLTF } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { clone as cloneWithSkeleton } from \"three/examples/jsm/utils/SkeletonUtils.js\";\n\n/**\n * userData flag set on geometries/materials that back shared (cached) model\n * scenes. Entity disposal must skip these — other live clones and future\n * spawns reference the same GPU resources.\n */\nexport const SHARED_MODEL_RESOURCE_FLAG = \"spatialEcsSharedModelResource\";\n\nconst modelCache = new Map<string, Promise<GLTF>>();\n\nfunction markSharedResources(root: THREE.Object3D): void {\n root.traverse((child) => {\n if (!(child instanceof THREE.Mesh)) {\n return;\n }\n if (child.geometry) {\n child.geometry.userData[SHARED_MODEL_RESOURCE_FLAG] = true;\n }\n const materials = Array.isArray(child.material)\n ? child.material\n : [child.material];\n for (const material of materials) {\n if (material) {\n material.userData[SHARED_MODEL_RESOURCE_FLAG] = true;\n }\n }\n });\n}\n\n/**\n * Load a GLTF once per URL and share the parsed result, so repeated spawns of\n * the same model skip both the fetch and the parse. The cached scene must\n * never be mounted directly (an Object3D has a single parent) — mount a\n * cloneModelScene() of it. Failed loads are evicted so a retry re-fetches.\n */\nexport function loadSharedGltf(\n url: string,\n load: () => Promise<GLTF>,\n): Promise<GLTF> {\n let pending = modelCache.get(url);\n if (!pending) {\n pending = load().then((gltf) => {\n markSharedResources(gltf.scene);\n return gltf;\n });\n pending.catch(() => {\n modelCache.delete(url);\n });\n modelCache.set(url, pending);\n }\n return pending;\n}\n\n/**\n * Skeleton-aware clone of a cached model scene for mounting. Geometries and\n * materials are shared with the cached original (marked via\n * SHARED_MODEL_RESOURCE_FLAG); the object hierarchy — including rebound\n * skeletons for skinned meshes — is fresh per call.\n */\nexport function cloneModelScene(scene: THREE.Object3D): THREE.Object3D {\n return cloneWithSkeleton(scene);\n}\n\n/**\n * Forget cached models (one URL, or everything). Subsequent loads fetch and\n * parse anew. Does not dispose GPU resources — live clones may still use them.\n */\nexport function clearModelCache(url?: string): void {\n if (typeof url === \"string\") {\n modelCache.delete(url);\n return;\n }\n modelCache.clear();\n}\n","import * as THREE from \"three\";\n\nimport { Object3DRef } from \"../components/Object3DRef\";\nimport { ParentId } from \"../components/ParentId\";\nimport type { TransformData } from \"../components/Transform\";\nimport { TransformComponent } from \"../components/Transform\";\nimport type { EcsSystem } from \"../System\";\nimport { SHARED_MODEL_RESOURCE_FLAG } from \"../utils/modelCache\";\nimport type { World } from \"../World\";\nimport type { EntityId, EcsEntityKind } from \"../types\";\n\nexport type CreatePayload = {\n name?: string;\n transform?: TransformData;\n parentId?: EntityId | null;\n path?: string;\n options?: Record<string, unknown>;\n camera?: Record<string, unknown>;\n useWorldCamera?: boolean;\n /**\n * Suppress the default child entities a factory would otherwise create.\n *\n * Set during hydration: the snapshot already contains those children, so\n * letting the factory add its own too duplicates them on every load.\n */\n skipDefaultChildren?: boolean;\n};\n\nexport type CreateContext = {\n world: World;\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera;\n payload: CreatePayload;\n isEditor?: boolean;\n};\n\nexport type EntityFactory = (context: CreateContext) => EntityId;\n\nexport type EcsComponentFactoryKind =\n | \"animation\"\n | \"audio\"\n | \"camera\"\n | \"environment\"\n | \"entityType\"\n | \"image\"\n | \"imageTargetAnchor\"\n | \"imageTarget\"\n | \"light\"\n | \"material\"\n | \"mesh\"\n | \"meshGeometry\"\n | \"model\"\n | \"name\"\n | \"object3DRef\"\n | \"parentId\"\n | \"physics\"\n | \"postprocessing\"\n | \"script\"\n | \"scriptObject\"\n | \"selectable\"\n | \"selectionTransformState\"\n | \"sprite\"\n | \"transform\"\n | \"video\"\n | \"instancedMesh\"\n | \"xrRig\"\n | \"vrTeleportArea\"\n | \"xrHandPose\"\n | \"xrAnchor\"\n | \"uiPanel\"\n | \"uiText\"\n | \"uiButton\"\n | \"uiToggle\"\n | \"uiSlider\"\n | \"xrInteractable\"\n | \"xrInteractor\"\n | \"xrInteractorSide\";\n\nexport type ComponentFactory = (\n world: World,\n entityId: EntityId,\n ...args: any[]\n) => unknown;\n\ntype CreateRequest = {\n kind: EcsEntityKind;\n payload: CreatePayload;\n onCreated?: (entityId: EntityId) => void;\n};\n\nexport function createTransform(input?: TransformData): TransformComponent {\n return new TransformComponent(input);\n}\n\nexport function applyTransform(\n object: THREE.Object3D,\n transform: TransformComponent,\n): void {\n object.position.set(\n transform.position.x,\n transform.position.y,\n transform.position.z,\n );\n object.rotation.set(\n transform.rotation.x,\n transform.rotation.y,\n transform.rotation.z,\n );\n object.scale.set(transform.scale.x, transform.scale.y, transform.scale.z);\n}\n\nexport class ObjectManagementSystem implements EcsSystem {\n private readonly scene: THREE.Scene;\n private readonly camera: THREE.PerspectiveCamera;\n private readonly isEditor: boolean;\n private readonly registry = new Map<EcsEntityKind, EntityFactory>();\n private readonly componentRegistry = new Map<\n EcsComponentFactoryKind,\n ComponentFactory\n >();\n private readonly createQueue: CreateRequest[] = [];\n\n constructor(\n scene: THREE.Scene,\n camera: THREE.PerspectiveCamera,\n isEditor = false,\n ) {\n this.scene = scene;\n this.camera = camera;\n this.isEditor = isEditor;\n }\n\n register(kind: EcsEntityKind, factory: EntityFactory): void {\n this.registry.set(kind, factory);\n }\n\n registerComponentFactory(\n kind: EcsComponentFactoryKind,\n factory: ComponentFactory,\n ): void {\n this.componentRegistry.set(kind, factory);\n }\n\n getOrCreateAudioListener(): THREE.AudioListener {\n const existing = this.camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n this.camera.add(listener);\n this.camera.userData.ecsAudioListener = listener;\n return listener;\n }\n\n isEditorMode(): boolean {\n return this.isEditor;\n }\n\n getComponentFactory(kind: EcsComponentFactoryKind): ComponentFactory | null {\n return this.componentRegistry.get(kind) ?? null;\n }\n\n createComponentNow(\n kind: EcsComponentFactoryKind,\n world: World,\n entityId: EntityId,\n ...args: any[]\n ): unknown {\n const factory = this.componentRegistry.get(kind);\n if (!factory) {\n throw new Error(`Unknown component kind: ${kind}`);\n }\n\n return factory(world, entityId, ...args);\n }\n\n requestCreate(\n kind: EcsEntityKind,\n payload: CreatePayload = {},\n onCreated?: (entityId: EntityId) => void,\n ): void {\n this.createQueue.push({ kind, payload, onCreated });\n }\n\n createNow(\n kind: EcsEntityKind,\n world: World,\n payload: CreatePayload = {},\n ): EntityId {\n const factory = this.registry.get(kind);\n if (!factory) {\n throw new Error(`Unknown object kind: ${kind}`);\n }\n\n const entityId = factory({\n world,\n scene: this.scene,\n camera: this.camera,\n payload,\n isEditor: this.isEditor,\n });\n\n const object = world.getComponent(entityId, Object3DRef)?.object;\n if (object) {\n object.userData.ecsKind = kind;\n }\n\n if (payload.parentId !== undefined) {\n world.addComponent(entityId, new ParentId(payload.parentId));\n }\n\n return entityId;\n }\n\n /**\n * Removes an entity from the ECS world and its associated `Object3D` from the\n * THREE.js scene graph.\n *\n * @param world - The world the entity belongs to.\n * @param entityId - The entity to remove.\n * @param dispose - When `true`, traverses the entity's `Object3D` subtree and\n * calls `.dispose()` on every `BufferGeometry` and `Material` found. Pass\n * `true` when the entity will not be reused and you want to free GPU memory\n * immediately (e.g. dynamically spawned objects). Defaults to `false`.\n * @returns `true` if the entity existed and was removed; `false` if the entity\n * was not found.\n *\n * @example\n * ```ts\n * // Remove from scene, keep GPU resources (safe if geometry is shared)\n * objects.deleteEntity(world, entityId);\n *\n * // Remove from scene and free GPU memory (use for one-off spawned objects)\n * objects.deleteEntity(world, entityId, true);\n * ```\n */\n deleteEntity(world: World, entityId: EntityId, dispose = false): boolean {\n if (!world.hasEntity(entityId)) {\n return false;\n }\n\n const object3d = world.getComponent(entityId, Object3DRef)?.object;\n if (object3d?.parent) {\n object3d.parent.remove(object3d);\n }\n\n if (dispose && object3d) {\n object3d.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n // Resources backing shared (cached) model scenes are skipped —\n // other live clones and future spawns reference the same objects.\n if (!child.geometry?.userData?.[SHARED_MODEL_RESOURCE_FLAG]) {\n child.geometry?.dispose();\n }\n const materials = Array.isArray(child.material)\n ? child.material\n : [child.material];\n for (const mat of materials) {\n if (mat && !mat.userData?.[SHARED_MODEL_RESOURCE_FLAG]) {\n mat.dispose();\n }\n }\n }\n });\n }\n\n world.destroyEntity(entityId);\n return true;\n }\n\n setParent(\n world: World,\n entityId: EntityId,\n parentId: EntityId | null,\n options?: {\n preserveWorldTransform?: boolean;\n },\n ): boolean {\n if (!world.hasEntity(entityId)) {\n return false;\n }\n\n if (parentId !== null && !world.hasEntity(parentId)) {\n return false;\n }\n\n if (parentId === entityId) {\n return false;\n }\n\n let ancestor = parentId;\n while (ancestor !== null) {\n if (ancestor === entityId) {\n return false;\n }\n\n ancestor = world.getComponent(ancestor, ParentId)?.value ?? null;\n }\n\n const parentComponent = world.getComponent(entityId, ParentId);\n if (parentComponent) {\n if (parentComponent.value === parentId) {\n return false;\n }\n\n parentComponent.value = parentId;\n } else {\n world.addComponent(entityId, new ParentId(parentId));\n }\n\n const preserveWorldTransform = options?.preserveWorldTransform ?? true;\n if (preserveWorldTransform) {\n const object = world.getComponent(entityId, Object3DRef)?.object;\n const parentObject =\n parentId !== null\n ? world.getComponent(parentId, Object3DRef)?.object ?? null\n : null;\n\n if (object) {\n // Refresh matrixWorld before attach so world-space preservation is accurate.\n this.scene.updateMatrixWorld(true);\n\n if (parentObject && parentObject !== object) {\n parentObject.attach(object);\n } else {\n this.scene.attach(object);\n }\n\n object.updateMatrixWorld(true);\n this.syncTransformComponentFromObject(world, entityId, object);\n }\n }\n\n this.reconcileSceneFromWorld(world);\n return true;\n }\n\n private syncTransformComponentFromObject(\n world: World,\n entityId: EntityId,\n object: THREE.Object3D,\n ): void {\n const transform = world.getComponent(entityId, TransformComponent);\n if (!transform) {\n return;\n }\n\n transform.position.x = object.position.x;\n transform.position.y = object.position.y;\n transform.position.z = object.position.z;\n\n transform.rotation.x = object.rotation.x;\n transform.rotation.y = object.rotation.y;\n transform.rotation.z = object.rotation.z;\n\n transform.scale.x = object.scale.x;\n transform.scale.y = object.scale.y;\n transform.scale.z = object.scale.z;\n }\n\n reconcileSceneFromWorld(world: World): void {\n const worldObjects = new Map<EntityId, THREE.Object3D>();\n const entityIds = world.query(Object3DRef);\n\n for (const entityId of entityIds) {\n const object = world.getComponent(entityId, Object3DRef)?.object;\n if (!object) {\n continue;\n }\n\n worldObjects.set(entityId, object);\n }\n\n for (const child of [...this.scene.children]) {\n const entityId = child.userData?.entityId;\n if (typeof entityId === \"number\" && !world.hasEntity(entityId)) {\n this.scene.remove(child);\n }\n }\n\n for (const [entityId, object] of worldObjects.entries()) {\n const parentEntityId = world.getComponent(entityId, ParentId)?.value;\n const parentObject =\n typeof parentEntityId === \"number\"\n ? worldObjects.get(parentEntityId)\n : undefined;\n\n if (parentObject && parentObject !== object) {\n if (object.parent !== parentObject) {\n // Reconcile hierarchy from ParentId while keeping Transform as local source of truth.\n parentObject.add(object);\n object.updateMatrixWorld(true);\n }\n continue;\n }\n\n if (object.parent !== this.scene) {\n // Reconcile hierarchy from ParentId while keeping Transform as local source of truth.\n this.scene.add(object);\n object.updateMatrixWorld(true);\n }\n }\n }\n\n update(world: World): void {\n for (const request of this.createQueue.splice(0)) {\n const entityId = this.createNow(request.kind, world, request.payload);\n request.onCreated?.(entityId);\n }\n\n this.reconcileSceneFromWorld(world);\n }\n}\n","const LOCAL_DRACO_DECODER_RELATIVE_PATH = \"./assets/draco/\";\nexport const DRACO_DECODER_CDN_PATH =\n \"https://www.gstatic.com/draco/versioned/decoders/1.5.7/\";\n\nlet dracoDecoderPathOverride: string | null = null;\n\n/**\n * Override where the DRACO decoder files (draco_wasm_wrapper.js,\n * draco_decoder.wasm, draco_decoder.js) are fetched from. Embedding apps\n * whose bundlers relocate this package's chunks — making the default\n * import.meta.url resolution point at a location that is never populated —\n * should call this before any model loads. The path must end with \"/\".\n * Pass null to restore the default resolution.\n */\nexport function setDracoDecoderPath(path: string | null): void {\n dracoDecoderPathOverride = path;\n}\n\nfunction isBlockedBrowserFileUrl(url: string): boolean {\n return url.startsWith(\"file://\");\n}\n\nexport function resolveDracoDecoderPath(): string {\n if (dracoDecoderPathOverride) {\n return dracoDecoderPathOverride;\n }\n\n try {\n // Prefer vendored decoder assets shipped with this package.\n const resolvedPath = new URL(\n LOCAL_DRACO_DECODER_RELATIVE_PATH,\n import.meta.url,\n ).toString();\n\n // Browser loaders cannot fetch file:// resources from package install paths.\n // Fall back to CDN decoders when bundlers emit file URLs for node_modules assets.\n if (isBlockedBrowserFileUrl(resolvedPath)) {\n return DRACO_DECODER_CDN_PATH;\n }\n\n return resolvedPath;\n } catch {\n // Fallback keeps compatibility in runtimes that cannot resolve package-relative URLs.\n return DRACO_DECODER_CDN_PATH;\n }\n}\n"]}
@@ -2005,6 +2005,100 @@ var _XRAnchorComponent = class _XRAnchorComponent extends Component {
2005
2005
  __name(_XRAnchorComponent, "XRAnchorComponent");
2006
2006
  var XRAnchorComponent = _XRAnchorComponent;
2007
2007
 
2008
+ // core/components/UIPanel.ts
2009
+ var _UIPanelComponent = class _UIPanelComponent extends Component {
2010
+ constructor(options) {
2011
+ super();
2012
+ this.width = options?.width ?? 0.6;
2013
+ this.height = options?.height ?? 0.4;
2014
+ this.backgroundColor = options?.backgroundColor ?? "#1c1c1c";
2015
+ this.backgroundOpacity = options?.backgroundOpacity ?? 0.92;
2016
+ this.cornerRadius = options?.cornerRadius ?? 0.02;
2017
+ this.borderWidth = options?.borderWidth ?? 0;
2018
+ this.borderColor = options?.borderColor ?? "#333333";
2019
+ this.pixelDensity = options?.pixelDensity ?? 1024;
2020
+ this.follow = options?.follow ?? "world";
2021
+ }
2022
+ };
2023
+ __name(_UIPanelComponent, "UIPanelComponent");
2024
+ var UIPanelComponent = _UIPanelComponent;
2025
+
2026
+ // core/components/UIText.ts
2027
+ var _UITextComponent = class _UITextComponent extends Component {
2028
+ constructor(options) {
2029
+ super();
2030
+ this.text = options?.text ?? "Text";
2031
+ this.width = options?.width ?? 0.5;
2032
+ this.height = options?.height ?? 0.12;
2033
+ this.fontSize = options?.fontSize ?? 0.035;
2034
+ this.fontWeight = options?.fontWeight ?? 500;
2035
+ this.color = options?.color ?? "#ffffff";
2036
+ this.align = options?.align ?? "center";
2037
+ this.valign = options?.valign ?? "middle";
2038
+ this.lineHeight = options?.lineHeight ?? 1.25;
2039
+ this.padding = options?.padding ?? 0.01;
2040
+ }
2041
+ };
2042
+ __name(_UITextComponent, "UITextComponent");
2043
+ var UITextComponent = _UITextComponent;
2044
+
2045
+ // core/components/UIButton.ts
2046
+ var _UIButtonComponent = class _UIButtonComponent extends Component {
2047
+ constructor(options) {
2048
+ super();
2049
+ this.label = options?.label ?? "Button";
2050
+ this.actionId = options?.actionId ?? "";
2051
+ this.width = options?.width ?? 0.3;
2052
+ this.height = options?.height ?? 0.1;
2053
+ this.fontSize = options?.fontSize ?? 0.03;
2054
+ this.fontWeight = options?.fontWeight ?? 600;
2055
+ this.textColor = options?.textColor ?? "#ffffff";
2056
+ this.backgroundColor = options?.backgroundColor ?? "#2a2a2a";
2057
+ this.backgroundOpacity = options?.backgroundOpacity ?? 1;
2058
+ this.cornerRadius = options?.cornerRadius ?? 0.02;
2059
+ this.borderWidth = options?.borderWidth ?? 2e-3;
2060
+ this.borderColor = options?.borderColor ?? "#3a3a3a";
2061
+ }
2062
+ };
2063
+ __name(_UIButtonComponent, "UIButtonComponent");
2064
+ var UIButtonComponent = _UIButtonComponent;
2065
+
2066
+ // core/components/UIToggle.ts
2067
+ var _UIToggleComponent = class _UIToggleComponent extends Component {
2068
+ constructor(options) {
2069
+ super();
2070
+ this.value = options?.value ?? false;
2071
+ this.actionId = options?.actionId ?? "";
2072
+ this.width = options?.width ?? 0.14;
2073
+ this.height = options?.height ?? 0.07;
2074
+ this.trackColor = options?.trackColor ?? "#2a2a2a";
2075
+ this.accentColor = options?.accentColor ?? "#ff6b35";
2076
+ this.knobColor = options?.knobColor ?? "#ffffff";
2077
+ }
2078
+ };
2079
+ __name(_UIToggleComponent, "UIToggleComponent");
2080
+ var UIToggleComponent = _UIToggleComponent;
2081
+
2082
+ // core/components/UISlider.ts
2083
+ var _UISliderComponent = class _UISliderComponent extends Component {
2084
+ constructor(options) {
2085
+ super();
2086
+ this.min = options?.min ?? 0;
2087
+ this.max = options?.max ?? Math.max(1, this.min + 1);
2088
+ if (this.max <= this.min) this.max = this.min + 1;
2089
+ const v = options?.value ?? (this.min + this.max) / 2;
2090
+ this.value = Math.min(this.max, Math.max(this.min, v));
2091
+ this.actionId = options?.actionId ?? "";
2092
+ this.width = options?.width ?? 0.4;
2093
+ this.height = options?.height ?? 0.06;
2094
+ this.trackColor = options?.trackColor ?? "#2a2a2a";
2095
+ this.accentColor = options?.accentColor ?? "#ff6b35";
2096
+ this.knobColor = options?.knobColor ?? "#ffffff";
2097
+ }
2098
+ };
2099
+ __name(_UISliderComponent, "UISliderComponent");
2100
+ var UISliderComponent = _UISliderComponent;
2101
+
2008
2102
  // core/components/XRInteractor.ts
2009
2103
  var _XRInteractorComponent = class _XRInteractorComponent extends Component {
2010
2104
  constructor(options) {
@@ -2168,6 +2262,11 @@ exports.Selectable = Selectable;
2168
2262
  exports.SelectionTransformState = SelectionTransformState;
2169
2263
  exports.SpriteComponent = SpriteComponent;
2170
2264
  exports.TransformComponent = TransformComponent;
2265
+ exports.UIButtonComponent = UIButtonComponent;
2266
+ exports.UIPanelComponent = UIPanelComponent;
2267
+ exports.UISliderComponent = UISliderComponent;
2268
+ exports.UITextComponent = UITextComponent;
2269
+ exports.UIToggleComponent = UIToggleComponent;
2171
2270
  exports.VRTeleportAreaComponent = VRTeleportAreaComponent;
2172
2271
  exports.VideoComponent = VideoComponent;
2173
2272
  exports.XRAnchorComponent = XRAnchorComponent;