@needle-tools/engine 5.1.0-canary.c111c4f → 5.1.0-canary.cce79c8

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 (294) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/components.needle.json +1 -1
  3. package/dist/needle-engine.bundle-B1w7P037.min.js +1733 -0
  4. package/dist/needle-engine.bundle-C4w-9vec.umd.cjs +1733 -0
  5. package/dist/{needle-engine.bundle-BuaGvme0.js → needle-engine.bundle-CPbnC8NP.js} +15153 -14701
  6. package/dist/needle-engine.d.ts +898 -271
  7. package/dist/needle-engine.js +584 -582
  8. package/dist/needle-engine.min.js +1 -1
  9. package/dist/needle-engine.umd.cjs +1 -1
  10. package/dist/three-examples.js +3778 -4289
  11. package/dist/three-examples.min.js +14 -301
  12. package/dist/three-examples.umd.cjs +14 -301
  13. package/lib/engine/api.d.ts +5 -0
  14. package/lib/engine/api.js +4 -0
  15. package/lib/engine/api.js.map +1 -1
  16. package/lib/engine/codegen/register_types.js +2 -10
  17. package/lib/engine/codegen/register_types.js.map +1 -1
  18. package/lib/engine/debug/debug_spatial_console.d.ts +2 -0
  19. package/lib/engine/debug/debug_spatial_console.js +10 -7
  20. package/lib/engine/debug/debug_spatial_console.js.map +1 -1
  21. package/lib/engine/engine_addressables.d.ts +2 -0
  22. package/lib/engine/engine_addressables.js +6 -3
  23. package/lib/engine/engine_addressables.js.map +1 -1
  24. package/lib/engine/engine_audio.d.ts +68 -0
  25. package/lib/engine/engine_audio.js +172 -0
  26. package/lib/engine/engine_audio.js.map +1 -1
  27. package/lib/engine/engine_components.js +1 -1
  28. package/lib/engine/engine_components.js.map +1 -1
  29. package/lib/engine/engine_context.d.ts +17 -20
  30. package/lib/engine/engine_context.js +15 -17
  31. package/lib/engine/engine_context.js.map +1 -1
  32. package/lib/engine/engine_disposable.d.ts +172 -0
  33. package/lib/engine/engine_disposable.js +136 -0
  34. package/lib/engine/engine_disposable.js.map +1 -0
  35. package/lib/engine/engine_gameobject.d.ts +1 -10
  36. package/lib/engine/engine_gameobject.js +22 -120
  37. package/lib/engine/engine_gameobject.js.map +1 -1
  38. package/lib/engine/engine_gltf_builtin_components.js +7 -69
  39. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  40. package/lib/engine/engine_init.js +13 -3
  41. package/lib/engine/engine_init.js.map +1 -1
  42. package/lib/engine/engine_input.d.ts +1 -1
  43. package/lib/engine/engine_input.js +1 -1
  44. package/lib/engine/engine_input.js.map +1 -1
  45. package/lib/engine/engine_instantiate_resolve.d.ts +42 -0
  46. package/lib/engine/engine_instantiate_resolve.js +372 -0
  47. package/lib/engine/engine_instantiate_resolve.js.map +1 -0
  48. package/lib/engine/engine_license.js +1 -1
  49. package/lib/engine/engine_license.js.map +1 -1
  50. package/lib/engine/engine_mainloop_utils.js +7 -4
  51. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  52. package/lib/engine/engine_networking.d.ts +51 -37
  53. package/lib/engine/engine_networking.js +132 -82
  54. package/lib/engine/engine_networking.js.map +1 -1
  55. package/lib/engine/engine_networking.transport.websocket.d.ts +15 -0
  56. package/lib/engine/engine_networking.transport.websocket.js +38 -0
  57. package/lib/engine/engine_networking.transport.websocket.js.map +1 -0
  58. package/lib/engine/engine_networking_blob.js +1 -1
  59. package/lib/engine/engine_networking_blob.js.map +1 -1
  60. package/lib/engine/engine_networking_instantiate.js +2 -2
  61. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  62. package/lib/engine/engine_networking_types.d.ts +39 -1
  63. package/lib/engine/engine_networking_types.js +7 -0
  64. package/lib/engine/engine_networking_types.js.map +1 -1
  65. package/lib/engine/engine_physics_rapier.d.ts +11 -3
  66. package/lib/engine/engine_physics_rapier.js +88 -25
  67. package/lib/engine/engine_physics_rapier.js.map +1 -1
  68. package/lib/engine/engine_scenedata.d.ts +5 -7
  69. package/lib/engine/engine_scenedata.js +16 -13
  70. package/lib/engine/engine_scenedata.js.map +1 -1
  71. package/lib/engine/engine_serialization_builtin_serializer.d.ts +10 -16
  72. package/lib/engine/engine_serialization_builtin_serializer.js +56 -46
  73. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  74. package/lib/engine/engine_serialization_core.d.ts +1 -0
  75. package/lib/engine/engine_serialization_core.js +7 -0
  76. package/lib/engine/engine_serialization_core.js.map +1 -1
  77. package/lib/engine/engine_types.d.ts +19 -11
  78. package/lib/engine/engine_types.js +1 -1
  79. package/lib/engine/engine_types.js.map +1 -1
  80. package/lib/engine/engine_util_decorator.js +7 -2
  81. package/lib/engine/engine_util_decorator.js.map +1 -1
  82. package/lib/engine/engine_utils.d.ts +1 -1
  83. package/lib/engine/engine_utils.js +19 -5
  84. package/lib/engine/engine_utils.js.map +1 -1
  85. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  86. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  87. package/lib/engine/webcomponents/jsx.d.ts +51 -0
  88. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  89. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +3 -4
  90. package/lib/engine/webcomponents/needle menu/needle-menu.js +1 -1
  91. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  92. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  93. package/lib/engine/webcomponents/needle-engine.d.ts +10 -4
  94. package/lib/engine/webcomponents/needle-engine.js +1 -1
  95. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  96. package/lib/engine/xr/NeedleXRSession.d.ts +3 -2
  97. package/lib/engine/xr/NeedleXRSession.js +50 -14
  98. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  99. package/lib/engine/xr/events.d.ts +1 -1
  100. package/lib/engine/xr/events.js.map +1 -1
  101. package/lib/engine-components/Animation.js +17 -16
  102. package/lib/engine-components/Animation.js.map +1 -1
  103. package/lib/engine-components/Animator.d.ts +6 -0
  104. package/lib/engine-components/Animator.js +17 -12
  105. package/lib/engine-components/Animator.js.map +1 -1
  106. package/lib/engine-components/AnimatorController.builder.d.ts +113 -0
  107. package/lib/engine-components/AnimatorController.builder.js +195 -0
  108. package/lib/engine-components/AnimatorController.builder.js.map +1 -0
  109. package/lib/engine-components/AnimatorController.d.ts +4 -119
  110. package/lib/engine-components/AnimatorController.js +35 -233
  111. package/lib/engine-components/AnimatorController.js.map +1 -1
  112. package/lib/engine-components/AudioSource.d.ts +19 -3
  113. package/lib/engine-components/AudioSource.js +121 -68
  114. package/lib/engine-components/AudioSource.js.map +1 -1
  115. package/lib/engine-components/Collider.d.ts +18 -9
  116. package/lib/engine-components/Collider.js +61 -14
  117. package/lib/engine-components/Collider.js.map +1 -1
  118. package/lib/engine-components/Component.d.ts +72 -9
  119. package/lib/engine-components/Component.js +114 -10
  120. package/lib/engine-components/Component.js.map +1 -1
  121. package/lib/engine-components/DragControls.d.ts +7 -0
  122. package/lib/engine-components/DragControls.js +19 -7
  123. package/lib/engine-components/DragControls.js.map +1 -1
  124. package/lib/engine-components/EventList.d.ts +31 -9
  125. package/lib/engine-components/EventList.js +37 -76
  126. package/lib/engine-components/EventList.js.map +1 -1
  127. package/lib/engine-components/Joints.d.ts +4 -2
  128. package/lib/engine-components/Joints.js +19 -3
  129. package/lib/engine-components/Joints.js.map +1 -1
  130. package/lib/engine-components/Light.d.ts +0 -19
  131. package/lib/engine-components/Light.js +13 -97
  132. package/lib/engine-components/Light.js.map +1 -1
  133. package/lib/engine-components/Networking.d.ts +1 -1
  134. package/lib/engine-components/Networking.js +1 -1
  135. package/lib/engine-components/OrbitControls.js +16 -11
  136. package/lib/engine-components/OrbitControls.js.map +1 -1
  137. package/lib/engine-components/ReflectionProbe.js +2 -0
  138. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  139. package/lib/engine-components/RigidBody.d.ts +12 -4
  140. package/lib/engine-components/RigidBody.js +18 -4
  141. package/lib/engine-components/RigidBody.js.map +1 -1
  142. package/lib/engine-components/SeeThrough.js +2 -2
  143. package/lib/engine-components/SeeThrough.js.map +1 -1
  144. package/lib/engine-components/api.d.ts +1 -1
  145. package/lib/engine-components/api.js +1 -1
  146. package/lib/engine-components/api.js.map +1 -1
  147. package/lib/engine-components/codegen/components.d.ts +3 -9
  148. package/lib/engine-components/codegen/components.js +3 -9
  149. package/lib/engine-components/codegen/components.js.map +1 -1
  150. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  151. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +2 -0
  152. package/lib/engine-components/postprocessing/VolumeParameter.js +4 -1
  153. package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
  154. package/lib/engine-components/timeline/PlayableDirector.d.ts +16 -6
  155. package/lib/engine-components/timeline/PlayableDirector.js +63 -61
  156. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  157. package/lib/engine-components/timeline/SignalAsset.d.ts +3 -1
  158. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  159. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  160. package/lib/engine-components/timeline/TimelineBuilder.d.ts +247 -0
  161. package/lib/engine-components/timeline/TimelineBuilder.js +400 -0
  162. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -0
  163. package/lib/engine-components/timeline/TimelineModels.d.ts +2 -1
  164. package/lib/engine-components/timeline/TimelineModels.js +3 -0
  165. package/lib/engine-components/timeline/TimelineModels.js.map +1 -1
  166. package/lib/engine-components/timeline/TimelineTracks.d.ts +23 -0
  167. package/lib/engine-components/timeline/TimelineTracks.js +71 -13
  168. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  169. package/lib/engine-components/timeline/index.d.ts +2 -1
  170. package/lib/engine-components/timeline/index.js +2 -0
  171. package/lib/engine-components/timeline/index.js.map +1 -1
  172. package/lib/engine-components/ui/Canvas.d.ts +1 -1
  173. package/lib/engine-components/ui/Canvas.js +2 -8
  174. package/lib/engine-components/ui/Canvas.js.map +1 -1
  175. package/lib/engine-components/ui/Text.d.ts +1 -0
  176. package/lib/engine-components/ui/Text.js +10 -7
  177. package/lib/engine-components/ui/Text.js.map +1 -1
  178. package/lib/engine-components/web/CursorFollow.js +21 -12
  179. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  180. package/lib/engine-components/webxr/WebXRImageTracking.js +4 -0
  181. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  182. package/lib/needle-engine.d.ts +2 -0
  183. package/lib/needle-engine.js +1 -0
  184. package/lib/needle-engine.js.map +1 -1
  185. package/package.json +2 -83
  186. package/plugins/common/license.js +5 -2
  187. package/plugins/common/worker.js +9 -4
  188. package/plugins/dts-generator/dts.codegen.js +12 -6
  189. package/plugins/dts-generator/dts.writer.js +1 -1
  190. package/plugins/dts-generator/glb.extractor.js +12 -1
  191. package/plugins/dts-generator/glb.reader.js +42 -33
  192. package/plugins/types/userconfig.d.ts +12 -0
  193. package/plugins/vite/asap.js +17 -8
  194. package/plugins/vite/dependencies.js +29 -10
  195. package/plugins/vite/dependency-watcher.js +2 -2
  196. package/plugins/vite/dts-generator.d.ts +2 -2
  197. package/plugins/vite/dts-generator.js +6 -1
  198. package/plugins/vite/editor-connection.js +3 -3
  199. package/plugins/vite/local-files-core.js +3 -3
  200. package/plugins/vite/local-files-utils.d.ts +3 -1
  201. package/plugins/vite/local-files-utils.js +29 -5
  202. package/plugins/vite/reload.js +19 -18
  203. package/plugins/vite/server.js +2 -1
  204. package/src/engine/api.ts +7 -0
  205. package/src/engine/codegen/register_types.ts +2 -10
  206. package/src/engine/debug/debug_spatial_console.ts +10 -7
  207. package/src/engine/engine_addressables.ts +6 -3
  208. package/src/engine/engine_audio.ts +184 -0
  209. package/src/engine/engine_components.ts +1 -1
  210. package/src/engine/engine_context.ts +22 -23
  211. package/src/engine/engine_disposable.ts +214 -0
  212. package/src/engine/engine_gameobject.ts +54 -159
  213. package/src/engine/engine_gltf_builtin_components.ts +7 -76
  214. package/src/engine/engine_init.ts +13 -3
  215. package/src/engine/engine_input.ts +1 -1
  216. package/src/engine/engine_instantiate_resolve.ts +407 -0
  217. package/src/engine/engine_license.ts +1 -1
  218. package/src/engine/engine_mainloop_utils.ts +7 -4
  219. package/src/engine/engine_networking.transport.websocket.ts +45 -0
  220. package/src/engine/engine_networking.ts +161 -137
  221. package/src/engine/engine_networking_blob.ts +1 -1
  222. package/src/engine/engine_networking_instantiate.ts +2 -2
  223. package/src/engine/engine_networking_types.ts +41 -1
  224. package/src/engine/engine_physics_rapier.ts +82 -27
  225. package/src/engine/engine_scenedata.ts +16 -13
  226. package/src/engine/engine_serialization_builtin_serializer.ts +64 -52
  227. package/src/engine/engine_serialization_core.ts +9 -0
  228. package/src/engine/engine_types.ts +24 -15
  229. package/src/engine/engine_util_decorator.ts +7 -2
  230. package/src/engine/engine_utils.ts +16 -5
  231. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  232. package/src/engine/webcomponents/jsx.d.ts +51 -0
  233. package/src/engine/webcomponents/logo-element.ts +1 -0
  234. package/src/engine/webcomponents/needle menu/needle-menu.ts +3 -2
  235. package/src/engine/webcomponents/needle-button.ts +1 -0
  236. package/src/engine/webcomponents/needle-engine.ts +11 -4
  237. package/src/engine/xr/NeedleXRSession.ts +48 -13
  238. package/src/engine/xr/events.ts +1 -1
  239. package/src/engine-components/Animation.ts +19 -16
  240. package/src/engine-components/Animator.ts +18 -11
  241. package/src/engine-components/AnimatorController.builder.ts +261 -0
  242. package/src/engine-components/AnimatorController.ts +23 -292
  243. package/src/engine-components/AudioSource.ts +130 -79
  244. package/src/engine-components/Collider.ts +66 -18
  245. package/src/engine-components/Component.ts +118 -20
  246. package/src/engine-components/DragControls.ts +18 -11
  247. package/src/engine-components/EventList.ts +45 -83
  248. package/src/engine-components/Joints.ts +20 -4
  249. package/src/engine-components/Light.ts +13 -96
  250. package/src/engine-components/Networking.ts +1 -1
  251. package/src/engine-components/OrbitControls.ts +18 -9
  252. package/src/engine-components/ReflectionProbe.ts +2 -0
  253. package/src/engine-components/RigidBody.ts +18 -4
  254. package/src/engine-components/SeeThrough.ts +2 -2
  255. package/src/engine-components/api.ts +1 -1
  256. package/src/engine-components/codegen/components.ts +3 -9
  257. package/src/engine-components/postprocessing/VolumeParameter.ts +4 -1
  258. package/src/engine-components/timeline/PlayableDirector.ts +61 -64
  259. package/src/engine-components/timeline/SignalAsset.ts +4 -1
  260. package/src/engine-components/timeline/TimelineBuilder.ts +565 -0
  261. package/src/engine-components/timeline/TimelineModels.ts +5 -1
  262. package/src/engine-components/timeline/TimelineTracks.ts +74 -13
  263. package/src/engine-components/timeline/index.ts +2 -1
  264. package/src/engine-components/ui/Canvas.ts +2 -8
  265. package/src/engine-components/ui/Text.ts +12 -8
  266. package/src/engine-components/web/CursorFollow.ts +21 -13
  267. package/src/engine-components/webxr/WebXRImageTracking.ts +2 -0
  268. package/src/needle-engine.ts +1 -0
  269. package/dist/needle-engine.bundle-CayCdkzK.min.js +0 -1732
  270. package/dist/needle-engine.bundle-DVhVGqQR.umd.cjs +0 -1732
  271. package/lib/engine-components/AvatarLoader.d.ts +0 -80
  272. package/lib/engine-components/AvatarLoader.js +0 -232
  273. package/lib/engine-components/AvatarLoader.js.map +0 -1
  274. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +0 -11
  275. package/lib/engine-components/avatar/AvatarBlink_Simple.js +0 -77
  276. package/lib/engine-components/avatar/AvatarBlink_Simple.js.map +0 -1
  277. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +0 -14
  278. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +0 -69
  279. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js.map +0 -1
  280. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +0 -29
  281. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +0 -122
  282. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +0 -1
  283. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +0 -15
  284. package/lib/engine-components/avatar/Avatar_MouthShapes.js +0 -80
  285. package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +0 -1
  286. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +0 -9
  287. package/lib/engine-components/avatar/Avatar_MustacheShake.js +0 -30
  288. package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +0 -1
  289. package/src/engine-components/AvatarLoader.ts +0 -264
  290. package/src/engine-components/avatar/AvatarBlink_Simple.ts +0 -70
  291. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +0 -64
  292. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +0 -140
  293. package/src/engine-components/avatar/Avatar_MouthShapes.ts +0 -84
  294. package/src/engine-components/avatar/Avatar_MustacheShake.ts +0 -32
@@ -20,4 +20,176 @@ export function ensureAudioContextIsResumed() {
20
20
  });
21
21
  });
22
22
  }
23
+ /**
24
+ * Represents an audio clip that can be loaded and played independently.
25
+ * The AudioClip class encapsulates the URL of the audio resource and provides
26
+ * methods for playback control (play, pause, stop) and querying duration.
27
+ */
28
+ export class AudioClip {
29
+ url;
30
+ /**
31
+ * Creates a new AudioClip instance with the specified URL.
32
+ * @param url The URL of the audio resource to load. This can be a path to an audio file or a MediaStream URL.
33
+ */
34
+ constructor(url) {
35
+ this.url = url;
36
+ }
37
+ /** Whether the clip is currently playing.
38
+ * @returns `true` if the clip is actively playing audio.
39
+ */
40
+ get isPlaying() {
41
+ return this._audioElement !== undefined
42
+ && !this._audioElement.paused
43
+ && !this._audioElement.ended;
44
+ }
45
+ /**
46
+ * The total duration of the audio clip in seconds.
47
+ * Loads the audio metadata if not already available.
48
+ * @returns A promise that resolves with the duration in seconds.
49
+ */
50
+ getDuration() {
51
+ if (this._duration !== undefined) {
52
+ return Promise.resolve(this._duration);
53
+ }
54
+ return this.ensureAudioElement().then(audio => {
55
+ this._duration = audio.duration;
56
+ return audio.duration;
57
+ });
58
+ }
59
+ /**
60
+ * Plays the audio clip from the current position.
61
+ * @returns A promise that resolves when playback finishes, or rejects on error.
62
+ * If the clip is looping, the promise will never resolve on its own – call {@link stop} or {@link pause} to end playback.
63
+ */
64
+ // #region Play
65
+ play() {
66
+ return this.ensureAudioElement().then(audio => {
67
+ return new Promise((resolve, reject) => {
68
+ const onEnded = () => {
69
+ cleanup();
70
+ resolve();
71
+ };
72
+ const onError = () => {
73
+ cleanup();
74
+ reject(new Error(`Playback error for ${this.url}`));
75
+ };
76
+ const onPause = () => {
77
+ // pause/stop also resolve the promise
78
+ cleanup();
79
+ resolve();
80
+ };
81
+ const cleanup = () => {
82
+ audio.removeEventListener("ended", onEnded);
83
+ audio.removeEventListener("error", onError);
84
+ audio.removeEventListener("pause", onPause);
85
+ };
86
+ audio.addEventListener("ended", onEnded);
87
+ audio.addEventListener("error", onError);
88
+ audio.addEventListener("pause", onPause);
89
+ audio.play().catch(err => {
90
+ cleanup();
91
+ reject(err);
92
+ });
93
+ });
94
+ });
95
+ }
96
+ /**
97
+ * Pauses playback at the current position.
98
+ * Call {@link play} to resume.
99
+ */
100
+ // #region Pause/Stop
101
+ pause() {
102
+ this._audioElement?.pause();
103
+ }
104
+ /**
105
+ * Stops playback and resets the position to the beginning.
106
+ */
107
+ stop() {
108
+ if (this._audioElement) {
109
+ this._audioElement.pause();
110
+ this._audioElement.currentTime = 0;
111
+ }
112
+ }
113
+ /** Whether the clip should loop when reaching the end. */
114
+ get loop() { return this._loop; }
115
+ set loop(value) {
116
+ this._loop = value;
117
+ if (this._audioElement)
118
+ this._audioElement.loop = value;
119
+ }
120
+ /** Playback volume from 0 (silent) to 1 (full). */
121
+ get volume() { return this._volume; }
122
+ set volume(value) {
123
+ this._volume = value;
124
+ if (this._audioElement)
125
+ this._audioElement.volume = value;
126
+ }
127
+ /** Current playback position in seconds. */
128
+ get currentTime() { return this._audioElement?.currentTime ?? 0; }
129
+ set currentTime(value) {
130
+ if (this._audioElement)
131
+ this._audioElement.currentTime = value;
132
+ }
133
+ /** Normalized playback progress from 0 to 1.
134
+ * @returns The current playback position as a value between 0 and 1, or 0 if the duration is unknown.
135
+ */
136
+ get progress() {
137
+ if (!this._audioElement || !this._duration)
138
+ return 0;
139
+ return this._audioElement.currentTime / this._duration;
140
+ }
141
+ /**
142
+ * Seeks to a normalized position (0–1) in the clip.
143
+ * @param position A value between 0 (start) and 1 (end).
144
+ */
145
+ // #region Seek
146
+ seek(position) {
147
+ if (this._audioElement && this._duration) {
148
+ this._audioElement.currentTime = Math.max(0, Math.min(1, position)) * this._duration;
149
+ }
150
+ }
151
+ /** The underlying HTMLAudioElement, or `undefined` if not yet created.
152
+ * Use this to connect the element to the Web Audio API via `createMediaElementSource()`.
153
+ * @returns The HTMLAudioElement if the clip has been loaded or played, otherwise `undefined`.
154
+ */
155
+ get audioElement() { return this._audioElement; }
156
+ _audioElement;
157
+ _duration;
158
+ _loadPromise;
159
+ _loop = false;
160
+ _volume = 1;
161
+ /** Lazily creates and loads the shared HTMLAudioElement. */
162
+ ensureAudioElement() {
163
+ if (this._audioElement && this._loadPromise) {
164
+ return this._loadPromise;
165
+ }
166
+ const audio = this._audioElement ?? new Audio(this.url);
167
+ this._audioElement = audio;
168
+ audio.loop = this._loop;
169
+ audio.volume = this._volume;
170
+ if (audio.readyState >= HTMLMediaElement.HAVE_METADATA) {
171
+ this._duration = audio.duration;
172
+ this._loadPromise = Promise.resolve(audio);
173
+ return this._loadPromise;
174
+ }
175
+ this._loadPromise = new Promise((resolve, reject) => {
176
+ const onLoaded = () => {
177
+ cleanup();
178
+ this._duration = audio.duration;
179
+ resolve(audio);
180
+ };
181
+ const onError = (e) => {
182
+ cleanup();
183
+ reject(new Error(`Failed to load audio clip from ${this.url}: ${e}`));
184
+ };
185
+ const cleanup = () => {
186
+ audio.removeEventListener("loadedmetadata", onLoaded);
187
+ audio.removeEventListener("error", onError);
188
+ };
189
+ audio.addEventListener("loadedmetadata", onLoaded);
190
+ audio.addEventListener("error", onError);
191
+ });
192
+ return this._loadPromise;
193
+ }
194
+ }
23
195
  //# sourceMappingURL=engine_audio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;6EAE6E;AAC7E,MAAM,UAAU,2BAA2B;IACvC,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACxC,8GAA8G;QAC9G,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,GAAG,EAAE;gBACZ,qKAAqK;gBACrK,MAAM,KAAK,GAAG,GAAG,CAAC,KAA0C,CAAC;gBAC7D,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;oBACnD,GAAG,CAAC,MAAM,EAAE;yBACP,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;6EAE6E;AAC7E,MAAM,UAAU,2BAA2B;IACvC,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACxC,8GAA8G;QAC9G,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,GAAG,EAAE;gBACZ,qKAAqK;gBACrK,MAAM,KAAK,GAAG,GAAG,CAAC,KAA0C,CAAC;gBAC7D,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;oBACnD,GAAG,CAAC,MAAM,EAAE;yBACP,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAGD;;;;GAIG;AACH,MAAM,OAAO,SAAS;IAMU;IAJ5B;;;OAGG;IACH,YAA4B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS;eAChC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;eAC1B,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,WAAW;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,eAAe;IACf,IAAI;QACA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,MAAM,OAAO,GAAG,GAAG,EAAE;oBACjB,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;gBACF,MAAM,OAAO,GAAG,GAAG,EAAE;oBACjB,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC,CAAC;gBACF,MAAM,OAAO,GAAG,GAAG,EAAE;oBACjB,sCAAsC;oBACtC,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;gBACF,MAAM,OAAO,GAAG,GAAG,EAAE;oBACjB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC5C,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC5C,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChD,CAAC,CAAC;gBACF,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,qBAAqB;IACrB,KAAK;QACD,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI;QACA,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,IAAI,IAAI,KAAc,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,KAAc;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;IAC5D,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,KAAa;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED,4CAA4C;IAC5C,IAAI,WAAW,KAAa,OAAO,IAAI,CAAC,aAAa,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,eAAe;IACf,IAAI,CAAC,QAAgB;QACjB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzF,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,KAAmC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEvE,aAAa,CAAoB;IACjC,SAAS,CAAU;IACnB,YAAY,CAA6B;IACzC,KAAK,GAAY,KAAK,CAAC;IACvB,OAAO,GAAW,CAAC,CAAC;IAE5B,4DAA4D;IACpD,kBAAkB;QACtB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,KAAK,CAAC,UAAU,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,QAAQ,GAAG,GAAG,EAAE;gBAClB,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;gBACzB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBACtD,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC;YACF,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACnD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ"}
@@ -5,9 +5,9 @@ import { removeScriptFromContext, updateActiveInHierarchyWithoutEventCall } from
5
5
  import { InstantiateIdProvider } from "./engine_networking_instantiate.js";
6
6
  import { Context, registerComponent } from "./engine_setup.js";
7
7
  import { $componentName } from "./engine_types.js";
8
+ import { TypeStore } from "./engine_typestore.js";
8
9
  import { getParam } from "./engine_utils.js";
9
10
  import { apply } from "./js-extensions/index.js";
10
- import { TypeStore } from "./engine_typestore.js";
11
11
  const COMPONENT_GUID_NAMESPACE = 'eff8ba80-635d-11ec-90d6-0242ac120003';
12
12
  /**
13
13
  * Generates a deterministic guid for a component based on the object's guid and the component type.
@@ -1 +1 @@
1
- {"version":3,"file":"engine_components.js","sourceRoot":"","sources":["../../src/engine/engine_components.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,wBAAwB,GAAG,sCAAsC,CAAC;AAExE;;;;;;GAMG;AACH,SAAS,kCAAkC,CAAC,GAAa,EAAE,SAAqB;IAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,WAAW,CAAC;QACzF,mGAAmG;QACnG,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,WAAkB,CAAC,CAAC;QAC5E,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,SAAS;gBAAE,aAAa,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC;AAC1C,CAAC;AAGD,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC5C,MAAM,YAAY,GAAG,GAAG,EAAE;IACtB,OAAO,KAAK,IAAI,UAAU,CAAC,2BAA2B,CAAC,KAAK,IAAI,CAAC;AACrE,CAAC,CAAA;AAED,SAAS,YAAY,CAAC,GAAG;IACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClD,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC;IAC/B,qCAAqC;IACrC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC3D,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,eAAe,CAAuB,EAAY,EAAE,iBAAoB;IACpF,IAAI,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU;QAAE,OAAO,iBAAiB,CAAC;IACtD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAExC,wBAAwB,CAAC,+BAA+B,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAElG,YAAY;IACZ,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;IACpC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAuB,EAAY,EAAE,QAAgC,EAAE,IAAuB;IAC3H,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,IAAI,UAAiC,CAAC;AACtC,SAAS,aAAa;IAClB,OAAO,UAAU,KAAK,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAuB,GAAa,EAAE,iBAAoB,EAAE,SAAS,GAAG,IAAI;IACvG,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU;QAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;IAC3D,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,iBAAiB,CAAC,UAAU,GAAG,GAAkB,CAAC;IAClD,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/E,iBAAiB,CAAC,IAAI,GAAG,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,6FAA6F;IAC7F,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC;QACD,IAAI,SAAS,IAAI,iBAAiB,CAAC,eAAe,EAAE,CAAC;YACjD,uCAAuC,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,iBAAiB,CAAC,gBAAgB;gBAClC,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAC5C,CAAC;QACD,wBAAwB,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAuB,GAAa,EAAE,iBAA6C,EAAE,IAAuB,EAAE,IAA6B;IAEnK,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,IAAI;YAAE,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,EAAE,SAAS,IAAI,SAAS;YAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7D,OAAO,eAAe,CAAI,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,CAAC;QAC1E,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB,CAAC,UAAU,KAAK,GAAG;QAAE,OAAO,iBAAiB,CAAC;IACnE,6BAA6B;IAC7B,IAAI,iBAAiB,CAAC,UAAU,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1F,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU;QAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;SACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACvF,sDAAsD;IACtD,yCAAyC;IACzC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,iBAAiB,CAAC,UAAU,GAAG,GAAkB,CAAC;IAClD,wCAAwC;IACxC,qCAAqC;IACrC,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/E,iBAAiB,CAAC,IAAI,GAAG,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,IAAI;QAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,6FAA6F;IAC7F,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChE,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAGD,MAAM,UAAU,wBAAwB,CAAC,iBAA6B;IAClE,0EAA0E;IAC1E,6BAA6B;IAC7B,IAAI,iBAAiB,CAAC,UAAU,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1F,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,8CAA8C;IAC9C,IAAI,iBAAiB,CAAC,iBAAiB;QAAE,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;IAC/E,uBAAuB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC5B,sFAAsF;IACtF,YAAY;IACZ,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;AACxC,CAAC;AAED,IAAI,2BAA2B,GAAY,KAAK,CAAC;AAEjD,SAAS,cAAc,CAAI,GAAgC,EAAE,aAA6B,EAAE,GAAS;IACjG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC;YACxC,2BAA2B,GAAG,IAAI,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,waAAwa,EAAE,aAAa,CAAC,CAAC;QAC1c,CAAC;QACD,IAAI,IAAI;YAAE,aAAa,GAAG,IAAsB,CAAC;IACrD,CAAC;IAED,IAAI,YAAY,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;IAExD,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI;QACrD,OAAO,IAAI,CAAC;IAEhB,iBAAiB;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,SAAS,EAAE,CAAC;YACf,IAAI,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;gBACxC,IAAI,YAAY,EAAE;oBACd,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAI,GAAG;oBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;oBACxB,OAAO,SAAS,CAAC;YAC1B,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IACD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAuB,GAAa,EAAE,aAA6B;IAC3F,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAuB,GAAa,EAAE,aAA6B,EAAE,GAAgB,EAAE,aAAsB,IAAI;IAC1I,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,EAAE,CAAC;IACnB,IAAI,UAAU;QAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAuB,GAAa,EAAE,aAA6B,EAAE,kBAA2B,KAAK;IACvI,IAAI,eAAe,KAAK,KAAK,IAAI,GAAG,CAAC,0BAA0B,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,CAAsB,CAAC;IAClE,IAAI,eAAe,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1G,IAAI,GAAG;QAAE,OAAO,GAAQ,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACpF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAuB,GAAa,EAAE,aAA6B,EAAE,GAAS,EAAE,aAAsB,IAAI;IAC7I,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,EAAE,CAAC;IACnB,IAAI,UAAU;QAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/B,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAuB,GAAa,EAAE,aAA6B,EAAE,kBAA2B,KAAK;IACrI,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YACpE,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,oBAAoB;IACpB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC7C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,IAAI,GAAG,CAAC,MAAM;QACV,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAuB,GAAa,EAAE,aAA6B,EAAE,GAAgB,EAAE,aAAsB,IAAI;IAClJ,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,EAAE,CAAC;IACnB,IAAI,UAAU;QAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,MAAM;QACV,OAAO,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACxE,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAuB,IAAoB,EAAE,iBAA0D,SAAS,EAAE,kBAA2B,IAAI;IAC7K,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,GAAG,cAAuB,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,KAAK,GAAI,cAAmC,EAAE,KAAK,CAAC;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAuB,IAAoB,EAAE,KAAW,EAAE,iBAA0D,SAAS;IAC1J,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,EAAE,CAAC;IACvB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjB,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,IAAI,OAAO,IAAI,cAAc;QAAE,cAAc,GAAI,cAAmC,CAAC,KAAK,CAAC;IAE3F,MAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"engine_components.js","sourceRoot":"","sources":["../../src/engine/engine_components.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import 'three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js';
2
+ import type { SceneData } from 'needle-bindings';
2
3
  import type { EffectComposer } from "postprocessing";
3
4
  import { BufferGeometry, Camera, DepthTexture, Group, Material, Object3D, OrthographicCamera, PerspectiveCamera, Scene, Texture, WebGLRenderer, type WebGLRendererParameters, type WebXRArrayCamera } from 'three';
4
5
  import type { EffectComposer as ThreeEffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
@@ -15,7 +16,6 @@ import { NetworkConnection } from './engine_networking.js';
15
16
  import { Physics } from './engine_physics.js';
16
17
  import { PlayerViewManager } from './engine_playerview.js';
17
18
  import { RendererData as SceneLighting } from './engine_scenelighting.js';
18
- import type { SceneData } from 'needle-bindings';
19
19
  import { Time } from './engine_time.js';
20
20
  import type { CoroutineData, ICamera, IComponent, IContext, ILight, Model, SourceIdentifier, Vec2 } from "./engine_types.js";
21
21
  import type { INeedleXRSessionEventReceiver, NeedleXRSession } from './engine_xr.js';
@@ -332,13 +332,14 @@ export declare class Context implements IContext {
332
332
  * Use `setCurrentCamera` for updating the main camera.
333
333
  */
334
334
  /**
335
- * Typed proxy providing direct access to scene components by node and component name.
336
- * Types are auto-generated from your GLB assets by the `needle:dts-generator` Vite plugin
337
- * and written to `src/generated/needle-bindings.d.ts` on every dev-server start and GLB change.
335
+ * Access your scene's full hierarchy, objects, and components directly by name with full autocomplete.
336
+ * Types are generated automatically from your GLB files when the dev server starts.
337
+ *
338
+ * You can store references to objects or components for later use.
339
+ * Note that the scene hierarchy can change at runtime (e.g. when objects are added, removed, or re-parented),
340
+ * in which case stored references may become stale.
338
341
  *
339
- * Each property access traverses the live scene graph on demand — no caching, always fresh.
340
- * This is a convenience shorthand for `getComponent` lookups; the same result can be
341
- * achieved manually via `scene.getObjectByName(name)` + `getComponent(node, Type)`.
342
+ * @experimental This API may change in future versions.
342
343
  *
343
344
  * @example
344
345
  * // Toggle auto-rotate on the orbit camera
@@ -347,12 +348,6 @@ export declare class Context implements IContext {
347
348
  * @example
348
349
  * // Change the background color
349
350
  * ctx.sceneData.Camera.Camera.backgroundColor = new RGBAColor(1, 0, 0, 1);
350
- *
351
- * @example
352
- * // Equivalent manual approach (without sceneData)
353
- * const node = ctx.scene.getObjectByName("Camera");
354
- * const orbit = getComponent(node, OrbitControls);
355
- * if (orbit) orbit.autoRotate = true;
356
351
  */
357
352
  get sceneData(): SceneData;
358
353
  get mainCamera(): Camera;
@@ -376,19 +371,21 @@ export declare class Context implements IContext {
376
371
  connection: NetworkConnection;
377
372
  /** @deprecated AssetDatabase is deprecated */
378
373
  assets: AssetDatabase;
379
- /** All registered lights in the scene, maintained by the Light component */
380
- readonly lights: Set<ILight>;
374
+ /** All registered lights in the scene, maintained by the Light component.
375
+ * @see mainLight for accessing the main directional light in the scene
376
+ */
377
+ readonly lights: ILight[];
381
378
  /** The brightest registered directional light, or null if none are registered
382
379
  * @see lights
383
380
  */
384
381
  get mainLight(): ILight | null;
385
382
  /** @deprecated Use sceneLighting */
386
- get rendererData(): SceneLighting;
383
+ private get rendererData();
387
384
  /** Access the scene lighting manager to control lighting settings in the context */
388
- sceneLighting: SceneLighting;
389
- addressables: Addressables;
390
- lightmaps: ILightDataRegistry;
391
- players: PlayerViewManager;
385
+ readonly sceneLighting: SceneLighting;
386
+ readonly addressables: Addressables;
387
+ readonly lightmaps: ILightDataRegistry;
388
+ readonly players: PlayerViewManager;
392
389
  /** Access the LODs manager to control LOD behavior in the context */
393
390
  readonly lodsManager: LODsManager;
394
391
  /** Access the needle menu to add or remove buttons to the menu element */
@@ -27,8 +27,8 @@ import * as looputils from './engine_mainloop_utils.js';
27
27
  import { NetworkConnection } from './engine_networking.js';
28
28
  import { Physics } from './engine_physics.js';
29
29
  import { PlayerViewManager } from './engine_playerview.js';
30
- import { RendererData as SceneLighting } from './engine_scenelighting.js';
31
30
  import { getSceneData } from './engine_scenedata.js';
31
+ import { RendererData as SceneLighting } from './engine_scenelighting.js';
32
32
  import { logHierarchy } from './engine_three_utils.js';
33
33
  import { Time } from './engine_time.js';
34
34
  import { patchTonemapping } from './engine_tonemapping.js';
@@ -420,13 +420,14 @@ export class Context {
420
420
  * Use `setCurrentCamera` for updating the main camera.
421
421
  */
422
422
  /**
423
- * Typed proxy providing direct access to scene components by node and component name.
424
- * Types are auto-generated from your GLB assets by the `needle:dts-generator` Vite plugin
425
- * and written to `src/generated/needle-bindings.d.ts` on every dev-server start and GLB change.
423
+ * Access your scene's full hierarchy, objects, and components directly by name with full autocomplete.
424
+ * Types are generated automatically from your GLB files when the dev server starts.
425
+ *
426
+ * You can store references to objects or components for later use.
427
+ * Note that the scene hierarchy can change at runtime (e.g. when objects are added, removed, or re-parented),
428
+ * in which case stored references may become stale.
426
429
  *
427
- * Each property access traverses the live scene graph on demand — no caching, always fresh.
428
- * This is a convenience shorthand for `getComponent` lookups; the same result can be
429
- * achieved manually via `scene.getObjectByName(name)` + `getComponent(node, Type)`.
430
+ * @experimental This API may change in future versions.
430
431
  *
431
432
  * @example
432
433
  * // Toggle auto-rotate on the orbit camera
@@ -435,12 +436,6 @@ export class Context {
435
436
  * @example
436
437
  * // Change the background color
437
438
  * ctx.sceneData.Camera.Camera.backgroundColor = new RGBAColor(1, 0, 0, 1);
438
- *
439
- * @example
440
- * // Equivalent manual approach (without sceneData)
441
- * const node = ctx.scene.getObjectByName("Camera");
442
- * const orbit = getComponent(node, OrbitControls);
443
- * if (orbit) orbit.autoRotate = true;
444
439
  */
445
440
  get sceneData() {
446
441
  return getSceneData(this);
@@ -482,8 +477,10 @@ export class Context {
482
477
  connection;
483
478
  /** @deprecated AssetDatabase is deprecated */
484
479
  assets;
485
- /** All registered lights in the scene, maintained by the Light component */
486
- lights = new Set();
480
+ /** All registered lights in the scene, maintained by the Light component.
481
+ * @see mainLight for accessing the main directional light in the scene
482
+ */
483
+ lights = new Array();
487
484
  /** The brightest registered directional light, or null if none are registered
488
485
  * @see lights
489
486
  */
@@ -769,12 +766,12 @@ export class Context {
769
766
  this.scene = new Scene();
770
767
  this.addressables?.dispose();
771
768
  this.lightmaps?.clear();
772
- this.physics?.engine?.clearCaches();
769
+ this.physics?.engine?.dispose();
773
770
  this.lodsManager.disable();
774
771
  this.accessibility?.clear();
775
772
  this._onBeforeRenderListeners.clear();
776
773
  this._onAfterRenderListeners.clear();
777
- this.lights.clear();
774
+ this.lights.length = 0;
778
775
  if (!this.isManagedExternally) {
779
776
  if (this.renderer) {
780
777
  this.renderer.renderLists.dispose();
@@ -813,6 +810,7 @@ export class Context {
813
810
  this.scene = null;
814
811
  this.renderer = null;
815
812
  this.input.dispose();
813
+ this.connection.dispose();
816
814
  this.menu.onDestroy();
817
815
  this.animations.onDestroy();
818
816
  for (const cb of this._disposeCallbacks) {