@needle-tools/engine 5.1.0-alpha.3 → 5.1.0-alpha.4

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 (178) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/SKILL.md +4 -1
  3. package/components.needle.json +1 -1
  4. package/dist/needle-engine.bundle-AjVIot3d.min.js +1733 -0
  5. package/dist/{needle-engine.bundle-DF01sSGQ.js → needle-engine.bundle-B7cqsI4c.js} +9149 -8867
  6. package/dist/{needle-engine.bundle-C-ixARur.umd.cjs → needle-engine.bundle-DQCuBTVp.umd.cjs} +154 -154
  7. package/dist/needle-engine.d.ts +754 -199
  8. package/dist/needle-engine.js +583 -584
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/lib/engine/api.d.ts +3 -0
  12. package/lib/engine/api.js +2 -0
  13. package/lib/engine/api.js.map +1 -1
  14. package/lib/engine/codegen/register_types.js +2 -10
  15. package/lib/engine/codegen/register_types.js.map +1 -1
  16. package/lib/engine/engine_context.js +2 -1
  17. package/lib/engine/engine_context.js.map +1 -1
  18. package/lib/engine/engine_disposable.d.ts +172 -0
  19. package/lib/engine/engine_disposable.js +136 -0
  20. package/lib/engine/engine_disposable.js.map +1 -0
  21. package/lib/engine/engine_gameobject.d.ts +1 -10
  22. package/lib/engine/engine_gameobject.js +20 -118
  23. package/lib/engine/engine_gameobject.js.map +1 -1
  24. package/lib/engine/engine_gltf_builtin_components.js +7 -69
  25. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  26. package/lib/engine/engine_instantiate_resolve.d.ts +42 -0
  27. package/lib/engine/engine_instantiate_resolve.js +372 -0
  28. package/lib/engine/engine_instantiate_resolve.js.map +1 -0
  29. package/lib/engine/engine_mainloop_utils.js +2 -2
  30. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  31. package/lib/engine/engine_networking.d.ts +51 -37
  32. package/lib/engine/engine_networking.js +132 -82
  33. package/lib/engine/engine_networking.js.map +1 -1
  34. package/lib/engine/engine_networking.transport.websocket.d.ts +15 -0
  35. package/lib/engine/engine_networking.transport.websocket.js +38 -0
  36. package/lib/engine/engine_networking.transport.websocket.js.map +1 -0
  37. package/lib/engine/engine_networking_instantiate.js +2 -2
  38. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  39. package/lib/engine/engine_networking_types.d.ts +39 -1
  40. package/lib/engine/engine_networking_types.js +7 -0
  41. package/lib/engine/engine_networking_types.js.map +1 -1
  42. package/lib/engine/engine_physics_rapier.d.ts +11 -3
  43. package/lib/engine/engine_physics_rapier.js +88 -25
  44. package/lib/engine/engine_physics_rapier.js.map +1 -1
  45. package/lib/engine/engine_serialization_builtin_serializer.js +1 -5
  46. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  47. package/lib/engine/engine_serialization_core.d.ts +1 -0
  48. package/lib/engine/engine_serialization_core.js +7 -0
  49. package/lib/engine/engine_serialization_core.js.map +1 -1
  50. package/lib/engine/engine_types.d.ts +19 -11
  51. package/lib/engine/engine_types.js +1 -1
  52. package/lib/engine/engine_types.js.map +1 -1
  53. package/lib/engine/engine_util_decorator.js +7 -2
  54. package/lib/engine/engine_util_decorator.js.map +1 -1
  55. package/lib/engine/engine_utils.d.ts +1 -1
  56. package/lib/engine/engine_utils.js +19 -5
  57. package/lib/engine/engine_utils.js.map +1 -1
  58. package/lib/engine-components/Animator.d.ts +6 -0
  59. package/lib/engine-components/Animator.js +17 -12
  60. package/lib/engine-components/Animator.js.map +1 -1
  61. package/lib/engine-components/AnimatorController.builder.d.ts +113 -0
  62. package/lib/engine-components/AnimatorController.builder.js +195 -0
  63. package/lib/engine-components/AnimatorController.builder.js.map +1 -0
  64. package/lib/engine-components/AnimatorController.d.ts +2 -119
  65. package/lib/engine-components/AnimatorController.js +31 -232
  66. package/lib/engine-components/AnimatorController.js.map +1 -1
  67. package/lib/engine-components/Collider.d.ts +18 -9
  68. package/lib/engine-components/Collider.js +61 -14
  69. package/lib/engine-components/Collider.js.map +1 -1
  70. package/lib/engine-components/Component.d.ts +72 -9
  71. package/lib/engine-components/Component.js +114 -10
  72. package/lib/engine-components/Component.js.map +1 -1
  73. package/lib/engine-components/DragControls.js +0 -7
  74. package/lib/engine-components/DragControls.js.map +1 -1
  75. package/lib/engine-components/EventList.d.ts +31 -9
  76. package/lib/engine-components/EventList.js +37 -76
  77. package/lib/engine-components/EventList.js.map +1 -1
  78. package/lib/engine-components/Joints.d.ts +4 -2
  79. package/lib/engine-components/Joints.js +19 -3
  80. package/lib/engine-components/Joints.js.map +1 -1
  81. package/lib/engine-components/Light.js +9 -1
  82. package/lib/engine-components/Light.js.map +1 -1
  83. package/lib/engine-components/RigidBody.d.ts +12 -4
  84. package/lib/engine-components/RigidBody.js +18 -4
  85. package/lib/engine-components/RigidBody.js.map +1 -1
  86. package/lib/engine-components/api.d.ts +1 -1
  87. package/lib/engine-components/api.js +1 -1
  88. package/lib/engine-components/api.js.map +1 -1
  89. package/lib/engine-components/codegen/components.d.ts +3 -9
  90. package/lib/engine-components/codegen/components.js +3 -9
  91. package/lib/engine-components/codegen/components.js.map +1 -1
  92. package/lib/engine-components/timeline/PlayableDirector.d.ts +16 -6
  93. package/lib/engine-components/timeline/PlayableDirector.js +70 -62
  94. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  95. package/lib/engine-components/timeline/SignalAsset.d.ts +3 -1
  96. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  97. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  98. package/lib/engine-components/timeline/TimelineBuilder.d.ts +247 -0
  99. package/lib/engine-components/timeline/TimelineBuilder.js +400 -0
  100. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -0
  101. package/lib/engine-components/timeline/TimelineModels.d.ts +2 -1
  102. package/lib/engine-components/timeline/TimelineModels.js +3 -0
  103. package/lib/engine-components/timeline/TimelineModels.js.map +1 -1
  104. package/lib/engine-components/timeline/TimelineTracks.d.ts +23 -0
  105. package/lib/engine-components/timeline/TimelineTracks.js +71 -13
  106. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  107. package/lib/engine-components/timeline/index.d.ts +2 -1
  108. package/lib/engine-components/timeline/index.js +2 -0
  109. package/lib/engine-components/timeline/index.js.map +1 -1
  110. package/package.json +2 -83
  111. package/plugins/common/license.js +5 -2
  112. package/plugins/common/worker.js +9 -4
  113. package/plugins/vite/dependencies.js +1 -11
  114. package/plugins/vite/dependency-watcher.js +2 -2
  115. package/plugins/vite/editor-connection.js +3 -3
  116. package/plugins/vite/reload.js +1 -1
  117. package/plugins/vite/server.js +2 -1
  118. package/src/engine/api.ts +4 -0
  119. package/src/engine/codegen/register_types.ts +2 -10
  120. package/src/engine/engine_context.ts +2 -1
  121. package/src/engine/engine_disposable.ts +214 -0
  122. package/src/engine/engine_gameobject.ts +52 -157
  123. package/src/engine/engine_gltf_builtin_components.ts +7 -76
  124. package/src/engine/engine_instantiate_resolve.ts +407 -0
  125. package/src/engine/engine_mainloop_utils.ts +2 -2
  126. package/src/engine/engine_networking.transport.websocket.ts +45 -0
  127. package/src/engine/engine_networking.ts +161 -137
  128. package/src/engine/engine_networking_instantiate.ts +2 -2
  129. package/src/engine/engine_networking_types.ts +41 -1
  130. package/src/engine/engine_physics_rapier.ts +82 -27
  131. package/src/engine/engine_serialization_builtin_serializer.ts +1 -6
  132. package/src/engine/engine_serialization_core.ts +9 -0
  133. package/src/engine/engine_types.ts +24 -15
  134. package/src/engine/engine_util_decorator.ts +7 -2
  135. package/src/engine/engine_utils.ts +16 -5
  136. package/src/engine-components/Animator.ts +18 -11
  137. package/src/engine-components/AnimatorController.builder.ts +261 -0
  138. package/src/engine-components/AnimatorController.ts +19 -291
  139. package/src/engine-components/Collider.ts +66 -18
  140. package/src/engine-components/Component.ts +118 -20
  141. package/src/engine-components/DragControls.ts +0 -9
  142. package/src/engine-components/EventList.ts +45 -83
  143. package/src/engine-components/Joints.ts +20 -4
  144. package/src/engine-components/Light.ts +10 -2
  145. package/src/engine-components/RigidBody.ts +18 -4
  146. package/src/engine-components/api.ts +1 -1
  147. package/src/engine-components/codegen/components.ts +3 -9
  148. package/src/engine-components/timeline/PlayableDirector.ts +67 -65
  149. package/src/engine-components/timeline/SignalAsset.ts +4 -1
  150. package/src/engine-components/timeline/TimelineBuilder.ts +564 -0
  151. package/src/engine-components/timeline/TimelineModels.ts +5 -1
  152. package/src/engine-components/timeline/TimelineTracks.ts +74 -13
  153. package/src/engine-components/timeline/index.ts +2 -1
  154. package/dist/needle-engine.bundle-CHmXdnE1.min.js +0 -1733
  155. package/lib/engine-components/AvatarLoader.d.ts +0 -80
  156. package/lib/engine-components/AvatarLoader.js +0 -232
  157. package/lib/engine-components/AvatarLoader.js.map +0 -1
  158. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +0 -11
  159. package/lib/engine-components/avatar/AvatarBlink_Simple.js +0 -77
  160. package/lib/engine-components/avatar/AvatarBlink_Simple.js.map +0 -1
  161. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +0 -14
  162. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +0 -69
  163. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js.map +0 -1
  164. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +0 -29
  165. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +0 -122
  166. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +0 -1
  167. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +0 -15
  168. package/lib/engine-components/avatar/Avatar_MouthShapes.js +0 -80
  169. package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +0 -1
  170. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +0 -9
  171. package/lib/engine-components/avatar/Avatar_MustacheShake.js +0 -30
  172. package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +0 -1
  173. package/src/engine-components/AvatarLoader.ts +0 -264
  174. package/src/engine-components/avatar/AvatarBlink_Simple.ts +0 -70
  175. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +0 -64
  176. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +0 -140
  177. package/src/engine-components/avatar/Avatar_MouthShapes.ts +0 -84
  178. package/src/engine-components/avatar/Avatar_MustacheShake.ts +0 -32
@@ -0,0 +1,372 @@
1
+ import { InstantiateIdProvider } from "./engine_networking_instantiate.js";
2
+ import { isSerializable } from "./engine_serialization_core.js";
3
+ import { isComponent } from "./engine_types.js";
4
+ import { getParam } from "./engine_utils.js";
5
+ const debug = getParam("debuginstantiate");
6
+ // ————————————————————————————————————————————————————————
7
+ // ID Provider Cache (moved from engine_gltf_builtin_components.ts)
8
+ // ————————————————————————————————————————————————————————
9
+ /**
10
+ * Cache of id providers per component/object guid.
11
+ * Ensures deterministic guid generation regardless of scene order.
12
+ */
13
+ const idProviderCache = new Map();
14
+ /** Clear the id provider cache (e.g. when reloading a context) */
15
+ export function clearIdProviderCache() {
16
+ idProviderCache.clear();
17
+ }
18
+ // ————————————————————————————————————————————————————————
19
+ // Guid Generation (moved from engine_gltf_builtin_components.ts)
20
+ // ————————————————————————————————————————————————————————
21
+ export const originalComponentNameKey = Symbol("original-component-name");
22
+ // #region hierarchy guids
23
+ /**
24
+ * Recursively generates new deterministic guids for all objects and components in a hierarchy.
25
+ * Uses the idProviderCache so that the same source guid always produces the same output guid
26
+ * (needed for networking: all clients must agree on the guids of instantiated objects).
27
+ * Populates guidsMap (oldGuid → newGuid) so string references can be remapped afterwards.
28
+ */
29
+ export function generateGuidsForHierarchy(obj, idProvider, guidsMap) {
30
+ if (idProvider === null)
31
+ return;
32
+ if (!obj)
33
+ return;
34
+ const prev = obj.guid;
35
+ // Use a cached id provider per object to ensure stable guids regardless of hierarchy order
36
+ const idProviderKey = obj.guid;
37
+ if (idProviderKey?.length) {
38
+ if (!idProviderCache.has(idProviderKey)) {
39
+ if (debug)
40
+ console.log("Creating InstanceIdProvider with key \"" + idProviderKey + "\" for object " + obj.name);
41
+ idProviderCache.set(idProviderKey, new InstantiateIdProvider(idProviderKey));
42
+ }
43
+ }
44
+ const objectIdProvider = idProviderKey && idProviderCache.get(idProviderKey) || idProvider;
45
+ obj.guid = objectIdProvider.generateUUID();
46
+ if (prev && prev !== "invalid")
47
+ guidsMap[prev] = obj.guid;
48
+ if (obj && obj.userData && obj.userData.components) {
49
+ for (const comp of obj.userData.components) {
50
+ if (comp === null)
51
+ continue;
52
+ const compIdProviderKey = comp.guid;
53
+ if (compIdProviderKey) {
54
+ if (!idProviderCache.has(compIdProviderKey)) {
55
+ if (debug)
56
+ console.log("Creating InstanceIdProvider with key \"" + compIdProviderKey + "\" for component " + comp[originalComponentNameKey]);
57
+ idProviderCache.set(compIdProviderKey, new InstantiateIdProvider(compIdProviderKey));
58
+ }
59
+ }
60
+ else if (debug)
61
+ console.warn("Can not create IdProvider: component " + comp[originalComponentNameKey] + " has no guid", comp.guid);
62
+ const componentIdProvider = idProviderCache.get(compIdProviderKey) || idProvider;
63
+ const compPrev = comp.guid;
64
+ comp.guid = componentIdProvider.generateUUID();
65
+ if (compPrev && compPrev !== "invalid")
66
+ guidsMap[compPrev] = comp.guid;
67
+ }
68
+ }
69
+ if (obj.children) {
70
+ for (const child of obj.children) {
71
+ generateGuidsForHierarchy(child, idProvider, guidsMap);
72
+ }
73
+ }
74
+ }
75
+ // ————————————————————————————————————————————————————————
76
+ // #region reference resolution
77
+ // ————————————————————————————————————————————————————————
78
+ /**
79
+ * The unified reference resolution function.
80
+ * Iterates all cloned components in the objectMap and remaps their properties
81
+ * to point at cloned counterparts where appropriate.
82
+ *
83
+ * Handles: Component, Object3D, Array, Map, Set, Record/plain objects,
84
+ * EventList, Vector/Color/Quaternion, and @serializable nested objects.
85
+ */
86
+ export function resolveInstanceReferences(objectMap) {
87
+ for (const key in objectMap) {
88
+ const val = objectMap[key];
89
+ const clone = val.clone;
90
+ if (!clone?.isObject3D || !clone?.userData?.components)
91
+ continue;
92
+ for (let i = 0; i < clone.userData.components.length; i++) {
93
+ const component = clone.userData.components[i];
94
+ const entries = Object.entries(component);
95
+ for (const [propKey, propValue] of entries) {
96
+ if (propValue === null || propValue === undefined)
97
+ continue;
98
+ // Skip primitives that can't be remapped, but allow strings for guid resolution
99
+ if (typeof propValue !== "object" && typeof propValue !== "string")
100
+ continue;
101
+ const resolved = resolveValue(propKey, propValue, objectMap);
102
+ if (resolved !== undefined) {
103
+ component[propKey] = resolved;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Resolves string-based guid references in all components of a hierarchy using a GuidsMap.
111
+ * Used by the glTF loading path where objects get new guids assigned and string references
112
+ * (e.g. PlayableDirector track.outputs) need to be updated.
113
+ */
114
+ export function resolveStringGuidsInHierarchy(root, guidsMap) {
115
+ resolveStringGuidsRecursive(root, guidsMap);
116
+ }
117
+ function resolveStringGuidsRecursive(obj, guidsMap) {
118
+ if (obj.userData?.components) {
119
+ for (const component of obj.userData.components) {
120
+ if (component === null)
121
+ continue;
122
+ resolveStringGuidsInObject(component, guidsMap);
123
+ }
124
+ }
125
+ if (obj.children) {
126
+ for (const child of obj.children) {
127
+ resolveStringGuidsRecursive(child, guidsMap);
128
+ }
129
+ }
130
+ }
131
+ function resolveStringGuidsInObject(obj, guidsMap, visited) {
132
+ if (!visited)
133
+ visited = new WeakSet();
134
+ if (visited.has(obj))
135
+ return;
136
+ visited.add(obj);
137
+ for (const key of Object.keys(obj)) {
138
+ const value = obj[key];
139
+ if (value === null || value === undefined)
140
+ continue;
141
+ if (typeof value === "string") {
142
+ if (guidsMap[value]) {
143
+ obj[key] = guidsMap[value];
144
+ }
145
+ }
146
+ else if (Array.isArray(value)) {
147
+ for (let i = 0; i < value.length; i++) {
148
+ if (typeof value[i] === "string" && guidsMap[value[i]]) {
149
+ value[i] = guidsMap[value[i]];
150
+ }
151
+ else if (typeof value[i] === "object" && value[i] !== null) {
152
+ resolveStringGuidsInObject(value[i], guidsMap, visited);
153
+ }
154
+ }
155
+ }
156
+ else if (typeof value === "object") {
157
+ // Skip known non-data objects
158
+ if (value.isObject3D || value.isComponent)
159
+ continue;
160
+ resolveStringGuidsInObject(value, guidsMap, visited);
161
+ }
162
+ }
163
+ }
164
+ // #region resolveValue
165
+ /**
166
+ * Resolve a single value, returning the remapped value or undefined if no remap needed.
167
+ * This is the core remapping logic called recursively for nested structures.
168
+ */
169
+ export function resolveValue(key, value, objectMap) {
170
+ // Handle null/undefined early to avoid unnecessary processing
171
+ if (value === undefined)
172
+ return undefined;
173
+ if (value === null)
174
+ return null;
175
+ // String guid resolution: if this string is a known guid/uuid in the objectMap,
176
+ // resolve it directly to the clone object. This handles e.g. PlayableDirector track.outputs.
177
+ if (typeof value === "string") {
178
+ const ref = objectMap[value];
179
+ if (ref) {
180
+ return ref.clone;
181
+ }
182
+ return undefined;
183
+ }
184
+ // Primitives: no remapping needed
185
+ if (typeof value !== "object")
186
+ return undefined;
187
+ // 1. Component → find cloned counterpart by gameObject.uuid + component index
188
+ if (isComponent(value)) {
189
+ return resolveComponentReference(value, objectMap);
190
+ }
191
+ // 2. Object3D → uuid lookup, return clone if found (otherwise external, keep as-is)
192
+ if (value.isObject3D === true) {
193
+ if (key === "gameObject")
194
+ return undefined;
195
+ const id = value.uuid;
196
+ const cloneRef = objectMap[id]?.clone;
197
+ if (cloneRef) {
198
+ if (debug)
199
+ console.log(key, "old", value, "new", cloneRef);
200
+ return cloneRef;
201
+ }
202
+ return undefined;
203
+ }
204
+ // 3. Cloneable value types (Vector3, Quaternion, Euler, Color)
205
+ if (isCloneableValueType(value)) {
206
+ return value.clone();
207
+ }
208
+ // 4. Array → create new array, recursively resolve each element
209
+ if (Array.isArray(value)) {
210
+ return resolveArray(key, value, objectMap);
211
+ }
212
+ // 5. Map → create new Map, resolve keys and values
213
+ if (value instanceof Map) {
214
+ return resolveMap(value, objectMap);
215
+ }
216
+ // 6. Set → create new Set, resolve values
217
+ if (value instanceof Set) {
218
+ return resolveSet(value, objectMap);
219
+ }
220
+ // 7. WeakMap / WeakSet → NOT iterable, cannot remap. Keep as-is.
221
+ if (value instanceof WeakMap || value instanceof WeakSet) {
222
+ return undefined;
223
+ }
224
+ // 8. @serializable objects (incl. EventList, CallInfo) → shallow clone + recursively resolve $serializedTypes fields
225
+ if (isSerializable(value) && value.$serializedTypes) {
226
+ return resolveSerializableObject(value, objectMap);
227
+ }
228
+ // 9. Plain objects / Records → shallow clone, resolve each value
229
+ if (isPlainObject(value)) {
230
+ return resolvePlainObject(key, value, objectMap);
231
+ }
232
+ return undefined;
233
+ }
234
+ // ————————————————————————————————————————————————————————
235
+ // Internal Helpers
236
+ // ————————————————————————————————————————————————————————
237
+ function resolveComponentReference(value, objectMap) {
238
+ const originalGameObject = value["gameObject"];
239
+ if (!originalGameObject)
240
+ return undefined;
241
+ const id = originalGameObject.uuid;
242
+ const newGameObject = objectMap[id]?.clone;
243
+ if (!newGameObject) {
244
+ // Reference points to an object not in the cloned hierarchy (external)
245
+ if (debug)
246
+ console.log("Component reference did not change (external)", value);
247
+ return undefined;
248
+ }
249
+ const index = originalGameObject.userData.components.indexOf(value);
250
+ if (index >= 0 && newGameObject.isObject3D) {
251
+ if (debug)
252
+ console.log("Resolved component", id, "at index", index);
253
+ return newGameObject.userData.components[index];
254
+ }
255
+ else {
256
+ console.warn("Could not find component at expected index", value);
257
+ }
258
+ return undefined;
259
+ }
260
+ function resolveArray(key, arr, objectMap) {
261
+ const result = [];
262
+ for (let i = 0; i < arr.length; i++) {
263
+ const entry = arr[i];
264
+ if (entry === null || entry === undefined) {
265
+ result.push(entry);
266
+ continue;
267
+ }
268
+ // Skip primitives that can't be remapped (numbers, booleans)
269
+ // but allow strings through for guid resolution
270
+ if (typeof entry !== "object" && typeof entry !== "string") {
271
+ result.push(entry);
272
+ continue;
273
+ }
274
+ const resolved = resolveValue(key, entry, objectMap);
275
+ result.push(resolved !== undefined ? resolved : entry);
276
+ }
277
+ return result;
278
+ }
279
+ function resolveMap(map, objectMap) {
280
+ const result = new Map();
281
+ let didChange = false;
282
+ for (const [mapKey, mapValue] of map) {
283
+ let resolvedKey = mapKey;
284
+ let resolvedValue = mapValue;
285
+ if (typeof mapKey === "object" && mapKey !== null) {
286
+ const rk = resolveValue("", mapKey, objectMap);
287
+ if (rk !== undefined) {
288
+ resolvedKey = rk;
289
+ didChange = true;
290
+ }
291
+ }
292
+ if (typeof mapValue === "object" && mapValue !== null) {
293
+ const rv = resolveValue("", mapValue, objectMap);
294
+ if (rv !== undefined) {
295
+ resolvedValue = rv;
296
+ didChange = true;
297
+ }
298
+ }
299
+ result.set(resolvedKey, resolvedValue);
300
+ }
301
+ return didChange ? result : result; // always return new Map to prevent shared mutation
302
+ }
303
+ function resolveSet(set, objectMap) {
304
+ const result = new Set();
305
+ for (const entry of set) {
306
+ if (typeof entry === "object" && entry !== null) {
307
+ const resolved = resolveValue("", entry, objectMap);
308
+ result.add(resolved !== undefined ? resolved : entry);
309
+ }
310
+ else {
311
+ result.add(entry);
312
+ }
313
+ }
314
+ return result;
315
+ }
316
+ function resolveSerializableObject(value, objectMap) {
317
+ // Clone the serializable object to avoid mutating the original (which may be shared with source)
318
+ const cloned = Object.assign(Object.create(Object.getPrototypeOf(value)), value);
319
+ let didChange = false;
320
+ for (const key in cloned.$serializedTypes) {
321
+ const val = cloned[key];
322
+ if (val === null || val === undefined)
323
+ continue;
324
+ if (typeof val === "object") {
325
+ if (debug)
326
+ console.log("Recursively resolve references for", key, val);
327
+ const resolved = resolveValue(key, val, objectMap);
328
+ if (resolved !== undefined) {
329
+ cloned[key] = resolved;
330
+ didChange = true;
331
+ }
332
+ }
333
+ }
334
+ return didChange ? cloned : undefined;
335
+ }
336
+ function resolvePlainObject(_parentKey, obj, objectMap) {
337
+ let didChange = false;
338
+ const clone = { ...obj };
339
+ for (const key of Object.keys(clone)) {
340
+ const val = clone[key];
341
+ if (val === null || val === undefined)
342
+ continue;
343
+ // Skip primitives that can't be remapped, but allow strings for guid resolution
344
+ if (typeof val !== "object" && typeof val !== "string")
345
+ continue;
346
+ const resolved = resolveValue(key, val, objectMap);
347
+ if (resolved !== undefined) {
348
+ clone[key] = resolved;
349
+ didChange = true;
350
+ }
351
+ }
352
+ return didChange ? clone : undefined;
353
+ }
354
+ function isPlainObject(obj) {
355
+ if (typeof obj !== "object" || obj === null)
356
+ return false;
357
+ const proto = Object.getPrototypeOf(obj);
358
+ return proto === Object.prototype || proto === null;
359
+ }
360
+ /** Returns true if the object is a three.js value type that should be cloned (not remapped) */
361
+ function isCloneableValueType(value) {
362
+ return value.isVector2 === true ||
363
+ value.isVector3 === true ||
364
+ value.isVector4 === true ||
365
+ value.isQuaternion === true ||
366
+ value.isEuler === true ||
367
+ value.isColor === true ||
368
+ value.isMatrix2 === true ||
369
+ value.isMatrix3 === true ||
370
+ value.isMatrix4 === true;
371
+ }
372
+ //# sourceMappingURL=engine_instantiate_resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine_instantiate_resolve.js","sourceRoot":"","sources":["../../src/engine/engine_instantiate_resolve.ts"],"names":[],"mappings":"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"}
@@ -351,8 +351,8 @@ function updateIsActiveInHierarchyRecursiveRuntime(go, activeInHierarchy, allowE
351
351
  }
352
352
  else if (comp) {
353
353
  if (comp["__didAwake"] && comp.enabled) {
354
- comp["__didEnable"] = false;
355
- comp.onDisable();
354
+ // autoCleanup uses __internalDisable; isRemovingFromScene=true preserves __isEnabled
355
+ comp.__internalDisable(true);
356
356
  }
357
357
  }
358
358
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine_mainloop_utils.js","sourceRoot":"","sources":["../../src/engine/engine_mainloop_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_mainloop_utils.js","sourceRoot":"","sources":["../../src/engine/engine_mainloop_utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import * as flatbuffers from 'flatbuffers';
2
2
  import { PeerNetworking } from './engine_networking_peer.js';
3
- import { type IModel, type INetworkConnection, SendQueue } from './engine_networking_types.js';
3
+ import { type IModel, type INetworkConnection, type INetworkTransport, SendQueue } from './engine_networking_types.js';
4
4
  import { Context } from './engine_setup.js';
5
+ import type { DisposeFn } from "./engine_disposable.js";
5
6
  export declare const debugNet: boolean;
6
7
  export declare const debugOwner: boolean;
7
8
  export interface INetworkingWebsocketUrlProvider {
@@ -75,7 +76,7 @@ declare type OwnershipResponse = {
75
76
  guid: string;
76
77
  value: boolean;
77
78
  };
78
- declare type WebsocketSendType = IModel | object | boolean | null | string | number;
79
+ declare type WebsocketSendType = IModel | object | boolean | string | number;
79
80
  /** Maps known networking event keys to their callback signatures.
80
81
  * Used by {@link NetworkConnection.beginListen} and {@link NetworkConnection.stopListen} for type-safe event handling.
81
82
  */
@@ -365,7 +366,7 @@ export declare class NetworkConnection implements INetworkConnection {
365
366
  /** Use to leave a room that you are currently connected to (use `leaveRoom()` to disconnect from the currently active room but you can also specify a room name) */
366
367
  leaveRoom(room?: string | null): boolean;
367
368
  /** Send a message to the networking backend - it will be broadcasted to all connected users (except yourself) in the same room by default */
368
- send<K extends NetworkEventKey>(key: K, data?: (K extends keyof NetworkEventMap ? NetworkEventData<K> : WebsocketSendType) | null, queue?: SendQueue): void;
369
+ send<K extends NetworkEventKey>(key: K, data?: (K extends keyof NetworkEventMap ? NetworkEventData<K> : WebsocketSendType), queue?: SendQueue): void;
369
370
  /**
370
371
  * Deletes the network state for a specific object on the server.
371
372
  * This removes the object's state from the room, preventing it from being sent to newly joining users.
@@ -387,61 +388,69 @@ export declare class NetworkConnection implements INetworkConnection {
387
388
  private _defaultMessagesBufferArray;
388
389
  sendBufferedMessagesNow(): void;
389
390
  /** Use to start listening to networking events.
390
- * To unsubscribe from events use the `{@link stopListen}` method.
391
+ * Returns an unsubscribe function that removes the listener when called.
392
+ * The returned function can also be passed to {@link stopListen} or {@link Component.autoCleanup} for automatic lifecycle management.
391
393
  *
392
- * @example Custom event example
394
+ * @example With autoCleanup (recommended)
393
395
  * ```ts
394
- * // Listen to a custom event sent by the server
395
- * this.context.connection.beginListen<MyDataType>("my-custom-event", (data) => {
396
- * console.log("Received custom event:", data);
397
- * });
396
+ * export class MyComponent extends Behaviour {
397
+ * onEnable() {
398
+ * this.autoCleanup(this.context.connection.beginListen("joined-room", () => {
399
+ * console.log("I joined a networked room");
400
+ * }));
401
+ * }
402
+ * // Automatically unsubscribed on disable — no manual cleanup needed!
403
+ * }
398
404
  * ```
399
405
  *
400
- * @example Listening to room events
406
+ * @example Manual unsubscribe
407
+ * ```ts
408
+ * const unsub = this.context.connection.beginListen("joined-room", () => { });
409
+ * // Later:
410
+ * unsub(); // removes the listener
411
+ * ```
412
+ *
413
+ * @example With stopListen (legacy pattern, still supported)
401
414
  * ```ts
402
- * // Make sure to unsubscribe from events when the component is disabled
403
415
  * export class MyComponent extends Behaviour {
404
416
  * onEnable() {
405
- * this.connection.beginListen("joined-room", this.onJoinedRoom)
417
+ * this.context.connection.beginListen("joined-room", this.onJoinedRoom);
406
418
  * }
407
419
  * onDisable() {
408
- * this.connection.stopListen("joined-room", this.onJoinedRoom)
420
+ * this.context.connection.stopListen("joined-room", this.onJoinedRoom);
409
421
  * }
410
422
  * onJoinedRoom = () => {
411
- * console.log("I joined a networked room")
423
+ * console.log("I joined a networked room");
412
424
  * }
413
425
  * }
414
426
  * ```
415
427
  * @link https://engine.needle.tools/docs/networking.html
416
428
  *
417
429
  */
418
- beginListen<K extends NetworkEventKey>(key: K, callback: K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void): K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void;
430
+ beginListen<K extends NetworkEventKey>(key: K, callback: K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void): DisposeFn;
419
431
  /**@deprecated please use stopListen instead (2.65.2-pre) */
420
432
  stopListening<K extends NetworkEventKey>(key: K, callback: (K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void) | null): void;
421
- /** Use to stop listening to networking events
433
+ /** Use to stop listening to networking events.
434
+ * Accepts either the original callback or the unsubscribe function returned by {@link beginListen}.
422
435
  * To subscribe to events use the `{@link beginListen}` method.
423
- * See the example below for typical usage:
424
436
  *
425
- * ### Component Example
437
+ * @example
426
438
  * ```ts
427
- * // Make sure to unsubscribe from events when the component is disabled
428
- * export class MyComponent extends Behaviour {
429
- * onEnable() {
430
- * this.connection.beginListen("joined-room", this.onJoinedRoom)
431
- * }
432
- * onDisable() {
433
- * this.connection.stopListen("joined-room", this.onJoinedRoom)
434
- * }
435
- * onJoinedRoom = () => {
436
- * console.log("I joined a networked room")
437
- * }
438
- * }
439
+ * // Both patterns work:
440
+ * this.context.connection.stopListen("joined-room", this.onJoinedRoom); // original callback
441
+ * this.context.connection.stopListen("joined-room", unsub); // unsubscribe fn from beginListen
439
442
  * ```
440
443
  */
441
- stopListen<K extends NetworkEventKey>(key: K, callback: (K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void) | null): void;
442
- /** Use to start listening to networking binary events */
443
- beginListenBinary(identifier: string, callback: BinaryCallback): BinaryCallback;
444
- /** Use to stop listening to networking binary events */
444
+ private static _didLogStopListenHint;
445
+ stopListen<K extends NetworkEventKey>(key: K, callback: (K extends keyof NetworkEventMap ? NetworkEventMap[K] : (...args: any[]) => void) | Function | null): void;
446
+ /** Use to start listening to networking binary events.
447
+ * Returns an unsubscribe function that removes the listener when called.
448
+ * The returned function can also be passed to {@link stopListenBinary} or {@link Component.autoCleanup}.
449
+ */
450
+ beginListenBinary(identifier: string, callback: BinaryCallback): DisposeFn;
451
+ /** Use to stop listening to networking binary events.
452
+ * Accepts either the original callback or the unsubscribe function returned by {@link beginListenBinary}.
453
+ */
445
454
  stopListenBinary(identifier: string, callback: any): void;
446
455
  private netWebSocketUrlProvider?;
447
456
  /** Use to override the networking server backend url.
@@ -450,16 +459,19 @@ export declare class NetworkConnection implements INetworkConnection {
450
459
  registerProvider(prov: INetworkingWebsocketUrlProvider): void;
451
460
  /** Used to connect to the networking server
452
461
  * @param url Optional url to connect to. If not provided, it will use the url from the registered `INetworkingWebsocketUrlProvider` or the default backend networking url. If you want to change the url after connecting, you need to disconnect first and then connect again with the new url.
462
+ * @param transport Optional custom transport to use instead of the default websocket. Useful for testing or alternative transports.
453
463
  */
454
- connect(url?: string): Promise<boolean>;
464
+ connect(url?: string, transport?: INetworkTransport): Promise<boolean>;
455
465
  /** Disconnect from the networking backend + reset internal state */
456
466
  disconnect(): void;
467
+ /** Full teardown: disconnect, clear all listeners, and release all resources.
468
+ * Called when the owning Context is destroyed. After dispose(), this instance should not be reused. */
469
+ dispose(): void;
457
470
  private _listeners;
458
471
  private _listenersBinary;
459
472
  private connected;
460
- private channelId;
461
473
  private _connectionId;
462
- private _ws;
474
+ private _transport;
463
475
  private _waitingForSocket;
464
476
  private _isInRoom;
465
477
  private _currentRoomName;
@@ -469,6 +481,8 @@ export declare class NetworkConnection implements INetworkConnection {
469
481
  private _state;
470
482
  private _currentDelay;
471
483
  private _connectingToWebsocketPromise;
484
+ /** Wire up a transport's event callbacks and start it */
485
+ private connectTransport;
472
486
  private connectWebsocket;
473
487
  private onMessage;
474
488
  private handleIncomingBinaryMessage;