@relu-interactives/spatial-ecs 0.2.11 → 0.2.13

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 (225) hide show
  1. package/dist/{System-KTHuWc-i.d.cts → System-CTTwEGn1.d.cts} +312 -3
  2. package/dist/{System-KTHuWc-i.d.ts → System-CTTwEGn1.d.ts} +312 -3
  3. package/dist/{Video-Ds_0Aj66.d.ts → Video-BMWPYc3q.d.cts} +2 -241
  4. package/dist/{Video-BnrYbbzu.d.cts → Video-CV1-u6hL.d.ts} +2 -241
  5. package/dist/{chunk-OIOUWDOS.js → chunk-27RBPOVO.js} +40 -4
  6. package/dist/chunk-27RBPOVO.js.map +1 -0
  7. package/dist/{chunk-YLRCC4EK.js → chunk-7QBONTBW.js} +4 -4
  8. package/dist/{chunk-YLRCC4EK.js.map → chunk-7QBONTBW.js.map} +1 -1
  9. package/dist/{chunk-XPCVEXMY.js → chunk-FTIQQK62.js} +2 -2
  10. package/dist/chunk-FTIQQK62.js.map +1 -0
  11. package/dist/{chunk-UU6VYCIO.js → chunk-KDZ6VBRO.js} +4 -4
  12. package/dist/{chunk-UU6VYCIO.js.map → chunk-KDZ6VBRO.js.map} +1 -1
  13. package/dist/components/index.cjs.map +1 -1
  14. package/dist/components/index.d.cts +2 -2
  15. package/dist/components/index.d.ts +2 -2
  16. package/dist/components/index.js +1 -1
  17. package/dist/docs/api/Behaviour/classes/Behaviour.md +29 -29
  18. package/dist/docs/api/Component/classes/Component.md +1 -1
  19. package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
  20. package/dist/docs/api/components/classes/AudioComponent.md +19 -19
  21. package/dist/docs/api/components/classes/CameraComponent.md +14 -14
  22. package/dist/docs/api/components/classes/EntityType.md +3 -3
  23. package/dist/docs/api/components/classes/Environment.md +7 -3
  24. package/dist/docs/api/components/classes/ImageComponent.md +7 -7
  25. package/dist/docs/api/components/classes/ImageTarget.md +7 -7
  26. package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
  27. package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
  28. package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
  29. package/dist/docs/api/components/classes/LightComponent.md +6 -6
  30. package/dist/docs/api/components/classes/MaterialComponent.md +11 -11
  31. package/dist/docs/api/components/classes/MeshComponent.md +3 -3
  32. package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
  33. package/dist/docs/api/components/classes/ModelComponent.md +4 -4
  34. package/dist/docs/api/components/classes/Name.md +3 -3
  35. package/dist/docs/api/components/classes/Object3DRef.md +4 -4
  36. package/dist/docs/api/components/classes/ParentId.md +3 -3
  37. package/dist/docs/api/components/classes/PhysicsComponent.md +6 -6
  38. package/dist/docs/api/components/classes/Postprocessing.md +7 -3
  39. package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
  40. package/dist/docs/api/components/classes/Selectable.md +3 -3
  41. package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
  42. package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
  43. package/dist/docs/api/components/classes/TransformComponent.md +12 -12
  44. package/dist/docs/api/components/classes/VideoComponent.md +28 -28
  45. package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
  46. package/dist/docs/api/components/index.md +1 -1
  47. package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
  48. package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
  49. package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
  50. package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +1 -1
  51. package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
  52. package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
  53. package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
  54. package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
  55. package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
  56. package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
  57. package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
  58. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +7 -7
  59. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
  60. package/dist/docs/api/components/type-aliases/EnvironmentState.md +5 -5
  61. package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
  62. package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
  63. package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
  64. package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
  65. package/dist/docs/api/components/type-aliases/LightValueState.md +11 -11
  66. package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
  67. package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
  68. package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
  69. package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
  70. package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
  71. package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
  72. package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
  73. package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
  74. package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
  75. package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
  76. package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
  77. package/dist/docs/api/components/type-aliases/ScriptEntry.md +9 -9
  78. package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
  79. package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
  80. package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
  81. package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
  82. package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
  83. package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
  84. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
  85. package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
  86. package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
  87. package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
  88. package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
  89. package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
  90. package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
  91. package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
  92. package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
  93. package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
  94. package/dist/docs/api/index/classes/AudioSystem.md +4 -4
  95. package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
  96. package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +4 -4
  97. package/dist/docs/api/index/classes/InputSystem.md +33 -33
  98. package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
  99. package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
  100. package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
  101. package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
  102. package/dist/docs/api/index/classes/ObjectManagementSystem.md +39 -19
  103. package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
  104. package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
  105. package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +4 -4
  106. package/dist/docs/api/index/classes/RenderSystem.md +3 -3
  107. package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +4 -4
  108. package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
  109. package/dist/docs/api/index/classes/VideoSystem.md +4 -4
  110. package/dist/docs/api/index/classes/World.md +146 -82
  111. package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
  112. package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
  113. package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
  114. package/dist/docs/api/index/functions/createEntityTypeComponent.md +1 -1
  115. package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
  116. package/dist/docs/api/index/functions/createImageComponent.md +1 -1
  117. package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
  118. package/dist/docs/api/index/functions/createImageTargetComponent.md +1 -1
  119. package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
  120. package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
  121. package/dist/docs/api/index/functions/createLightComponent.md +1 -1
  122. package/dist/docs/api/index/functions/createMaterialComponent.md +1 -1
  123. package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
  124. package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
  125. package/dist/docs/api/index/functions/createModelComponent.md +1 -1
  126. package/dist/docs/api/index/functions/createNameComponent.md +1 -1
  127. package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
  128. package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
  129. package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
  130. package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
  131. package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
  132. package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
  133. package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
  134. package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
  135. package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
  136. package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
  137. package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
  138. package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
  139. package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
  140. package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
  141. package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
  142. package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
  143. package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
  144. package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
  145. package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +1 -1
  146. package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
  147. package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
  148. package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +3 -3
  149. package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
  150. package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
  151. package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
  152. package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
  153. package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
  154. package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
  155. package/dist/docs/api/types/type-aliases/CheckboxInput.md +12 -2
  156. package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
  157. package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
  158. package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
  159. package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
  160. package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
  161. package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
  162. package/dist/docs/api/types/type-aliases/EcsEntityKind.md +1 -1
  163. package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
  164. package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
  165. package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
  166. package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
  167. package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
  168. package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
  169. package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
  170. package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
  171. package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
  172. package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
  173. package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
  174. package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
  175. package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
  176. package/dist/docs/guide/accessing-components.md +135 -1
  177. package/dist/docs/guide/authoring-a-behaviour.md +1 -1
  178. package/dist/docs/guide/behaviour-data-binding/asset-input.md +54 -0
  179. package/dist/docs/guide/behaviour-data-binding/checkbox-input.md +38 -0
  180. package/dist/docs/guide/behaviour-data-binding/color-input.md +38 -0
  181. package/dist/docs/guide/behaviour-data-binding/component-input.md +79 -0
  182. package/dist/docs/guide/behaviour-data-binding/dropdown-input.md +53 -0
  183. package/dist/docs/guide/behaviour-data-binding/entity-input.md +100 -0
  184. package/dist/docs/guide/behaviour-data-binding/float-input.md +35 -0
  185. package/dist/docs/guide/behaviour-data-binding/index.md +158 -0
  186. package/dist/docs/guide/behaviour-data-binding/slider-input.md +37 -0
  187. package/dist/docs/guide/behaviour-data-binding/text-input.md +35 -0
  188. package/dist/docs/guide/behaviour-data-binding/toggle-input.md +36 -0
  189. package/dist/docs/guide/behaviour-data-binding/vector2-input.md +36 -0
  190. package/dist/docs/guide/behaviour-data-binding/vector3-input.md +41 -0
  191. package/dist/docs/guide/component-catalog.md +2 -0
  192. package/dist/docs/guide/components/animation.md +40 -1
  193. package/dist/docs/guide/components/instanced-mesh.md +1 -4
  194. package/dist/docs/guide/runtime-entity-management.md +302 -0
  195. package/dist/docs/guide/scene/environment.md +5 -6
  196. package/dist/docs/guide/scene/index.md +5 -10
  197. package/dist/docs/guide/scene/postprocessing.md +5 -6
  198. package/dist/docs/guide/spawning/audio.md +29 -7
  199. package/dist/docs/guide/systems/object-management-system.md +70 -0
  200. package/dist/docs/guide/world-api.md +3 -1
  201. package/dist/factories/index.cjs.map +1 -1
  202. package/dist/factories/index.d.cts +2 -2
  203. package/dist/factories/index.d.ts +2 -2
  204. package/dist/factories/index.js +3 -3
  205. package/dist/{index-D-gUELQS.d.ts → index-ByX7502C.d.ts} +2 -2
  206. package/dist/{index-ComEYKYI.d.cts → index-D7q4SRCp.d.cts} +2 -2
  207. package/dist/index.cjs +84 -1
  208. package/dist/index.cjs.map +1 -1
  209. package/dist/index.d.cts +5 -5
  210. package/dist/index.d.ts +5 -5
  211. package/dist/index.js +55 -8
  212. package/dist/index.js.map +1 -1
  213. package/dist/systems/index.cjs +37 -1
  214. package/dist/systems/index.cjs.map +1 -1
  215. package/dist/systems/index.d.cts +2 -2
  216. package/dist/systems/index.d.ts +2 -2
  217. package/dist/systems/index.js +3 -3
  218. package/dist/types.d.cts +1 -1
  219. package/dist/types.d.ts +1 -1
  220. package/dist/worldSnapshotUtils.d.cts +1 -1
  221. package/dist/worldSnapshotUtils.d.ts +1 -1
  222. package/package.json +1 -1
  223. package/dist/chunk-OIOUWDOS.js.map +0 -1
  224. package/dist/chunk-XPCVEXMY.js.map +0 -1
  225. package/dist/docs/guide/inspector-data-binding.md +0 -367
@@ -1,5 +1,5 @@
1
1
  import * as THREE from 'three';
2
- import { C as Component, e as EcsEntityKind, m as EcsEntityEditorKind, n as EntityId } from './System-KTHuWc-i.cjs';
2
+ import { C as Component, o as EcsEntityKind, x as EcsEntityEditorKind, y as EntityId } from './System-CTTwEGn1.js';
3
3
  import * as RAPIER from '@dimforge/rapier3d-compat';
4
4
 
5
5
  interface StateMachine {
@@ -313,245 +313,6 @@ declare class AudioComponent extends Component {
313
313
  stop(): void;
314
314
  }
315
315
 
316
- /** Skybox rendering modes. `none` disables skybox rendering entirely. */
317
- type EnvironmentSkyboxType = "gradient" | "color" | "image" | "none";
318
- /** Gradient distribution applied when {@link EnvironmentSkyboxState.type} is `"gradient"`. */
319
- type EnvironmentGradientEffect = "radial" | "linear" | "angular";
320
- /** Fog distance models. `none` disables fog. */
321
- type EnvironmentFogType = "linear" | "exponential" | "none";
322
- /** Skybox configuration. Only the fields relevant to {@link type} are read at render time. */
323
- type EnvironmentSkyboxState = {
324
- /** Active skybox mode. */
325
- type: EnvironmentSkyboxType;
326
- /** Solid color used when {@link type} is `"color"`. `#rrggbb`. */
327
- color: string;
328
- /** URL or `localasset://` path of the equirectangular image used when {@link type} is `"image"`. */
329
- imageUrl?: string;
330
- /** Gradient parameters used when {@link type} is `"gradient"`. */
331
- gradient: {
332
- /** Ordered list of color stops as `#rrggbb` strings. */
333
- colors: string[];
334
- /** Gradient distribution. */
335
- effect: EnvironmentGradientEffect;
336
- };
337
- };
338
- /** Fog configuration. Mirrors three.js `Fog` / `FogExp2`. */
339
- type EnvironmentFogState = {
340
- /** Active fog model. */
341
- type: EnvironmentFogType;
342
- /** Fog color as `#rrggbb`. */
343
- color: string;
344
- /** Linear-fog parameters used when {@link type} is `"linear"`. */
345
- linear: {
346
- /** Distance at which fog begins to take effect. */
347
- near: number;
348
- /** Distance at which fog reaches full opacity. */
349
- far: number;
350
- };
351
- /** Exponential-fog parameters used when {@link type} is `"exponential"`. */
352
- exponential: {
353
- /** Density coefficient. Higher values produce thicker fog. */
354
- density: number;
355
- };
356
- };
357
- /** World gravity vector applied by the physics system, in world units per second squared. */
358
- type EnvironmentGravityState = {
359
- /** Gravity along world X. */
360
- x: number;
361
- /** Gravity along world Y (negative pulls objects down). */
362
- y: number;
363
- /** Gravity along world Z. */
364
- z: number;
365
- };
366
- /** Aggregated authoring state owned by {@link Environment}. */
367
- type EnvironmentState = {
368
- /** Skybox configuration. */
369
- skybox: EnvironmentSkyboxState;
370
- /** Fog configuration. */
371
- fog: EnvironmentFogState;
372
- /** World gravity. */
373
- gravity: EnvironmentGravityState;
374
- /**
375
- * Fixed timestep (seconds) used by the physics accumulator loop.
376
- * Physics is stepped in fixed increments of this size each frame.
377
- * Default is `0.02` (50 Hz).
378
- */
379
- fixedTimeStep: number;
380
- };
381
- declare const DEFAULT_ENVIRONMENT_STATE: EnvironmentState;
382
- /**
383
- * Scene environment settings: skybox (gradient/color/image), fog
384
- * (linear/exponential), and gravity vector for the physics world.
385
- * Singleton-style — attached to one environment entity per scene.
386
- *
387
- * @category Components
388
- */
389
- declare class Environment extends Component {
390
- /** Aggregated environment authoring state (skybox, fog, gravity). Saved with the project. */
391
- values: EnvironmentState;
392
- constructor(values?: Partial<EnvironmentState>);
393
- }
394
-
395
- /** Aggregated post-processing effect chain authored on the scene environment. Each sub-effect has its own `enabled` flag plus per-effect parameters. */
396
- type PostprocessingState = {
397
- /** Master toggle. When `false` no post-processing is applied even if individual effects are enabled. */
398
- postEnabled: boolean;
399
- /** Depth-of-field (bokeh) effect. */
400
- dof: {
401
- /** Enable the effect. */
402
- enabled: boolean;
403
- /** Distance to the focal plane in world units. */
404
- focusDistance: number;
405
- /** Lens focal length controlling depth-of-field strength. */
406
- focalLength: number;
407
- /** Bokeh blur kernel scale. */
408
- bokehScale: number;
409
- };
410
- /** Bloom (HDR glow) effect. */
411
- bloom: {
412
- /** Enable the effect. */
413
- enabled: boolean;
414
- /** Strength of the bloom contribution. */
415
- intensity: number;
416
- /** Luminance threshold above which pixels bloom. */
417
- threshold: number;
418
- /** Blur radius applied to the bloom buffer. */
419
- radius: number;
420
- };
421
- /** Vignette (corner darkening) effect. */
422
- vignette: {
423
- /** Enable the effect. */
424
- enabled: boolean;
425
- /** Distance from screen center where the vignette begins. */
426
- offset: number;
427
- /** Maximum darkness applied at screen edges. */
428
- darkness: number;
429
- };
430
- /** Chromatic aberration (RGB channel offset) effect. */
431
- chromAberration: {
432
- /** Enable the effect. */
433
- enabled: boolean;
434
- /** Horizontal channel offset. */
435
- offsetX: number;
436
- /** Vertical channel offset. */
437
- offsetY: number;
438
- };
439
- /** Film-noise overlay. */
440
- noise: {
441
- /** Enable the effect. */
442
- enabled: boolean;
443
- /** Opacity of the noise layer in `[0, 1]`. */
444
- opacity: number;
445
- };
446
- /** Pixelation (mosaic) effect. */
447
- pixelation: {
448
- /** Enable the effect. */
449
- enabled: boolean;
450
- /** Pixel block size in screen pixels. */
451
- granularity: number;
452
- };
453
- /** Tone-mapping exposure control. */
454
- toneMapping: {
455
- /** Enable the effect. */
456
- enabled: boolean;
457
- /** Exposure multiplier applied before tone-mapping. */
458
- exposure: number;
459
- };
460
- /** Hue/saturation color grading. */
461
- hueSaturation: {
462
- /** Enable the effect. */
463
- enabled: boolean;
464
- /** Hue rotation in radians. */
465
- hue: number;
466
- /** Saturation offset (`0` = unchanged, `>0` = more saturated). */
467
- saturation: number;
468
- };
469
- /** Sepia color grade. */
470
- sepia: {
471
- /** Enable the effect. */
472
- enabled: boolean;
473
- /** Blend strength between original and sepia in `[0, 1]`. */
474
- intensity: number;
475
- };
476
- /** SMAA antialiasing pass. */
477
- smaa: {
478
- /** Enable the effect. */
479
- enabled: boolean;
480
- };
481
- /** Screen-space ambient occlusion. */
482
- ssao: {
483
- /** Enable the effect. */
484
- enabled: boolean;
485
- /** Strength of the AO contribution. */
486
- intensity: number;
487
- /** Sampling radius in world units. */
488
- radius: number;
489
- };
490
- /** Dot-screen (halftone) effect. */
491
- dotScreen: {
492
- /** Enable the effect. */
493
- enabled: boolean;
494
- /** Pattern scale (legacy field; use {@link scale} where available). */
495
- dotScreenScale: number;
496
- /** Pattern rotation in radians (legacy field; use {@link angle} where available). */
497
- dotScreenAngle: number;
498
- /** Pattern rotation in radians. */
499
- angle?: number;
500
- /** Pattern scale. */
501
- scale?: number;
502
- /** Three.js blend function override. */
503
- blendFunction?: number;
504
- /** Effect opacity in `[0, 1]`. */
505
- opacity?: number;
506
- };
507
- /** Glitch effect (digital corruption simulation). */
508
- glitch: {
509
- /** Enable the effect. */
510
- enabled: boolean;
511
- /** Three.js blend function override. */
512
- blendFunction?: number;
513
- /** RGB channel offset applied during a glitch burst. */
514
- chromaticAberrationOffset?: {
515
- x: number;
516
- y: number;
517
- } | [number, number];
518
- /** `[min, max]` delay (seconds) between glitch bursts. */
519
- delay?: [number, number];
520
- /** `[min, max]` duration (seconds) of each glitch burst. */
521
- duration?: [number, number];
522
- /** Glitch displacement strength (scalar or per-axis). */
523
- strength?: number | {
524
- x: number;
525
- y: number;
526
- };
527
- /** Size of the displacement texture sampled by the glitch shader. */
528
- dtSize?: number;
529
- /** Fraction of columns affected during a glitch burst. */
530
- columns?: number;
531
- /** Ratio between weak and strong glitch bursts. */
532
- ratio?: number;
533
- /** Glitch mode label (matches the postprocessing library's mode enum). */
534
- mode?: string;
535
- /** Force the glitch to remain active. */
536
- active?: boolean;
537
- };
538
- };
539
- declare const DEFAULT_POSTPROCESSING_STATE: PostprocessingState;
540
- /**
541
- * Postprocessing stack settings (depth-of-field, bloom, vignette, chromatic
542
- * aberration, noise, pixelation, tone mapping, hue/saturation, sepia, SMAA,
543
- * SSAO, dot-screen, glitch). The render system applies enabled effects in a
544
- * `postprocessing`-library composer when `postEnabled` is `true`. Singleton-
545
- * style — attached to one entity per scene.
546
- *
547
- * @category Components
548
- */
549
- declare class Postprocessing extends Component {
550
- /** Aggregated post-processing state. Saved with the project. */
551
- values: PostprocessingState;
552
- constructor(values?: Partial<PostprocessingState>);
553
- }
554
-
555
316
  /** Editable primitive kinds the mesh-geometry system can rebuild on the fly. `model` is a passthrough placeholder for entities that own a loaded GLTF/GLB instead. */
556
317
  type EditableMeshObjectKind = "capsule" | "cube" | "cylinder" | "model" | "plane" | "sphere";
557
318
  /** Box geometry parameters in world units. */
@@ -1352,4 +1113,4 @@ declare class VideoComponent extends Component {
1352
1113
  stop(): void;
1353
1114
  }
1354
1115
 
1355
- export { type RadiusHeightMeshParameters as $, AnimationComponent as A, type ImageTargetReference as B, CameraComponent as C, DEFAULT_COLLIDER_STATE as D, type EditableMeshObjectKind as E, InstanceSlotComponent as F, type InstanceTransform as G, InstancedMeshComponent as H, ImageComponent as I, type InstancedMeshKind as J, type LightValueState as K, LightComponent as L, MaterialComponent as M, type MaterialTypeValue as N, type MaterialValueState as O, MeshComponent as P, MeshGeometryComponent as Q, type MeshGeometryParameters as R, type MeshGeometryParametersByKind as S, ModelComponent as T, Name as U, Object3DRef as V, PhysicsComponent as W, type PhysicsState as X, type PlaneMeshParameters as Y, Postprocessing as Z, type PostprocessingState as _, type AnimationComponentOptions as a, type RadiusMeshParameters as a0, type RigidbodyState as a1, type RigidbodyType as a2, ScriptComponent as a3, type ScriptEntry as a4, Selectable as a5, SelectionTransformState as a6, SpriteComponent as a7, type TextureFilteringValue as a8, type TransformModeValue as a9, type TransformSpaceValue as aa, VideoComponent as ab, normalizePhysicsState as ac, type AnimationStateCallbacks as ad, AnimationStateMachine as ae, AnimationStateManager as af, type StateMachine as ag, AudioComponent as b, type CameraComponentOptions as c, type CameraProjection as d, type CameraRuntimeType as e, type ColliderShape as f, type ColliderState as g, type CubeMeshParameters as h, DEFAULT_ENVIRONMENT_STATE as i, DEFAULT_INSTANCED_MESH_PARAMETERS as j, DEFAULT_INSTANCE_TRANSFORM as k, DEFAULT_MESH_GEOMETRY_PARAMETERS as l, DEFAULT_PHYSICS_STATE as m, DEFAULT_POSTPROCESSING_STATE as n, DEFAULT_RIGIDBODY_STATE as o, EntityType as p, Environment as q, type EnvironmentFogState as r, type EnvironmentFogType as s, type EnvironmentGradientEffect as t, type EnvironmentSkyboxState as u, type EnvironmentSkyboxType as v, type EnvironmentState as w, ImageTarget as x, ImageTargetAnchor as y, type ImageTargetAnchorOptions as z };
1116
+ export { type TransformSpaceValue as $, AnimationComponent as A, MeshGeometryComponent as B, CameraComponent as C, DEFAULT_COLLIDER_STATE as D, type EditableMeshObjectKind as E, type MeshGeometryParameters as F, type MeshGeometryParametersByKind as G, ModelComponent as H, ImageComponent as I, type PhysicsState as J, type PlaneMeshParameters as K, LightComponent as L, MaterialComponent as M, Name as N, Object3DRef as O, PhysicsComponent as P, type RadiusMeshParameters as Q, type RadiusHeightMeshParameters as R, type RigidbodyState as S, type RigidbodyType as T, ScriptComponent as U, type ScriptEntry as V, Selectable as W, SelectionTransformState as X, SpriteComponent as Y, type TextureFilteringValue as Z, type TransformModeValue as _, type AnimationComponentOptions as a, VideoComponent as a0, normalizePhysicsState as a1, type AnimationStateCallbacks as a2, AnimationStateMachine as a3, AnimationStateManager as a4, type StateMachine as a5, AudioComponent as b, type CameraComponentOptions as c, type CameraProjection as d, type CameraRuntimeType as e, type ColliderShape as f, type ColliderState as g, type CubeMeshParameters as h, DEFAULT_INSTANCED_MESH_PARAMETERS as i, DEFAULT_INSTANCE_TRANSFORM as j, DEFAULT_MESH_GEOMETRY_PARAMETERS as k, DEFAULT_PHYSICS_STATE as l, DEFAULT_RIGIDBODY_STATE as m, EntityType as n, ImageTarget as o, ImageTargetAnchor as p, type ImageTargetAnchorOptions as q, type ImageTargetReference as r, InstanceSlotComponent as s, type InstanceTransform as t, InstancedMeshComponent as u, type InstancedMeshKind as v, type LightValueState as w, type MaterialTypeValue as x, type MaterialValueState as y, MeshComponent as z };
@@ -1,4 +1,4 @@
1
- import { TransformComponent, Object3DRef, ParentId } from './chunk-XPCVEXMY.js';
1
+ import { TransformComponent, Object3DRef, ParentId } from './chunk-FTIQQK62.js';
2
2
  import { __name } from './chunk-OY7ZODZP.js';
3
3
  import * as THREE from 'three';
4
4
 
@@ -82,7 +82,29 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
82
82
  }
83
83
  return entityId;
84
84
  }
85
- deleteEntity(world, entityId) {
85
+ /**
86
+ * Removes an entity from the ECS world and its associated `Object3D` from the
87
+ * THREE.js scene graph.
88
+ *
89
+ * @param world - The world the entity belongs to.
90
+ * @param entityId - The entity to remove.
91
+ * @param dispose - When `true`, traverses the entity's `Object3D` subtree and
92
+ * calls `.dispose()` on every `BufferGeometry` and `Material` found. Pass
93
+ * `true` when the entity will not be reused and you want to free GPU memory
94
+ * immediately (e.g. dynamically spawned objects). Defaults to `false`.
95
+ * @returns `true` if the entity existed and was removed; `false` if the entity
96
+ * was not found.
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * // Remove from scene, keep GPU resources (safe if geometry is shared)
101
+ * objects.deleteEntity(world, entityId);
102
+ *
103
+ * // Remove from scene and free GPU memory (use for one-off spawned objects)
104
+ * objects.deleteEntity(world, entityId, true);
105
+ * ```
106
+ */
107
+ deleteEntity(world, entityId, dispose = false) {
86
108
  if (!world.hasEntity(entityId)) {
87
109
  return false;
88
110
  }
@@ -90,6 +112,20 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
90
112
  if (object3d?.parent) {
91
113
  object3d.parent.remove(object3d);
92
114
  }
115
+ if (dispose && object3d) {
116
+ object3d.traverse((child) => {
117
+ if (child instanceof THREE.Mesh) {
118
+ child.geometry?.dispose();
119
+ if (Array.isArray(child.material)) {
120
+ for (const mat of child.material) {
121
+ mat.dispose();
122
+ }
123
+ } else {
124
+ child.material?.dispose();
125
+ }
126
+ }
127
+ });
128
+ }
93
129
  world.destroyEntity(entityId);
94
130
  return true;
95
131
  }
@@ -219,5 +255,5 @@ function resolveDracoDecoderPath() {
219
255
  __name(resolveDracoDecoderPath, "resolveDracoDecoderPath");
220
256
 
221
257
  export { ObjectManagementSystem, applyTransform, createTransform, resolveDracoDecoderPath };
222
- //# sourceMappingURL=chunk-OIOUWDOS.js.map
223
- //# sourceMappingURL=chunk-OIOUWDOS.js.map
258
+ //# sourceMappingURL=chunk-27RBPOVO.js.map
259
+ //# sourceMappingURL=chunk-27RBPOVO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/systems/ObjectManagementSystem.ts","../core/utils/dracoDecoderPath.ts"],"names":[],"mappings":"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","file":"chunk-27RBPOVO.js","sourcesContent":["import * as THREE from \"three\";\n\nimport { Object3DRef } from \"../components/Object3DRef\";\nimport { ParentId } from \"../components/ParentId\";\nimport type { TransformData } from \"../components/Transform\";\nimport { TransformComponent } from \"../components/Transform\";\nimport type { EcsSystem } from \"../System\";\nimport type { World } from \"../World\";\nimport type { EntityId, EcsEntityKind } from \"../types\";\n\nexport type CreatePayload = {\n name?: string;\n transform?: TransformData;\n parentId?: EntityId | null;\n path?: string;\n options?: Record<string, unknown>;\n camera?: Record<string, unknown>;\n useWorldCamera?: boolean;\n};\n\nexport type CreateContext = {\n world: World;\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera;\n payload: CreatePayload;\n isEditor?: boolean;\n};\n\nexport type EntityFactory = (context: CreateContext) => EntityId;\n\nexport type EcsComponentFactoryKind =\n | \"animation\"\n | \"audio\"\n | \"camera\"\n | \"environment\"\n | \"entityType\"\n | \"image\"\n | \"imageTargetAnchor\"\n | \"imageTarget\"\n | \"light\"\n | \"material\"\n | \"mesh\"\n | \"meshGeometry\"\n | \"model\"\n | \"name\"\n | \"object3DRef\"\n | \"parentId\"\n | \"physics\"\n | \"postprocessing\"\n | \"script\"\n | \"selectable\"\n | \"selectionTransformState\"\n | \"sprite\"\n | \"transform\"\n | \"video\"\n | \"instancedMesh\";\n\nexport type ComponentFactory = (\n world: World,\n entityId: EntityId,\n ...args: any[]\n) => unknown;\n\ntype CreateRequest = {\n kind: EcsEntityKind;\n payload: CreatePayload;\n onCreated?: (entityId: EntityId) => void;\n};\n\nexport function createTransform(input?: TransformData): TransformComponent {\n return new TransformComponent(input);\n}\n\nexport function applyTransform(\n object: THREE.Object3D,\n transform: TransformComponent,\n): void {\n object.position.set(\n transform.position.x,\n transform.position.y,\n transform.position.z,\n );\n object.rotation.set(\n transform.rotation.x,\n transform.rotation.y,\n transform.rotation.z,\n );\n object.scale.set(transform.scale.x, transform.scale.y, transform.scale.z);\n}\n\nexport class ObjectManagementSystem implements EcsSystem {\n private readonly scene: THREE.Scene;\n private readonly camera: THREE.PerspectiveCamera;\n private readonly isEditor: boolean;\n private readonly registry = new Map<EcsEntityKind, EntityFactory>();\n private readonly componentRegistry = new Map<\n EcsComponentFactoryKind,\n ComponentFactory\n >();\n private readonly createQueue: CreateRequest[] = [];\n\n constructor(\n scene: THREE.Scene,\n camera: THREE.PerspectiveCamera,\n isEditor = false,\n ) {\n this.scene = scene;\n this.camera = camera;\n this.isEditor = isEditor;\n }\n\n register(kind: EcsEntityKind, factory: EntityFactory): void {\n this.registry.set(kind, factory);\n }\n\n registerComponentFactory(\n kind: EcsComponentFactoryKind,\n factory: ComponentFactory,\n ): void {\n this.componentRegistry.set(kind, factory);\n }\n\n getOrCreateAudioListener(): THREE.AudioListener {\n const existing = this.camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n this.camera.add(listener);\n this.camera.userData.ecsAudioListener = listener;\n return listener;\n }\n\n isEditorMode(): boolean {\n return this.isEditor;\n }\n\n getComponentFactory(kind: EcsComponentFactoryKind): ComponentFactory | null {\n return this.componentRegistry.get(kind) ?? null;\n }\n\n createComponentNow(\n kind: EcsComponentFactoryKind,\n world: World,\n entityId: EntityId,\n ...args: any[]\n ): unknown {\n const factory = this.componentRegistry.get(kind);\n if (!factory) {\n throw new Error(`Unknown component kind: ${kind}`);\n }\n\n return factory(world, entityId, ...args);\n }\n\n requestCreate(\n kind: EcsEntityKind,\n payload: CreatePayload = {},\n onCreated?: (entityId: EntityId) => void,\n ): void {\n this.createQueue.push({ kind, payload, onCreated });\n }\n\n createNow(\n kind: EcsEntityKind,\n world: World,\n payload: CreatePayload = {},\n ): EntityId {\n const factory = this.registry.get(kind);\n if (!factory) {\n throw new Error(`Unknown object kind: ${kind}`);\n }\n\n const entityId = factory({\n world,\n scene: this.scene,\n camera: this.camera,\n payload,\n isEditor: this.isEditor,\n });\n\n const object = world.getComponent(entityId, Object3DRef)?.object;\n if (object) {\n object.userData.ecsKind = kind;\n }\n\n if (payload.parentId !== undefined) {\n world.addComponent(entityId, new ParentId(payload.parentId));\n }\n\n return entityId;\n }\n\n /**\n * Removes an entity from the ECS world and its associated `Object3D` from the\n * THREE.js scene graph.\n *\n * @param world - The world the entity belongs to.\n * @param entityId - The entity to remove.\n * @param dispose - When `true`, traverses the entity's `Object3D` subtree and\n * calls `.dispose()` on every `BufferGeometry` and `Material` found. Pass\n * `true` when the entity will not be reused and you want to free GPU memory\n * immediately (e.g. dynamically spawned objects). Defaults to `false`.\n * @returns `true` if the entity existed and was removed; `false` if the entity\n * was not found.\n *\n * @example\n * ```ts\n * // Remove from scene, keep GPU resources (safe if geometry is shared)\n * objects.deleteEntity(world, entityId);\n *\n * // Remove from scene and free GPU memory (use for one-off spawned objects)\n * objects.deleteEntity(world, entityId, true);\n * ```\n */\n deleteEntity(world: World, entityId: EntityId, dispose = false): boolean {\n if (!world.hasEntity(entityId)) {\n return false;\n }\n\n const object3d = world.getComponent(entityId, Object3DRef)?.object;\n if (object3d?.parent) {\n object3d.parent.remove(object3d);\n }\n\n if (dispose && object3d) {\n object3d.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n child.geometry?.dispose();\n if (Array.isArray(child.material)) {\n for (const mat of child.material) {\n mat.dispose();\n }\n } else {\n child.material?.dispose();\n }\n }\n });\n }\n\n world.destroyEntity(entityId);\n return true;\n }\n\n setParent(\n world: World,\n entityId: EntityId,\n parentId: EntityId | null,\n options?: {\n preserveWorldTransform?: boolean;\n },\n ): boolean {\n if (!world.hasEntity(entityId)) {\n return false;\n }\n\n if (parentId !== null && !world.hasEntity(parentId)) {\n return false;\n }\n\n if (parentId === entityId) {\n return false;\n }\n\n let ancestor = parentId;\n while (ancestor !== null) {\n if (ancestor === entityId) {\n return false;\n }\n\n ancestor = world.getComponent(ancestor, ParentId)?.value ?? null;\n }\n\n const parentComponent = world.getComponent(entityId, ParentId);\n if (parentComponent) {\n if (parentComponent.value === parentId) {\n return false;\n }\n\n parentComponent.value = parentId;\n } else {\n world.addComponent(entityId, new ParentId(parentId));\n }\n\n const preserveWorldTransform = options?.preserveWorldTransform ?? true;\n if (preserveWorldTransform) {\n const object = world.getComponent(entityId, Object3DRef)?.object;\n const parentObject =\n parentId !== null\n ? world.getComponent(parentId, Object3DRef)?.object ?? null\n : null;\n\n if (object) {\n // Refresh matrixWorld before attach so world-space preservation is accurate.\n this.scene.updateMatrixWorld(true);\n\n if (parentObject && parentObject !== object) {\n parentObject.attach(object);\n } else {\n this.scene.attach(object);\n }\n\n object.updateMatrixWorld(true);\n this.syncTransformComponentFromObject(world, entityId, object);\n }\n }\n\n this.reconcileSceneFromWorld(world);\n return true;\n }\n\n private syncTransformComponentFromObject(\n world: World,\n entityId: EntityId,\n object: THREE.Object3D,\n ): void {\n const transform = world.getComponent(entityId, TransformComponent);\n if (!transform) {\n return;\n }\n\n transform.position.x = object.position.x;\n transform.position.y = object.position.y;\n transform.position.z = object.position.z;\n\n transform.rotation.x = object.rotation.x;\n transform.rotation.y = object.rotation.y;\n transform.rotation.z = object.rotation.z;\n\n transform.scale.x = object.scale.x;\n transform.scale.y = object.scale.y;\n transform.scale.z = object.scale.z;\n }\n\n reconcileSceneFromWorld(world: World): void {\n const worldObjects = new Map<EntityId, THREE.Object3D>();\n const entityIds = world.query(Object3DRef);\n\n for (const entityId of entityIds) {\n const object = world.getComponent(entityId, Object3DRef)?.object;\n if (!object) {\n continue;\n }\n\n worldObjects.set(entityId, object);\n }\n\n for (const child of [...this.scene.children]) {\n const entityId = child.userData?.entityId;\n if (typeof entityId === \"number\" && !world.hasEntity(entityId)) {\n this.scene.remove(child);\n }\n }\n\n for (const [entityId, object] of worldObjects.entries()) {\n const parentEntityId = world.getComponent(entityId, ParentId)?.value;\n const parentObject =\n typeof parentEntityId === \"number\"\n ? worldObjects.get(parentEntityId)\n : undefined;\n\n if (parentObject && parentObject !== object) {\n if (object.parent !== parentObject) {\n // Reconcile hierarchy from ParentId while keeping Transform as local source of truth.\n parentObject.add(object);\n object.updateMatrixWorld(true);\n }\n continue;\n }\n\n if (object.parent !== this.scene) {\n // Reconcile hierarchy from ParentId while keeping Transform as local source of truth.\n this.scene.add(object);\n object.updateMatrixWorld(true);\n }\n }\n }\n\n update(world: World): void {\n for (const request of this.createQueue.splice(0)) {\n const entityId = this.createNow(request.kind, world, request.payload);\n request.onCreated?.(entityId);\n }\n\n this.reconcileSceneFromWorld(world);\n }\n}\n","const LOCAL_DRACO_DECODER_RELATIVE_PATH = \"./assets/draco/\";\nexport const DRACO_DECODER_CDN_PATH =\n \"https://www.gstatic.com/draco/versioned/decoders/1.5.7/\";\n\nfunction isBlockedBrowserFileUrl(url: string): boolean {\n return url.startsWith(\"file://\");\n}\n\nexport function resolveDracoDecoderPath(): string {\n try {\n // Prefer vendored decoder assets shipped with this package.\n const resolvedPath = new URL(\n LOCAL_DRACO_DECODER_RELATIVE_PATH,\n import.meta.url,\n ).toString();\n\n // Browser loaders cannot fetch file:// resources from package install paths.\n // Fall back to CDN decoders when bundlers emit file URLs for node_modules assets.\n if (isBlockedBrowserFileUrl(resolvedPath)) {\n return DRACO_DECODER_CDN_PATH;\n }\n\n return resolvedPath;\n } catch {\n // Fallback keeps compatibility in runtimes that cannot resolve package-relative URLs.\n return DRACO_DECODER_CDN_PATH;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { resolveDracoDecoderPath, createTransform, applyTransform } from './chunk-OIOUWDOS.js';
2
- import { AnimationComponent, AudioComponent, Object3DRef, CameraComponent, PhysicsComponent, Environment, EntityType, ImageComponent, ImageTargetAnchor, ImageTarget, LightComponent, MaterialComponent, MeshComponent, MeshGeometryComponent, ModelComponent, Name, ParentId, Postprocessing, ScriptComponent, Selectable, SelectionTransformState, SpriteComponent, TransformComponent, InstancedMeshComponent, InstanceSlotComponent, VideoComponent, DEFAULT_INSTANCE_TRANSFORM } from './chunk-XPCVEXMY.js';
1
+ import { resolveDracoDecoderPath, createTransform, applyTransform } from './chunk-27RBPOVO.js';
2
+ import { AnimationComponent, AudioComponent, Object3DRef, CameraComponent, PhysicsComponent, Environment, EntityType, ImageComponent, ImageTargetAnchor, ImageTarget, LightComponent, MaterialComponent, MeshComponent, MeshGeometryComponent, ModelComponent, Name, ParentId, Postprocessing, ScriptComponent, Selectable, SelectionTransformState, SpriteComponent, TransformComponent, InstancedMeshComponent, InstanceSlotComponent, VideoComponent, DEFAULT_INSTANCE_TRANSFORM } from './chunk-FTIQQK62.js';
3
3
  import { __name } from './chunk-OY7ZODZP.js';
4
4
  import * as THREE21 from 'three';
5
5
  import { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';
@@ -1428,5 +1428,5 @@ function registerDefaultFactories(objectManagementSystem) {
1428
1428
  __name(registerDefaultFactories, "registerDefaultFactories");
1429
1429
 
1430
1430
  export { createAnimationComponent, createAudioComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVideoComponent, registerDefaultComponentFactories, registerDefaultFactories };
1431
- //# sourceMappingURL=chunk-YLRCC4EK.js.map
1432
- //# sourceMappingURL=chunk-YLRCC4EK.js.map
1431
+ //# sourceMappingURL=chunk-7QBONTBW.js.map
1432
+ //# sourceMappingURL=chunk-7QBONTBW.js.map