@relu-interactives/spatial-ecs 0.5.2 → 0.8.0

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 (511) hide show
  1. package/dist/{System-V_mv07le.d.cts → System-8D-XBDKZ.d.cts} +734 -8
  2. package/dist/{System-V_mv07le.d.ts → System-DPMAW30g.d.ts} +734 -8
  3. package/dist/{XRHandPose-CU3vNFuS.d.ts → XRHandPose-G0Dl-F0w.d.ts} +93 -3
  4. package/dist/{XRHandPose-CQTLGxFC.d.cts → XRHandPose-VQMT1WXj.d.cts} +93 -3
  5. package/dist/animation/index.cjs +252 -0
  6. package/dist/animation/index.cjs.map +1 -0
  7. package/dist/animation/index.d.cts +100 -0
  8. package/dist/animation/index.d.ts +100 -0
  9. package/dist/animation/index.js +4 -0
  10. package/dist/animation/index.js.map +1 -0
  11. package/dist/chunk-CKTHDXPS.js +11 -0
  12. package/dist/chunk-CKTHDXPS.js.map +1 -0
  13. package/dist/chunk-G4XJ53LS.js +1237 -0
  14. package/dist/chunk-G4XJ53LS.js.map +1 -0
  15. package/dist/chunk-GSWC6LLD.js +241 -0
  16. package/dist/chunk-GSWC6LLD.js.map +1 -0
  17. package/dist/{chunk-DF5SSRN6.js → chunk-JIJQFW6P.js} +1216 -2920
  18. package/dist/chunk-JIJQFW6P.js.map +1 -0
  19. package/dist/{chunk-BUEKOSR5.js → chunk-NNDUOQ7O.js} +188 -14
  20. package/dist/chunk-NNDUOQ7O.js.map +1 -0
  21. package/dist/chunk-OHCNPPMX.js +334 -0
  22. package/dist/chunk-OHCNPPMX.js.map +1 -0
  23. package/dist/{chunk-RXBLOO5B.js → chunk-SGF73YTF.js} +105 -715
  24. package/dist/chunk-SGF73YTF.js.map +1 -0
  25. package/dist/chunk-U727NTWQ.js +2856 -0
  26. package/dist/chunk-U727NTWQ.js.map +1 -0
  27. package/dist/{chunk-OY7ZODZP.js → chunk-XE4OXN2W.js} +3 -9
  28. package/dist/chunk-XE4OXN2W.js.map +1 -0
  29. package/dist/{chunk-OWQSESTO.js → chunk-XU2DVWCP.js} +4 -3
  30. package/dist/chunk-XU2DVWCP.js.map +1 -0
  31. package/dist/components/index.cjs +183 -10
  32. package/dist/components/index.cjs.map +1 -1
  33. package/dist/components/index.d.cts +5 -3
  34. package/dist/components/index.d.ts +5 -3
  35. package/dist/components/index.js +3 -2
  36. package/dist/docs/api/Behaviour/classes/Behaviour.md +366 -79
  37. package/dist/docs/api/Behaviour/index.md +7 -3
  38. package/dist/docs/api/Behaviour/type-aliases/UiInteractionEvent.md +35 -0
  39. package/dist/docs/api/Component/classes/Component.md +14 -1
  40. package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
  41. package/dist/docs/api/components/classes/AudioComponent.md +19 -19
  42. package/dist/docs/api/components/classes/CameraComponent.md +14 -14
  43. package/dist/docs/api/components/classes/EntityType.md +4 -4
  44. package/dist/docs/api/components/classes/Environment.md +5 -4
  45. package/dist/docs/api/components/classes/ImageComponent.md +7 -7
  46. package/dist/docs/api/components/classes/ImageTarget.md +8 -8
  47. package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
  48. package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
  49. package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
  50. package/dist/docs/api/components/classes/LightComponent.md +6 -6
  51. package/dist/docs/api/components/classes/MaterialComponent.md +16 -16
  52. package/dist/docs/api/components/classes/MeshComponent.md +3 -3
  53. package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
  54. package/dist/docs/api/components/classes/ModelComponent.md +8 -5
  55. package/dist/docs/api/components/classes/Name.md +3 -3
  56. package/dist/docs/api/components/classes/Object3DRef.md +4 -4
  57. package/dist/docs/api/components/classes/ParentId.md +3 -3
  58. package/dist/docs/api/components/classes/PhysicsComponent.md +7 -6
  59. package/dist/docs/api/components/classes/Postprocessing.md +3 -3
  60. package/dist/docs/api/components/classes/PrefabInstance.md +5 -5
  61. package/dist/docs/api/components/classes/PrefabNode.md +3 -3
  62. package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
  63. package/dist/docs/api/components/classes/ScriptObjectComponent.md +9 -9
  64. package/dist/docs/api/components/classes/Selectable.md +3 -3
  65. package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
  66. package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
  67. package/dist/docs/api/components/classes/TransformComponent.md +12 -12
  68. package/dist/docs/api/components/classes/UIButtonComponent.md +63 -0
  69. package/dist/docs/api/components/classes/UIPanelComponent.md +62 -0
  70. package/dist/docs/api/components/classes/UISliderComponent.md +59 -0
  71. package/dist/docs/api/components/classes/UITextComponent.md +59 -0
  72. package/dist/docs/api/components/classes/UIToggleComponent.md +56 -0
  73. package/dist/docs/api/components/classes/VRTeleportAreaComponent.md +53 -0
  74. package/dist/docs/api/components/classes/VideoComponent.md +28 -28
  75. package/dist/docs/api/components/classes/XRAnchorComponent.md +64 -0
  76. package/dist/docs/api/components/classes/XREnvironmentComponent.md +64 -0
  77. package/dist/docs/api/components/classes/XRHandPoseComponent.md +50 -0
  78. package/dist/docs/api/components/classes/XRInteractableComponent.md +74 -0
  79. package/dist/docs/api/components/classes/XRInteractorComponent.md +57 -0
  80. package/dist/docs/api/components/classes/XRInteractorSideComponent.md +50 -0
  81. package/dist/docs/api/components/classes/XRRigComponent.md +68 -0
  82. package/dist/docs/api/components/functions/createAttachPoint.md +25 -0
  83. package/dist/docs/api/components/functions/createHandPoseEntry.md +25 -0
  84. package/dist/docs/api/components/functions/defaultMaterialValue.md +1 -1
  85. package/dist/docs/api/components/functions/handPoseDefinitionFor.md +33 -0
  86. package/dist/docs/api/components/functions/normalizeEnvironmentLighting.md +30 -0
  87. package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
  88. package/dist/docs/api/components/functions/setModelLoadState.md +33 -0
  89. package/dist/docs/api/components/functions/setPhysicsLiveRef.md +3 -9
  90. package/dist/docs/api/components/index.md +61 -4
  91. package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
  92. package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
  93. package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
  94. package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +5 -3
  95. package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
  96. package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
  97. package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
  98. package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
  99. package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
  100. package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
  101. package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
  102. package/dist/docs/api/components/type-aliases/EnvironmentLightingState.md +40 -0
  103. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxImageProjection.md +22 -0
  104. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +9 -7
  105. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
  106. package/dist/docs/api/components/type-aliases/EnvironmentState.md +7 -5
  107. package/dist/docs/api/components/type-aliases/EnvironmentToneMapping.md +16 -0
  108. package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
  109. package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
  110. package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
  111. package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
  112. package/dist/docs/api/components/type-aliases/LightShadowState.md +37 -0
  113. package/dist/docs/api/components/type-aliases/LightValueState.md +13 -11
  114. package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
  115. package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
  116. package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
  117. package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
  118. package/dist/docs/api/components/type-aliases/ModelLoadState.md +15 -0
  119. package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
  120. package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
  121. package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
  122. package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
  123. package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
  124. package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
  125. package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
  126. package/dist/docs/api/components/type-aliases/ScriptEntry.md +8 -8
  127. package/dist/docs/api/components/type-aliases/ScriptObjectComponentInput.md +1 -1
  128. package/dist/docs/api/components/type-aliases/ScriptObjectRuntimeState.md +1 -1
  129. package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
  130. package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
  131. package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
  132. package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
  133. package/dist/docs/api/components/type-aliases/UIButtonOptions.md +45 -0
  134. package/dist/docs/api/components/type-aliases/UIPanelOptions.md +39 -0
  135. package/dist/docs/api/components/type-aliases/UISliderOptions.md +39 -0
  136. package/dist/docs/api/components/type-aliases/UITextOptions.md +41 -0
  137. package/dist/docs/api/components/type-aliases/UIToggleOptions.md +35 -0
  138. package/dist/docs/api/components/type-aliases/UiFollowMode.md +15 -0
  139. package/dist/docs/api/components/type-aliases/UiTextAlign.md +13 -0
  140. package/dist/docs/api/components/type-aliases/UiTextVAlign.md +13 -0
  141. package/dist/docs/api/components/type-aliases/VRTeleportAreaOptions.md +29 -0
  142. package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
  143. package/dist/docs/api/components/type-aliases/VrTeleportShape.md +15 -0
  144. package/dist/docs/api/components/type-aliases/XRAnchorOptions.md +23 -0
  145. package/dist/docs/api/components/type-aliases/XRHandPoseOptions.md +23 -0
  146. package/dist/docs/api/components/type-aliases/XRInteractableOptions.md +75 -0
  147. package/dist/docs/api/components/type-aliases/XRInteractorOptions.md +37 -0
  148. package/dist/docs/api/components/type-aliases/XRRigOptions.md +51 -0
  149. package/dist/docs/api/components/type-aliases/XrAttachPoint.md +53 -0
  150. package/dist/docs/api/components/type-aliases/XrDistanceGrabBehavior.md +19 -0
  151. package/dist/docs/api/components/type-aliases/XrEnvironmentKind.md +15 -0
  152. package/dist/docs/api/components/type-aliases/XrEnvironmentOrientation.md +15 -0
  153. package/dist/docs/api/components/type-aliases/XrEnvironmentPhysics.md +25 -0
  154. package/dist/docs/api/components/type-aliases/XrGrabGesture.md +19 -0
  155. package/dist/docs/api/components/type-aliases/XrGrabHands.md +20 -0
  156. package/dist/docs/api/components/type-aliases/XrGrabReach.md +20 -0
  157. package/dist/docs/api/components/type-aliases/XrHandPoseEntry.md +49 -0
  158. package/dist/docs/api/components/type-aliases/XrHandPreset.md +19 -0
  159. package/dist/docs/api/components/type-aliases/XrInteractorSide.md +15 -0
  160. package/dist/docs/api/components/type-aliases/XrInteractorType.md +13 -0
  161. package/dist/docs/api/components/type-aliases/XrLocomotionMode.md +15 -0
  162. package/dist/docs/api/components/type-aliases/XrTrackingOrigin.md +24 -0
  163. package/dist/docs/api/components/type-aliases/XrTwoHandRotation.md +15 -0
  164. package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
  165. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_LIGHTING.md +15 -0
  166. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
  167. package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
  168. package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
  169. package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
  170. package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
  171. package/dist/docs/api/components/variables/DEFAULT_POSE_CURLS.md +13 -0
  172. package/dist/docs/api/components/variables/DEFAULT_POSE_DIRECTIONS.md +13 -0
  173. package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
  174. package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
  175. package/dist/docs/api/components/variables/MODEL_NO_PATH_MESSAGE.md +15 -0
  176. package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
  177. package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
  178. package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
  179. package/dist/docs/api/index/classes/AudioSystem.md +4 -4
  180. package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
  181. package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +19 -4
  182. package/dist/docs/api/index/classes/HandPoseTracker.md +114 -0
  183. package/dist/docs/api/index/classes/InputSystem.md +33 -33
  184. package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
  185. package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
  186. package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
  187. package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
  188. package/dist/docs/api/index/classes/ObjectManagementSystem.md +14 -14
  189. package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
  190. package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
  191. package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +34 -10
  192. package/dist/docs/api/index/classes/RenderSystem.md +13 -4
  193. package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +9 -5
  194. package/dist/docs/api/index/classes/ScriptObject.md +10 -10
  195. package/dist/docs/api/index/classes/ScriptObjectSystem.md +6 -6
  196. package/dist/docs/api/index/classes/TeleportAimGate.md +114 -0
  197. package/dist/docs/api/index/classes/ThrowVelocityTracker.md +89 -0
  198. package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
  199. package/dist/docs/api/index/classes/UIInteractionSystem.md +60 -0
  200. package/dist/docs/api/index/classes/UIPanelSystem.md +79 -0
  201. package/dist/docs/api/index/classes/VRTeleportAreaSystem.md +49 -0
  202. package/dist/docs/api/index/classes/VideoSystem.md +8 -6
  203. package/dist/docs/api/index/classes/World.md +282 -100
  204. package/dist/docs/api/index/classes/XRAnchorSystem.md +90 -0
  205. package/dist/docs/api/index/classes/XRControllerVisualSystem.md +77 -0
  206. package/dist/docs/api/index/classes/XREnvironmentSystem.md +137 -0
  207. package/dist/docs/api/index/classes/XRHandPoseSystem.md +107 -0
  208. package/dist/docs/api/index/classes/XRHitTestSystem.md +93 -0
  209. package/dist/docs/api/index/classes/XRHoverVisualSystem.md +76 -0
  210. package/dist/docs/api/index/classes/XRInputSystem.md +189 -0
  211. package/dist/docs/api/index/classes/XRInteractionSystem.md +323 -0
  212. package/dist/docs/api/index/classes/XRLocomotionSystem.md +128 -0
  213. package/dist/docs/api/index/classes/XRSessionSystem.md +116 -0
  214. package/dist/docs/api/index/classes/XRTeleportVisualSystem.md +75 -0
  215. package/dist/docs/api/index/functions/angularVelocityFrom.md +33 -0
  216. package/dist/docs/api/index/functions/applyHandMaterial.md +26 -0
  217. package/dist/docs/api/index/functions/applyPrefabToSnapshotInstances.md +1 -1
  218. package/dist/docs/api/index/functions/arcGroundCrossing.md +30 -0
  219. package/dist/docs/api/index/functions/buildComponentValueMaps.md +1 -1
  220. package/dist/docs/api/index/functions/buildNodeKeyMapsFromSnapshot.md +1 -1
  221. package/dist/docs/api/index/functions/buildNodeMapsFromSnapshot.md +1 -1
  222. package/dist/docs/api/index/functions/canonicalizeComponentValue.md +1 -1
  223. package/dist/docs/api/index/functions/clearModelCache.md +1 -1
  224. package/dist/docs/api/index/functions/clearPrefabCache.md +1 -1
  225. package/dist/docs/api/index/functions/cloneHandPose.md +23 -0
  226. package/dist/docs/api/index/functions/collectDiffPaths.md +1 -1
  227. package/dist/docs/api/index/functions/collectDirectPrefabDependencies.md +1 -1
  228. package/dist/docs/api/index/functions/collectEntitySubtree.md +1 -1
  229. package/dist/docs/api/index/functions/collectSnapshotSubtreeIds.md +1 -1
  230. package/dist/docs/api/index/functions/computeFingerCurl.md +29 -0
  231. package/dist/docs/api/index/functions/computeHandShape.md +29 -0
  232. package/dist/docs/api/index/functions/computeInstanceOverrides.md +1 -1
  233. package/dist/docs/api/index/functions/computePalmPose.md +30 -0
  234. package/dist/docs/api/index/functions/computePalmWidth.md +25 -0
  235. package/dist/docs/api/index/functions/computePinch.md +29 -0
  236. package/dist/docs/api/index/functions/computeSpread.md +33 -0
  237. package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
  238. package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
  239. package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
  240. package/dist/docs/api/index/functions/createEntityTypeComponent.md +2 -2
  241. package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
  242. package/dist/docs/api/index/functions/createHandMaterial.md +30 -0
  243. package/dist/docs/api/index/functions/createImageComponent.md +1 -1
  244. package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
  245. package/dist/docs/api/index/functions/createImageTargetComponent.md +2 -2
  246. package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
  247. package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
  248. package/dist/docs/api/index/functions/createLightComponent.md +2 -2
  249. package/dist/docs/api/index/functions/createMaterialComponent.md +2 -2
  250. package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
  251. package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
  252. package/dist/docs/api/index/functions/createModelComponent.md +1 -1
  253. package/dist/docs/api/index/functions/createNameComponent.md +1 -1
  254. package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
  255. package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
  256. package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
  257. package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
  258. package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
  259. package/dist/docs/api/index/functions/createScriptObjectComponent.md +1 -1
  260. package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
  261. package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
  262. package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
  263. package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
  264. package/dist/docs/api/index/functions/createUIButtonComponent.md +28 -0
  265. package/dist/docs/api/index/functions/createUIPanelComponent.md +28 -0
  266. package/dist/docs/api/index/functions/createUISliderComponent.md +28 -0
  267. package/dist/docs/api/index/functions/createUITextComponent.md +28 -0
  268. package/dist/docs/api/index/functions/createUIToggleComponent.md +28 -0
  269. package/dist/docs/api/index/functions/createVRTeleportAreaComponent.md +28 -0
  270. package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
  271. package/dist/docs/api/index/functions/createXRAnchorComponent.md +28 -0
  272. package/dist/docs/api/index/functions/createXRHandPoseComponent.md +28 -0
  273. package/dist/docs/api/index/functions/createXRInteractableComponent.md +28 -0
  274. package/dist/docs/api/index/functions/createXRInteractorComponent.md +28 -0
  275. package/dist/docs/api/index/functions/createXRInteractorSideComponent.md +28 -0
  276. package/dist/docs/api/index/functions/createXRRigComponent.md +28 -0
  277. package/dist/docs/api/index/functions/decanonicalizeComponentValue.md +1 -1
  278. package/dist/docs/api/index/functions/despawnPrefab.md +1 -1
  279. package/dist/docs/api/index/functions/encodeOverride.md +1 -1
  280. package/dist/docs/api/index/functions/estimateHandScale.md +28 -0
  281. package/dist/docs/api/index/functions/findSnapshotRootEntityIds.md +1 -1
  282. package/dist/docs/api/index/functions/findTopLevelNestedRegions.md +1 -1
  283. package/dist/docs/api/index/functions/getHandPosePreset.md +31 -0
  284. package/dist/docs/api/index/functions/groupOverridePaths.md +1 -1
  285. package/dist/docs/api/index/functions/handPoseFromCurls.md +42 -0
  286. package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
  287. package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
  288. package/dist/docs/api/index/functions/indexSnapshotByEntity.md +1 -1
  289. package/dist/docs/api/index/functions/instantiateSubtree.md +1 -1
  290. package/dist/docs/api/index/functions/loadPrefab.md +1 -1
  291. package/dist/docs/api/index/functions/loadSharedGltf.md +1 -1
  292. package/dist/docs/api/index/functions/matchHandPose.md +34 -0
  293. package/dist/docs/api/index/functions/mergeComponentValue.md +1 -1
  294. package/dist/docs/api/index/functions/parseOverride.md +1 -1
  295. package/dist/docs/api/index/functions/parsePrefabAsset.md +1 -1
  296. package/dist/docs/api/index/functions/prefabFileVersionFor.md +1 -1
  297. package/dist/docs/api/index/functions/readXrCapabilities.md +30 -0
  298. package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
  299. package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
  300. package/dist/docs/api/index/functions/remapSnapshotEntityIds.md +3 -3
  301. package/dist/docs/api/index/functions/resolveDracoDecoderPath.md +1 -1
  302. package/dist/docs/api/index/functions/restoreComponentState.md +1 -1
  303. package/dist/docs/api/index/functions/restorePostCreateComponents.md +1 -1
  304. package/dist/docs/api/index/functions/sampleTeleportArc.md +40 -0
  305. package/dist/docs/api/index/functions/serializeEntitySubtree.md +1 -1
  306. package/dist/docs/api/index/functions/setDracoDecoderPath.md +1 -1
  307. package/dist/docs/api/index/functions/setPrefabAssetUrlResolver.md +1 -1
  308. package/dist/docs/api/index/functions/spawnPrefab.md +1 -1
  309. package/dist/docs/api/index/index.md +116 -4
  310. package/dist/docs/api/index/interfaces/ChromaKeyOptions.md +20 -0
  311. package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
  312. package/dist/docs/api/index/interfaces/PostprocessingBuildContext.md +21 -0
  313. package/dist/docs/api/index/interfaces/PostprocessingPipeline.md +84 -0
  314. package/dist/docs/api/index/interfaces/RenderBackend.md +168 -0
  315. package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
  316. package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
  317. package/dist/docs/api/index/type-aliases/ApplyPrefabToSnapshotResult.md +3 -3
  318. package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
  319. package/dist/docs/api/index/type-aliases/ComponentValueMaps.md +50 -26
  320. package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +14 -2
  321. package/dist/docs/api/index/type-aliases/EcsRenderer.md +17 -0
  322. package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
  323. package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
  324. package/dist/docs/api/index/type-aliases/ExternalRefWarning.md +5 -5
  325. package/dist/docs/api/index/type-aliases/HandMaterialOptions.md +32 -0
  326. package/dist/docs/api/index/type-aliases/HandPoseTrackerOptions.md +27 -0
  327. package/dist/docs/api/index/type-aliases/HydrateOptions.md +3 -3
  328. package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +4 -4
  329. package/dist/docs/api/index/type-aliases/InstantiateSubtreeResult.md +3 -3
  330. package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
  331. package/dist/docs/api/index/type-aliases/ModuleLoader.md +1 -1
  332. package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
  333. package/dist/docs/api/index/type-aliases/NestedRegion.md +5 -5
  334. package/dist/docs/api/index/type-aliases/NodeKeyMaps.md +5 -5
  335. package/dist/docs/api/index/type-aliases/NodeMaps.md +4 -4
  336. package/dist/docs/api/index/type-aliases/PrefabAsset.md +5 -5
  337. package/dist/docs/api/index/type-aliases/RemapSnapshotOptions.md +2 -2
  338. package/dist/docs/api/index/type-aliases/RendererKind.md +15 -0
  339. package/dist/docs/api/index/type-aliases/ScriptBehaviourSystemOptions.md +23 -0
  340. package/dist/docs/api/index/type-aliases/ScriptErrorEvent.md +39 -0
  341. package/dist/docs/api/index/type-aliases/ScriptErrorListener.md +25 -0
  342. package/dist/docs/api/index/type-aliases/ScriptErrorPhase.md +28 -0
  343. package/dist/docs/api/index/type-aliases/ScriptErrorReport.md +31 -0
  344. package/dist/docs/api/index/type-aliases/ScriptErrorSource.md +15 -0
  345. package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
  346. package/dist/docs/api/index/type-aliases/SerializeEntitySubtreeResult.md +4 -4
  347. package/dist/docs/api/index/type-aliases/SpawnPrefabOptions.md +5 -5
  348. package/dist/docs/api/index/type-aliases/SpawnPrefabSource.md +1 -1
  349. package/dist/docs/api/index/type-aliases/SubtreeSnapshot.md +3 -3
  350. package/dist/docs/api/index/type-aliases/UiCanvasLike.md +46 -0
  351. package/dist/docs/api/index/type-aliases/VelocitySample.md +23 -0
  352. package/dist/docs/api/index/type-aliases/XrCapabilities.md +41 -0
  353. package/dist/docs/api/index/type-aliases/XrFinger.md +13 -0
  354. package/dist/docs/api/index/type-aliases/XrFingerCurl.md +27 -0
  355. package/dist/docs/api/index/type-aliases/XrFingerTarget.md +31 -0
  356. package/dist/docs/api/index/type-aliases/XrHandJointName.md +40 -0
  357. package/dist/docs/api/index/type-aliases/XrHandJoints.md +18 -0
  358. package/dist/docs/api/index/type-aliases/XrHandPoseAxis.md +15 -0
  359. package/dist/docs/api/index/type-aliases/XrHandPoseContext.md +23 -0
  360. package/dist/docs/api/index/type-aliases/XrHandPoseDefinition.md +47 -0
  361. package/dist/docs/api/index/type-aliases/XrHandPoseDirection.md +21 -0
  362. package/dist/docs/api/index/type-aliases/XrHandPoseEvent.md +13 -0
  363. package/dist/docs/api/index/type-aliases/XrHandPoseEventDetail.md +27 -0
  364. package/dist/docs/api/index/type-aliases/XrHandPoseMatch.md +25 -0
  365. package/dist/docs/api/index/type-aliases/XrHandPoseOrientation.md +25 -0
  366. package/dist/docs/api/index/type-aliases/XrHandShape.md +46 -0
  367. package/dist/docs/api/index/type-aliases/XrHandedness.md +15 -0
  368. package/dist/docs/api/index/type-aliases/XrHitResult.md +25 -0
  369. package/dist/docs/api/index/type-aliases/XrInputKind.md +19 -0
  370. package/dist/docs/api/index/type-aliases/XrInputState.md +60 -0
  371. package/dist/docs/api/index/type-aliases/XrPalmPose.md +31 -0
  372. package/dist/docs/api/index/variables/ADDED_NODE_MARKER_COMPONENT.md +2 -2
  373. package/dist/docs/api/index/variables/ARC_GRAVITY.md +15 -0
  374. package/dist/docs/api/index/variables/ARC_MAX_TIME.md +15 -0
  375. package/dist/docs/api/index/variables/ARC_SPEED.md +15 -0
  376. package/dist/docs/api/index/variables/ARC_STEPS.md +15 -0
  377. package/dist/docs/api/index/variables/CURLED_COS.md +13 -0
  378. package/dist/docs/api/index/variables/DEFAULT_DIRECTION_TOLERANCE.md +15 -0
  379. package/dist/docs/api/index/variables/DEFAULT_ENTER_CONFIDENCE.md +13 -0
  380. package/dist/docs/api/index/variables/DEFAULT_EXIT_CONFIDENCE.md +13 -0
  381. package/dist/docs/api/index/variables/DEFAULT_LOST_GRACE_SECONDS.md +13 -0
  382. package/dist/docs/api/index/variables/DEFAULT_MIN_HOLD_SECONDS.md +13 -0
  383. package/dist/docs/api/index/variables/DEFAULT_SCRIPT_ERROR_RETRY_DELAY.md +17 -0
  384. package/dist/docs/api/index/variables/FALLBACK_HAND_SCALE.md +15 -0
  385. package/dist/docs/api/index/variables/HAND_POSE_PRESETS.md +19 -0
  386. package/dist/docs/api/index/variables/HAND_POSE_PRESET_IDS.md +15 -0
  387. package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
  388. package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
  389. package/dist/docs/api/index/variables/MATCH_FALLOFF.md +15 -0
  390. package/dist/docs/api/index/variables/MAX_PLAUSIBLE_SPEED.md +25 -0
  391. package/dist/docs/api/index/variables/MAX_SAMPLE_AGE_SECONDS.md +18 -0
  392. package/dist/docs/api/index/variables/NODE_KEY_SEPARATOR.md +1 -1
  393. package/dist/docs/api/index/variables/NO_XR_CAPABILITIES.md +15 -0
  394. package/dist/docs/api/index/variables/OVERRIDE_DIFF_EXCLUDED_COMPONENTS.md +1 -1
  395. package/dist/docs/api/index/variables/OVERRIDE_ROOT_EXCLUDED_COMPONENTS.md +1 -1
  396. package/dist/docs/api/index/variables/PINCH_FINGERS.md +15 -0
  397. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION.md +1 -1
  398. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION_NESTED.md +1 -1
  399. package/dist/docs/api/index/variables/SCRIPT_OBJECT_ROOT_FLAG.md +1 -1
  400. package/dist/docs/api/index/variables/SHARED_MODEL_RESOURCE_FLAG.md +1 -1
  401. package/dist/docs/api/index/variables/STRAIGHT_COS.md +19 -0
  402. package/dist/docs/api/index/variables/VELOCITY_SAMPLES.md +15 -0
  403. package/dist/docs/api/index/variables/XR_FINGERS.md +13 -0
  404. package/dist/docs/api/index/variables/XR_HOVER_SHELL_FLAG.md +15 -0
  405. package/dist/docs/api/index/variables/webglBackend.md +16 -0
  406. package/dist/docs/api/typedoc-sidebar.json +1 -1
  407. package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
  408. package/dist/docs/api/types/type-aliases/CheckboxInput.md +3 -3
  409. package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
  410. package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
  411. package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
  412. package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
  413. package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
  414. package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
  415. package/dist/docs/api/types/type-aliases/EcsEntityKind.md +10 -2
  416. package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
  417. package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
  418. package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
  419. package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
  420. package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
  421. package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
  422. package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
  423. package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
  424. package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
  425. package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
  426. package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
  427. package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
  428. package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
  429. package/dist/docs/guide/audio-mixing-and-sound-banks.md +71 -0
  430. package/dist/docs/guide/authoring-a-behaviour.md +3 -3
  431. package/dist/docs/guide/authoring-a-script-object.md +12 -9
  432. package/dist/docs/guide/behaviour-data-binding/index.md +11 -11
  433. package/dist/docs/guide/behaviour-lifecycle.md +9 -0
  434. package/dist/docs/guide/bone-attachments-and-ik.md +128 -0
  435. package/dist/docs/guide/component-catalog.md +10 -2
  436. package/dist/docs/guide/components/light.md +42 -0
  437. package/dist/docs/guide/components/model.md +32 -3
  438. package/dist/docs/guide/concepts.md +2 -2
  439. package/dist/docs/guide/getting-started/creating-objects.md +2 -2
  440. package/dist/docs/guide/getting-started/editing-objects.md +2 -2
  441. package/dist/docs/guide/getting-started/editor/ai-agent.md +227 -0
  442. package/dist/docs/guide/getting-started/editor/hierarchy.md +2 -2
  443. package/dist/docs/guide/getting-started/editor/index.md +3 -2
  444. package/dist/docs/guide/getting-started/editor/inspector.md +2 -2
  445. package/dist/docs/guide/getting-started/editor/scene-inspector.md +3 -3
  446. package/dist/docs/guide/getting-started/editor/toolbar.md +11 -11
  447. package/dist/docs/guide/getting-started/editor/viewport.md +17 -9
  448. package/dist/docs/guide/getting-started/index.md +1 -1
  449. package/dist/docs/guide/getting-started/installation.md +1 -1
  450. package/dist/docs/guide/getting-started/preview-and-test.md +7 -7
  451. package/dist/docs/guide/getting-started/project-types/image-tracking.md +23 -11
  452. package/dist/docs/guide/getting-started/project-types/index.md +4 -4
  453. package/dist/docs/guide/getting-started/project-types/vr.md +270 -2
  454. package/dist/docs/guide/getting-started/projects.md +4 -5
  455. package/dist/docs/guide/getting-started/shortcuts.md +5 -4
  456. package/dist/docs/guide/multiplayer.md +92 -0
  457. package/dist/docs/guide/scene/environment.md +101 -4
  458. package/dist/docs/guide/scene/index.md +4 -4
  459. package/dist/docs/guide/scene/postprocessing.md +67 -5
  460. package/dist/docs/guide/spawning/area-light.md +2 -0
  461. package/dist/docs/guide/systems/environment-sync-system.md +11 -6
  462. package/dist/docs/guide/systems/light-sync-system.md +5 -3
  463. package/dist/docs/guide/systems/postprocessing-sync-system.md +16 -6
  464. package/dist/docs/guide/systems/render-system.md +7 -6
  465. package/dist/docs/guide/systems/script-behaviour-system.md +7 -5
  466. package/dist/docs/guide/systems/script-object-system.md +3 -1
  467. package/dist/docs/guide/systems/video-system.md +1 -1
  468. package/dist/docs/guide/webgpu-and-tsl.md +415 -0
  469. package/dist/docs/guide/world-api.md +52 -2
  470. package/dist/factories/index.cjs +770 -283
  471. package/dist/factories/index.cjs.map +1 -1
  472. package/dist/factories/index.d.cts +14 -3
  473. package/dist/factories/index.d.ts +14 -3
  474. package/dist/factories/index.js +7 -4
  475. package/dist/{index-D2Jt_JzH.d.ts → index-C61n65PE.d.ts} +135 -42
  476. package/dist/{index-DaG03vyN.d.cts → index-C70N4BYG.d.cts} +135 -42
  477. package/dist/{index-C3ik3sA1.d.ts → index-D9DjrUn3.d.cts} +25 -3
  478. package/dist/{index-Dlr-7-4m.d.cts → index-DppafVu4.d.ts} +25 -3
  479. package/dist/index.cjs +3642 -1263
  480. package/dist/index.cjs.map +1 -1
  481. package/dist/index.d.cts +113 -11
  482. package/dist/index.d.ts +113 -11
  483. package/dist/index.js +187 -12
  484. package/dist/index.js.map +1 -1
  485. package/dist/network/index.cjs +4896 -0
  486. package/dist/network/index.cjs.map +1 -0
  487. package/dist/network/index.d.cts +98 -0
  488. package/dist/network/index.d.ts +98 -0
  489. package/dist/network/index.js +493 -0
  490. package/dist/network/index.js.map +1 -0
  491. package/dist/systems/index.cjs +3958 -1762
  492. package/dist/systems/index.cjs.map +1 -1
  493. package/dist/systems/index.d.cts +4 -2
  494. package/dist/systems/index.d.ts +4 -2
  495. package/dist/systems/index.js +8 -4
  496. package/dist/types.d.cts +3 -1
  497. package/dist/types.d.ts +3 -1
  498. package/dist/webgpu/index.d.ts +113 -0
  499. package/dist/webgpu/index.js +302 -0
  500. package/dist/webgpu/index.js.map +1 -0
  501. package/dist/worldSnapshotUtils.d.cts +3 -1
  502. package/dist/worldSnapshotUtils.d.ts +3 -1
  503. package/dist/worldSnapshotUtils.js +3 -2
  504. package/package.json +19 -3
  505. package/dist/chunk-BUEKOSR5.js.map +0 -1
  506. package/dist/chunk-DF5SSRN6.js.map +0 -1
  507. package/dist/chunk-OWQSESTO.js.map +0 -1
  508. package/dist/chunk-OY7ZODZP.js.map +0 -1
  509. package/dist/chunk-RXBLOO5B.js.map +0 -1
  510. package/dist/chunk-WJD2VKEH.js +0 -315
  511. package/dist/chunk-WJD2VKEH.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/factories/registerDefaultComponentFactories.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/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","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","getOrCreateListener"],"mappings":"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","file":"chunk-SGF73YTF.js","sourcesContent":["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 createBoneAttachmentComponent,\n createIKComponent,\n createNetworkedPropsComponent,\n createNetworkIdentityComponent,\n createNetworkSpawnerComponent,\n createNetworkTransformComponent,\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(\"boneAttachment\", createBoneAttachmentComponent);\n objectManagementSystem.registerComponentFactory(\"ik\", createIKComponent);\n objectManagementSystem.registerComponentFactory(\"networkIdentity\", createNetworkIdentityComponent);\n objectManagementSystem.registerComponentFactory(\"networkTransform\", createNetworkTransformComponent);\n objectManagementSystem.registerComponentFactory(\"networkedProps\", createNetworkedPropsComponent);\n objectManagementSystem.registerComponentFactory(\"networkSpawner\", createNetworkSpawnerComponent);\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 * 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 { readWorldRenderBackend } from \"../../../render/resolveBackend\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAreaLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n // Area lights shade through lookup tables the backend loads on first use.\n readWorldRenderBackend(world).prepareAreaLights?.(world);\n\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\";\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 type { RenderBackend } from \"../../render/RenderBackend\";\nimport { readWorldRenderBackend } from \"../../render/resolveBackend\";\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 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 backend: RenderBackend,\n): { mesh: THREE.Mesh; material: THREE.Material } {\n const geometry = new THREE.PlaneGeometry(1, 1);\n // The keying material is renderer-specific (GLSL on WebGL, TSL on WebGPU).\n const material = options.isGreenScreen\n ? backend.createChromaKeyMaterial(texture, {\n keyColor: options.backgroundColor,\n similarity: options.similarity,\n smoothness: options.smoothness,\n spill: options.spill,\n })\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(\n entityId,\n texture,\n options,\n readWorldRenderBackend(world),\n );\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"]}