@needle-tools/engine 5.0.2 → 5.1.0-canary.525aa82

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 (176) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +6 -7
  3. package/SKILL.md +39 -21
  4. package/components.needle.json +1 -1
  5. package/dist/needle-engine.bundle-DPag02s9.min.js +1732 -0
  6. package/dist/needle-engine.bundle-IPMzQpe1.umd.cjs +1732 -0
  7. package/dist/{needle-engine.bundle-BoTyA-Le.js → needle-engine.bundle-qa_NEunk.js} +8881 -8148
  8. package/dist/needle-engine.d.ts +633 -61
  9. package/dist/needle-engine.js +576 -565
  10. package/dist/needle-engine.min.js +1 -1
  11. package/dist/needle-engine.umd.cjs +1 -1
  12. package/dist/{vendor-vHLk8sXu.js → vendor-CAcsI0eU.js} +116 -115
  13. package/dist/{vendor-CntUvmJu.umd.cjs → vendor-CEM38hLE.umd.cjs} +2 -2
  14. package/dist/{vendor-DPbfJJ4d.min.js → vendor-HRlxIBga.min.js} +2 -2
  15. package/lib/engine/api.d.ts +2 -0
  16. package/lib/engine/api.js +2 -0
  17. package/lib/engine/api.js.map +1 -1
  18. package/lib/engine/engine_addressables.js +5 -1
  19. package/lib/engine/engine_addressables.js.map +1 -1
  20. package/lib/engine/engine_animation.d.ts +14 -7
  21. package/lib/engine/engine_animation.js +49 -9
  22. package/lib/engine/engine_animation.js.map +1 -1
  23. package/lib/engine/engine_components.js +33 -4
  24. package/lib/engine/engine_components.js.map +1 -1
  25. package/lib/engine/engine_context.d.ts +7 -2
  26. package/lib/engine/engine_context.js +10 -2
  27. package/lib/engine/engine_context.js.map +1 -1
  28. package/lib/engine/engine_gameobject.d.ts +4 -0
  29. package/lib/engine/engine_gameobject.js.map +1 -1
  30. package/lib/engine/engine_init.js +4 -0
  31. package/lib/engine/engine_init.js.map +1 -1
  32. package/lib/engine/engine_input.js +4 -1
  33. package/lib/engine/engine_input.js.map +1 -1
  34. package/lib/engine/engine_materialpropertyblock.js +1 -20
  35. package/lib/engine/engine_materialpropertyblock.js.map +1 -1
  36. package/lib/engine/engine_networking.d.ts +11 -8
  37. package/lib/engine/engine_networking.js +43 -26
  38. package/lib/engine/engine_networking.js.map +1 -1
  39. package/lib/engine/engine_networking_instantiate.d.ts +100 -5
  40. package/lib/engine/engine_networking_instantiate.js +150 -16
  41. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  42. package/lib/engine/engine_networking_prefabs.d.ts +59 -0
  43. package/lib/engine/engine_networking_prefabs.js +67 -0
  44. package/lib/engine/engine_networking_prefabs.js.map +1 -0
  45. package/lib/engine/engine_physics_rapier.d.ts +3 -0
  46. package/lib/engine/engine_physics_rapier.js +13 -9
  47. package/lib/engine/engine_physics_rapier.js.map +1 -1
  48. package/lib/engine/postprocessing/api.d.ts +2 -0
  49. package/lib/engine/postprocessing/api.js +2 -0
  50. package/lib/engine/postprocessing/api.js.map +1 -0
  51. package/lib/engine/postprocessing/index.d.ts +2 -0
  52. package/lib/engine/postprocessing/index.js +2 -0
  53. package/lib/engine/postprocessing/index.js.map +1 -0
  54. package/lib/engine/postprocessing/postprocessing.d.ts +83 -0
  55. package/lib/engine/postprocessing/postprocessing.js +280 -0
  56. package/lib/engine/postprocessing/postprocessing.js.map +1 -0
  57. package/lib/engine/postprocessing/types.d.ts +39 -0
  58. package/lib/engine/postprocessing/types.js +2 -0
  59. package/lib/engine/postprocessing/types.js.map +1 -0
  60. package/lib/engine/webcomponents/WebXRButtons.js +17 -3
  61. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  62. package/lib/engine/webcomponents/icons.js +3 -1
  63. package/lib/engine/webcomponents/icons.js.map +1 -1
  64. package/lib/engine/xr/NeedleXRSession.d.ts +1 -0
  65. package/lib/engine/xr/NeedleXRSession.js +43 -10
  66. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  67. package/lib/engine/xr/init.d.ts +4 -0
  68. package/lib/engine/xr/init.js +49 -0
  69. package/lib/engine/xr/init.js.map +1 -0
  70. package/lib/engine-components/AnimationUtils.d.ts +4 -1
  71. package/lib/engine-components/AnimationUtils.js +7 -19
  72. package/lib/engine-components/AnimationUtils.js.map +1 -1
  73. package/lib/engine-components/AnimatorController.d.ts +135 -2
  74. package/lib/engine-components/AnimatorController.js +216 -13
  75. package/lib/engine-components/AnimatorController.js.map +1 -1
  76. package/lib/engine-components/GroundProjection.d.ts +1 -0
  77. package/lib/engine-components/GroundProjection.js +184 -48
  78. package/lib/engine-components/GroundProjection.js.map +1 -1
  79. package/lib/engine-components/OrbitControls.d.ts +4 -0
  80. package/lib/engine-components/OrbitControls.js +5 -1
  81. package/lib/engine-components/OrbitControls.js.map +1 -1
  82. package/lib/engine-components/SeeThrough.d.ts +0 -2
  83. package/lib/engine-components/SeeThrough.js +0 -89
  84. package/lib/engine-components/SeeThrough.js.map +1 -1
  85. package/lib/engine-components/SyncedRoom.d.ts +4 -0
  86. package/lib/engine-components/SyncedRoom.js +23 -8
  87. package/lib/engine-components/SyncedRoom.js.map +1 -1
  88. package/lib/engine-components/SyncedTransform.js +5 -5
  89. package/lib/engine-components/SyncedTransform.js.map +1 -1
  90. package/lib/engine-components/Voip.d.ts +46 -0
  91. package/lib/engine-components/Voip.js +126 -2
  92. package/lib/engine-components/Voip.js.map +1 -1
  93. package/lib/engine-components/api.d.ts +1 -0
  94. package/lib/engine-components/api.js +1 -0
  95. package/lib/engine-components/api.js.map +1 -1
  96. package/lib/engine-components/codegen/components.d.ts +1 -0
  97. package/lib/engine-components/codegen/components.js +1 -0
  98. package/lib/engine-components/codegen/components.js.map +1 -1
  99. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +5 -2
  100. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +11 -18
  101. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  102. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +3 -4
  103. package/lib/engine-components/postprocessing/PostProcessingEffect.js +6 -15
  104. package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
  105. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +2 -1
  106. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  107. package/lib/engine-components/postprocessing/Volume.d.ts +18 -11
  108. package/lib/engine-components/postprocessing/Volume.js +61 -140
  109. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  110. package/lib/engine-components/postprocessing/index.d.ts +1 -0
  111. package/lib/engine-components/postprocessing/index.js +1 -0
  112. package/lib/engine-components/postprocessing/index.js.map +1 -1
  113. package/lib/engine-components/postprocessing/utils.d.ts +2 -0
  114. package/lib/engine-components/postprocessing/utils.js +2 -0
  115. package/lib/engine-components/postprocessing/utils.js.map +1 -1
  116. package/lib/engine-components/ui/Canvas.js +2 -2
  117. package/lib/engine-components/ui/Canvas.js.map +1 -1
  118. package/lib/engine-components/ui/Graphic.d.ts +3 -3
  119. package/lib/engine-components/ui/Graphic.js +6 -2
  120. package/lib/engine-components/ui/Graphic.js.map +1 -1
  121. package/lib/engine-components/ui/Text.d.ts +64 -11
  122. package/lib/engine-components/ui/Text.js +154 -45
  123. package/lib/engine-components/ui/Text.js.map +1 -1
  124. package/lib/engine-components/ui/index.d.ts +1 -0
  125. package/lib/engine-components/ui/index.js +1 -0
  126. package/lib/engine-components/ui/index.js.map +1 -1
  127. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +25 -3
  128. package/lib/engine-components-experimental/networking/PlayerSync.js +60 -11
  129. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  130. package/package.json +6 -5
  131. package/plugins/vite/ai.d.ts +11 -10
  132. package/plugins/vite/ai.js +305 -31
  133. package/src/engine/api.ts +3 -0
  134. package/src/engine/engine_addressables.ts +4 -1
  135. package/src/engine/engine_animation.ts +47 -9
  136. package/src/engine/engine_components.ts +36 -7
  137. package/src/engine/engine_context.ts +11 -2
  138. package/src/engine/engine_gameobject.ts +5 -0
  139. package/src/engine/engine_init.ts +4 -0
  140. package/src/engine/engine_input.ts +2 -1
  141. package/src/engine/engine_materialpropertyblock.ts +1 -20
  142. package/src/engine/engine_networking.ts +46 -23
  143. package/src/engine/engine_networking_instantiate.ts +160 -18
  144. package/src/engine/engine_networking_prefabs.ts +80 -0
  145. package/src/engine/engine_physics_rapier.ts +14 -9
  146. package/src/engine/postprocessing/api.ts +2 -0
  147. package/src/engine/postprocessing/index.ts +2 -0
  148. package/src/engine/postprocessing/postprocessing.ts +322 -0
  149. package/src/engine/postprocessing/types.ts +43 -0
  150. package/src/engine/webcomponents/WebXRButtons.ts +21 -4
  151. package/src/engine/webcomponents/icons.ts +5 -3
  152. package/src/engine/xr/NeedleXRSession.ts +50 -15
  153. package/src/engine/xr/init.ts +56 -0
  154. package/src/engine-components/AnimationUtils.ts +7 -17
  155. package/src/engine-components/AnimatorController.ts +288 -18
  156. package/src/engine-components/GroundProjection.ts +226 -52
  157. package/src/engine-components/OrbitControls.ts +5 -1
  158. package/src/engine-components/SeeThrough.ts +0 -116
  159. package/src/engine-components/SyncedRoom.ts +28 -9
  160. package/src/engine-components/SyncedTransform.ts +5 -5
  161. package/src/engine-components/Voip.ts +129 -2
  162. package/src/engine-components/api.ts +1 -0
  163. package/src/engine-components/codegen/components.ts +1 -0
  164. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +16 -24
  165. package/src/engine-components/postprocessing/PostProcessingEffect.ts +9 -16
  166. package/src/engine-components/postprocessing/PostProcessingHandler.ts +2 -1
  167. package/src/engine-components/postprocessing/Volume.ts +72 -163
  168. package/src/engine-components/postprocessing/index.ts +1 -0
  169. package/src/engine-components/postprocessing/utils.ts +2 -0
  170. package/src/engine-components/ui/Canvas.ts +2 -2
  171. package/src/engine-components/ui/Graphic.ts +7 -3
  172. package/src/engine-components/ui/Text.ts +170 -52
  173. package/src/engine-components/ui/index.ts +2 -1
  174. package/src/engine-components-experimental/networking/PlayerSync.ts +64 -11
  175. package/dist/needle-engine.bundle-B3ywqx5o.min.js +0 -1654
  176. package/dist/needle-engine.bundle-CzOPcOui.umd.cjs +0 -1654
@@ -3,7 +3,7 @@ import { type IInstantiateOptions } from "./engine_gameobject.js";
3
3
  import type { INetworkConnection } from "./engine_networking_types.js";
4
4
  import type { IModel } from "./engine_networking_types.js";
5
5
  import { Context } from "./engine_setup.js";
6
- import type { IComponent as Component, IGameObject as GameObject } from "./engine_types.js";
6
+ import type { IComponent as Component, IContext, IGameObject as GameObject } from "./engine_types.js";
7
7
  import type { UIDProvider } from "./engine_types.js";
8
8
  export declare class InstantiateIdProvider implements UIDProvider {
9
9
  get seed(): number;
@@ -38,6 +38,23 @@ declare type SyncDestroyOptions = {
38
38
  */
39
39
  export declare function syncDestroy(obj: GameObject | Component, con: INetworkConnection, recursive?: boolean, opts?: SyncDestroyOptions): void;
40
40
  export declare function sendDestroyed(guid: string, con: INetworkConnection, opts?: SyncDestroyOptions): void;
41
+ declare type SyncDestroyCallback = (guid: string, object: Object3D) => void;
42
+ /**
43
+ * Register a callback that fires when a remote `syncDestroy` event is received.
44
+ * The callback receives the guid and the resolved Object3D (or null if not found in the scene).
45
+ * The callback fires **before** the object is destroyed, so you can still access its state.
46
+ * @param callback Called with the guid and the Object3D about to be destroyed
47
+ * @returns An unsubscribe function
48
+ * @category Networking
49
+ * @example
50
+ * ```ts
51
+ * const unsub = onSyncDestroy((guid, obj) => {
52
+ * console.log("Remote object destroyed:", guid, obj?.name);
53
+ * });
54
+ * // later: unsub();
55
+ * ```
56
+ */
57
+ export declare function onSyncDestroy(callback: SyncDestroyCallback): () => void;
41
58
  export declare function beginListenDestroy(context: Context): void;
42
59
  /**
43
60
  * When a file is instantiated via some server (e.g. via file drop) we also want to send the info where the file can be downloaded.
@@ -86,15 +103,93 @@ export declare class NewInstanceModel implements IModel {
86
103
  }
87
104
  /**
88
105
  * Instantiation options for {@link syncInstantiate}
106
+ * @category Networking
107
+ * @see {@link syncInstantiate} - Instantiate objects across the network
89
108
  */
90
109
  export type SyncInstantiateOptions = IInstantiateOptions & Pick<IModel, "deleteOnDisconnect">;
91
110
  /**
92
- * Instantiate an object across the network. See also {@link syncDestroy}.
111
+ * Callback type for {@link onSyncInstantiate}
112
+ * @param instance The instantiated object
113
+ * @param model The network model data sent with the instantiate event
114
+ * @param context The network context in which the instantiate event was received
115
+ * @category Networking
116
+ */
117
+ declare type SyncInstantiateCallback = (instance: GameObject, model: NewInstanceModel, context: IContext) => void;
118
+ /**
119
+ * Register a callback that fires when a remote `syncInstantiate` object is created on this client.
120
+ * Use this to get references to objects spawned by other users.
121
+ * @param callback Called with the instantiated Object3D, the network model data, and the Needle Engine context in which the instantiate event was received
122
+ * @returns An unsubscribe function
123
+ * @category Networking
124
+ * @example
125
+ * ```ts
126
+ * const unsub = onSyncInstantiate((instance, model, context) => {
127
+ * console.log("Remote object created:", instance.name, model.originalGuid, context);
128
+ * });
129
+ * // later: unsub();
130
+ * ```
131
+ * @see {@link syncInstantiate} - Instantiate objects across the network
132
+ * @see {@link syncDestroy} - Destroy objects across the network
133
+ */
134
+ export declare function onSyncInstantiate(callback: SyncInstantiateCallback): () => void;
135
+ /**
136
+ * Instantiate an object across the network. The object is cloned locally and a network message
137
+ * is sent so all connected clients create the same clone. Late joiners receive the message
138
+ * via room state replay (unless `deleteOnDisconnect` is set or `save` is false).
139
+ *
140
+ * ## How it works internally
141
+ * 1. The prefab is cloned locally using a seeded {@link InstantiateIdProvider}
142
+ * 2. The seed ensures all clients generate **identical deterministic guids** for the clone
143
+ * and all its children — no need to send individual guids over the network
144
+ * 3. A {@link NewInstanceModel} message is sent containing the prefab's `originalGuid`,
145
+ * the clone's `guid`, the `seed`, and transform data
146
+ * 4. On receiving clients, the prefab is resolved via {@link registerPrefabProvider} or
147
+ * by searching the scene for an object with matching guid, then cloned with the same seed
148
+ *
149
+ * ## Runtime-created prefabs (no GLB)
150
+ * If the object has a `guid` but no prefab provider is registered for it, `syncInstantiate`
151
+ * will **auto-register** the object as a prefab provider. This means for code-only prefabs
152
+ * you just need to set a `guid` — no manual `registerPrefabProvider` call needed, as long as
153
+ * all clients run the same setup code that creates the same prefab with the same guid.
154
+ *
155
+ * @param object The object to instantiate. Must have a `guid` property (set one for runtime objects).
156
+ * @param opts Options for the instantiation, including the network context to send the instantiate event to
157
+ * @param hostData Optional data about a file to download when this object is instantiated (e.g. when instantiated via file drop)
158
+ * @param save When false, the state of this instance will not be saved in the networking backend. Default is true.
159
+ * @returns The instantiated object, or null if instantiation failed (e.g. missing guid or network context)
160
+ * @see {@link syncDestroy} - Destroy objects across the network
161
+ * @see {@link onSyncInstantiate} - Register a callback to get references to remotely instantiated objects
162
+ * @see {@link registerPrefabProvider} - Manually register a prefab provider (auto-registered by syncInstantiate)
163
+ * @see {@link unregisterPrefabProvider} - Remove a registered prefab provider
93
164
  * @category Networking
165
+ *
166
+ * @example Basic usage with a runtime-created prefab
167
+ * ```ts
168
+ * const cookie = ObjectUtils.createPrimitive("Cube", { color: 0xff8c00 });
169
+ * cookie.guid = "cookie-prefab";
170
+ * // No need to call registerPrefabProvider — syncInstantiate auto-registers it
171
+ * syncInstantiate(cookie, { parent: ctx.scene, deleteOnDisconnect: false });
172
+ * ```
173
+ *
174
+ * @example With deterministic seed (advanced)
175
+ * ```ts
176
+ * const idProvider = new InstantiateIdProvider("my-seed");
177
+ * const instance = syncInstantiate(prefab, { context, idProvider });
178
+ * ```
179
+ * The seed generates deterministic guids via UUID v5, so all clients produce identical
180
+ * identifiers for the clone and its children without sending them over the network.
94
181
  */
95
182
  export declare function syncInstantiate(object: GameObject | Object3D, opts: SyncInstantiateOptions, hostData?: HostData, save?: boolean): GameObject | null;
96
183
  export declare function generateSeed(): number;
97
184
  export declare function beginListenInstantiate(context: Context): () => void;
98
- export declare type PrefabProviderCallback = (guid: string) => Promise<Object3D | null>;
99
- export declare function registerPrefabProvider(key: string, fn: PrefabProviderCallback): void;
100
- export {};
185
+ export { type PrefabProviderCallback, Prefabs } from "./engine_networking_prefabs.js";
186
+ /**
187
+ * Register a prefab provider. Forwards to {@link Prefabs.register}.
188
+ * @category Networking
189
+ */
190
+ export declare function registerPrefabProvider(key: string, fn: (guid: string) => Promise<Object3D | null>): void;
191
+ /**
192
+ * Unregister a prefab provider. Forwards to {@link Prefabs.unregister}.
193
+ * @category Networking
194
+ */
195
+ export declare function unregisterPrefabProvider(key: string): void;
@@ -114,14 +114,48 @@ export function sendDestroyed(guid, con, opts) {
114
114
  }
115
115
  con.send(InstantiateEvent.InstanceDestroyed, model, SendQueue.Queued);
116
116
  }
117
+ const _onSyncDestroyCallbacks = [];
118
+ /**
119
+ * Register a callback that fires when a remote `syncDestroy` event is received.
120
+ * The callback receives the guid and the resolved Object3D (or null if not found in the scene).
121
+ * The callback fires **before** the object is destroyed, so you can still access its state.
122
+ * @param callback Called with the guid and the Object3D about to be destroyed
123
+ * @returns An unsubscribe function
124
+ * @category Networking
125
+ * @example
126
+ * ```ts
127
+ * const unsub = onSyncDestroy((guid, obj) => {
128
+ * console.log("Remote object destroyed:", guid, obj?.name);
129
+ * });
130
+ * // later: unsub();
131
+ * ```
132
+ */
133
+ export function onSyncDestroy(callback) {
134
+ _onSyncDestroyCallbacks.push(callback);
135
+ return () => {
136
+ const idx = _onSyncDestroyCallbacks.indexOf(callback);
137
+ if (idx >= 0)
138
+ _onSyncDestroyCallbacks.splice(idx, 1);
139
+ };
140
+ }
117
141
  export function beginListenDestroy(context) {
118
142
  context.connection.beginListen(InstantiateEvent.InstanceDestroyed, (data) => {
119
143
  if (debug)
120
144
  console.log("[Remote] Destroyed", context.scene, data);
121
145
  // TODO: create global lookup table for guids
122
146
  const obj = findByGuid(data.guid, context.scene);
123
- if (obj)
147
+ if (obj) {
148
+ // Notify listeners before destroying
149
+ for (const cb of _onSyncDestroyCallbacks) {
150
+ try {
151
+ cb(data.guid, obj);
152
+ }
153
+ catch (err) {
154
+ console.error("Error in onSyncDestroy callback", err);
155
+ }
156
+ }
124
157
  destroy(obj);
158
+ }
125
159
  });
126
160
  }
127
161
  //
@@ -164,21 +198,104 @@ export class NewInstanceModel {
164
198
  this.guid = newGuid;
165
199
  }
166
200
  }
167
- // #region Sync Instantiate
201
+ /** Registered callbacks for remote instantiation events */
202
+ const _onSyncInstantiateCallbacks = [];
203
+ /**
204
+ * Register a callback that fires when a remote `syncInstantiate` object is created on this client.
205
+ * Use this to get references to objects spawned by other users.
206
+ * @param callback Called with the instantiated Object3D, the network model data, and the Needle Engine context in which the instantiate event was received
207
+ * @returns An unsubscribe function
208
+ * @category Networking
209
+ * @example
210
+ * ```ts
211
+ * const unsub = onSyncInstantiate((instance, model, context) => {
212
+ * console.log("Remote object created:", instance.name, model.originalGuid, context);
213
+ * });
214
+ * // later: unsub();
215
+ * ```
216
+ * @see {@link syncInstantiate} - Instantiate objects across the network
217
+ * @see {@link syncDestroy} - Destroy objects across the network
218
+ */
219
+ export function onSyncInstantiate(callback) {
220
+ _onSyncInstantiateCallbacks.push(callback);
221
+ return () => {
222
+ const idx = _onSyncInstantiateCallbacks.indexOf(callback);
223
+ if (idx >= 0)
224
+ _onSyncInstantiateCallbacks.splice(idx, 1);
225
+ };
226
+ }
168
227
  /**
169
- * Instantiate an object across the network. See also {@link syncDestroy}.
228
+ * Instantiate an object across the network. The object is cloned locally and a network message
229
+ * is sent so all connected clients create the same clone. Late joiners receive the message
230
+ * via room state replay (unless `deleteOnDisconnect` is set or `save` is false).
231
+ *
232
+ * ## How it works internally
233
+ * 1. The prefab is cloned locally using a seeded {@link InstantiateIdProvider}
234
+ * 2. The seed ensures all clients generate **identical deterministic guids** for the clone
235
+ * and all its children — no need to send individual guids over the network
236
+ * 3. A {@link NewInstanceModel} message is sent containing the prefab's `originalGuid`,
237
+ * the clone's `guid`, the `seed`, and transform data
238
+ * 4. On receiving clients, the prefab is resolved via {@link registerPrefabProvider} or
239
+ * by searching the scene for an object with matching guid, then cloned with the same seed
240
+ *
241
+ * ## Runtime-created prefabs (no GLB)
242
+ * If the object has a `guid` but no prefab provider is registered for it, `syncInstantiate`
243
+ * will **auto-register** the object as a prefab provider. This means for code-only prefabs
244
+ * you just need to set a `guid` — no manual `registerPrefabProvider` call needed, as long as
245
+ * all clients run the same setup code that creates the same prefab with the same guid.
246
+ *
247
+ * @param object The object to instantiate. Must have a `guid` property (set one for runtime objects).
248
+ * @param opts Options for the instantiation, including the network context to send the instantiate event to
249
+ * @param hostData Optional data about a file to download when this object is instantiated (e.g. when instantiated via file drop)
250
+ * @param save When false, the state of this instance will not be saved in the networking backend. Default is true.
251
+ * @returns The instantiated object, or null if instantiation failed (e.g. missing guid or network context)
252
+ * @see {@link syncDestroy} - Destroy objects across the network
253
+ * @see {@link onSyncInstantiate} - Register a callback to get references to remotely instantiated objects
254
+ * @see {@link registerPrefabProvider} - Manually register a prefab provider (auto-registered by syncInstantiate)
255
+ * @see {@link unregisterPrefabProvider} - Remove a registered prefab provider
170
256
  * @category Networking
257
+ *
258
+ * @example Basic usage with a runtime-created prefab
259
+ * ```ts
260
+ * const cookie = ObjectUtils.createPrimitive("Cube", { color: 0xff8c00 });
261
+ * cookie.guid = "cookie-prefab";
262
+ * // No need to call registerPrefabProvider — syncInstantiate auto-registers it
263
+ * syncInstantiate(cookie, { parent: ctx.scene, deleteOnDisconnect: false });
264
+ * ```
265
+ *
266
+ * @example With deterministic seed (advanced)
267
+ * ```ts
268
+ * const idProvider = new InstantiateIdProvider("my-seed");
269
+ * const instance = syncInstantiate(prefab, { context, idProvider });
270
+ * ```
271
+ * The seed generates deterministic guids via UUID v5, so all clients produce identical
272
+ * identifiers for the clone and its children without sending them over the network.
171
273
  */
172
274
  export function syncInstantiate(object, opts, hostData, save) {
173
275
  const obj = object;
174
276
  if (!obj.guid) {
175
- console.warn("Can not instantiate: No guid", obj);
176
- return null;
277
+ // Auto-assign guid from object name if available.
278
+ // The name must be the same on all clients (which it is when both run the same setup code).
279
+ if (obj.name) {
280
+ obj.guid = obj.name;
281
+ }
282
+ else {
283
+ console.error("[syncInstantiate] Can not instantiate: a 'guid' is required. For runtime-created objects, either set a name (`obj.name = 'my-prefab'`) or a guid (`obj.guid = 'my-prefab-id'`). The identifier must be the same on all clients.", obj);
284
+ return null;
285
+ }
177
286
  }
178
- if (!opts.context)
287
+ // Auto-register the prefab provider if none exists for this guid.
288
+ // This allows runtime-created objects to work with syncInstantiate without
289
+ // manual Prefabs.register calls, as long as all clients create the
290
+ // same prefab with the same guid in their setup code.
291
+ if (!Prefabs.has(obj.guid)) {
292
+ Prefabs.register(obj.guid, async () => obj);
293
+ }
294
+ if (!opts.context) {
179
295
  opts.context = Context.Current;
296
+ }
180
297
  if (!opts.context) {
181
- console.error("Missing network instantiate options / reference to network connection in sync instantiate");
298
+ console.error("[syncInstantiate] Missing network instantiate options / reference to network connection in sync instantiate. Please pass in the Needle Engine context.");
182
299
  return null;
183
300
  }
184
301
  const originalOpts = opts ? { ...opts } : null;
@@ -290,6 +407,15 @@ export function beginListenInstantiate(context) {
290
407
  context.scene.add(inst);
291
408
  if (debug)
292
409
  console.log("[Remote] new instance", "gameobject:", inst?.guid, obj);
410
+ // Notify listeners about the remote instantiation
411
+ for (const cb of _onSyncInstantiateCallbacks) {
412
+ try {
413
+ cb(inst, model, context);
414
+ }
415
+ catch (err) {
416
+ console.error("Error in onSyncInstantiate callback", err);
417
+ }
418
+ }
293
419
  }
294
420
  });
295
421
  const cb2 = context.connection.beginListen("left-room", () => {
@@ -314,18 +440,26 @@ function instantiateSeeded(obj, opts) {
314
440
  const instance = instantiate(obj, options);
315
441
  return { seed: seed, instance: instance };
316
442
  }
317
- const registeredPrefabProviders = {};
318
- //** e.g. provide a function that can return a instantiated object when instantiation event is received */
443
+ export { Prefabs } from "./engine_networking_prefabs.js";
444
+ import { Prefabs } from "./engine_networking_prefabs.js";
445
+ /**
446
+ * Register a prefab provider. Forwards to {@link Prefabs.register}.
447
+ * @category Networking
448
+ */
319
449
  export function registerPrefabProvider(key, fn) {
320
- registeredPrefabProviders[key] = fn;
450
+ Prefabs.register(key, fn);
451
+ }
452
+ /**
453
+ * Unregister a prefab provider. Forwards to {@link Prefabs.unregister}.
454
+ * @category Networking
455
+ */
456
+ export function unregisterPrefabProvider(key) {
457
+ Prefabs.unregister(key);
321
458
  }
322
459
  async function tryResolvePrefab(guid, obj) {
323
- const prov = registeredPrefabProviders[guid];
324
- if (prov !== null && prov !== undefined) {
325
- const res = await prov(guid);
326
- if (res)
327
- return res;
328
- }
460
+ const res = await Prefabs.resolve(guid);
461
+ if (res)
462
+ return res;
329
463
  return tryFindObjectByGuid(guid, obj);
330
464
  }
331
465
  function tryFindObjectByGuid(guid, obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine_networking_instantiate.js","sourceRoot":"","sources":["../../src/engine/engine_networking_instantiate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_networking_instantiate.js","sourceRoot":"","sources":["../../src/engine/engine_networking_instantiate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { Object3D } from "three";
2
+ /**
3
+ * Callback type for prefab providers.
4
+ * @param guid The guid of the prefab to resolve
5
+ * @returns The prefab Object3D, or null if not found
6
+ */
7
+ export declare type PrefabProviderCallback = (guid: string) => Promise<Object3D | null>;
8
+ /**
9
+ * Prefab registry for networked instantiation.
10
+ *
11
+ * When a remote {@link syncInstantiate} event is received, the engine looks up the prefab
12
+ * by its guid using this registry. Both GLB-loaded objects and runtime-created objects
13
+ * can be registered here.
14
+ *
15
+ * Note: {@link syncInstantiate} auto-registers prefabs if no provider exists for their guid,
16
+ * so manual registration is only needed for custom resolution logic.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { Prefabs, ObjectUtils } from "@needle-tools/engine";
21
+ *
22
+ * const cookie = ObjectUtils.createPrimitive("Cube", { color: 0xff8c00 });
23
+ * cookie.guid = "cookie-prefab";
24
+ * Prefabs.register("cookie-prefab", async () => cookie);
25
+ *
26
+ * console.log(Prefabs.list()); // ["cookie-prefab"]
27
+ * Prefabs.unregister("cookie-prefab");
28
+ * ```
29
+ *
30
+ * @category Networking
31
+ */
32
+ export declare const Prefabs: {
33
+ /**
34
+ * Register a prefab provider that resolves objects by guid for networked instantiation.
35
+ * When a remote `syncInstantiate` event is received, the engine uses this to find the prefab
36
+ * to clone on the receiving client.
37
+ *
38
+ * @param key The guid to register the provider for
39
+ * @param fn Callback that returns the prefab Object3D for the given guid
40
+ */
41
+ readonly register: (key: string, fn: PrefabProviderCallback) => void;
42
+ /**
43
+ * Unregister a previously registered prefab provider.
44
+ * @param key The guid to unregister
45
+ */
46
+ readonly unregister: (key: string) => void;
47
+ /**
48
+ * Returns a list of all registered prefab provider keys (guids).
49
+ * Useful for debugging to see which prefabs are available for networked instantiation.
50
+ */
51
+ readonly list: () => string[];
52
+ /**
53
+ * Check if a prefab provider is registered for the given guid.
54
+ * @param key The guid to check
55
+ */
56
+ readonly has: (key: string) => boolean;
57
+ /** @internal Resolve a prefab by guid. Used by the networking system. */
58
+ readonly resolve: (guid: string) => Promise<Object3D | null>;
59
+ };
@@ -0,0 +1,67 @@
1
+ const registeredProviders = {};
2
+ /**
3
+ * Prefab registry for networked instantiation.
4
+ *
5
+ * When a remote {@link syncInstantiate} event is received, the engine looks up the prefab
6
+ * by its guid using this registry. Both GLB-loaded objects and runtime-created objects
7
+ * can be registered here.
8
+ *
9
+ * Note: {@link syncInstantiate} auto-registers prefabs if no provider exists for their guid,
10
+ * so manual registration is only needed for custom resolution logic.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { Prefabs, ObjectUtils } from "@needle-tools/engine";
15
+ *
16
+ * const cookie = ObjectUtils.createPrimitive("Cube", { color: 0xff8c00 });
17
+ * cookie.guid = "cookie-prefab";
18
+ * Prefabs.register("cookie-prefab", async () => cookie);
19
+ *
20
+ * console.log(Prefabs.list()); // ["cookie-prefab"]
21
+ * Prefabs.unregister("cookie-prefab");
22
+ * ```
23
+ *
24
+ * @category Networking
25
+ */
26
+ export const Prefabs = {
27
+ /**
28
+ * Register a prefab provider that resolves objects by guid for networked instantiation.
29
+ * When a remote `syncInstantiate` event is received, the engine uses this to find the prefab
30
+ * to clone on the receiving client.
31
+ *
32
+ * @param key The guid to register the provider for
33
+ * @param fn Callback that returns the prefab Object3D for the given guid
34
+ */
35
+ register(key, fn) {
36
+ registeredProviders[key] = fn;
37
+ },
38
+ /**
39
+ * Unregister a previously registered prefab provider.
40
+ * @param key The guid to unregister
41
+ */
42
+ unregister(key) {
43
+ delete registeredProviders[key];
44
+ },
45
+ /**
46
+ * Returns a list of all registered prefab provider keys (guids).
47
+ * Useful for debugging to see which prefabs are available for networked instantiation.
48
+ */
49
+ list() {
50
+ return Object.keys(registeredProviders);
51
+ },
52
+ /**
53
+ * Check if a prefab provider is registered for the given guid.
54
+ * @param key The guid to check
55
+ */
56
+ has(key) {
57
+ return key in registeredProviders;
58
+ },
59
+ /** @internal Resolve a prefab by guid. Used by the networking system. */
60
+ async resolve(guid) {
61
+ const prov = registeredProviders[guid];
62
+ if (prov)
63
+ return prov(guid);
64
+ return null;
65
+ },
66
+ };
67
+ //# sourceMappingURL=engine_networking_prefabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine_networking_prefabs.js","sourceRoot":"","sources":["../../src/engine/engine_networking_prefabs.ts"],"names":[],"mappings":"AASA,MAAM,mBAAmB,GAA8C,EAAE,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IAEnB;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAW,EAAE,EAA0B;QAC5C,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAW;QAClB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,GAAW;QACX,OAAO,GAAG,IAAI,mBAAmB,CAAC;IACtC,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;CACK,CAAC"}
@@ -2,6 +2,9 @@ import type { Collider, ColliderDesc, QueryFilterFlags, World } from '@dimforge/
2
2
  import { Mesh, Vector3, Vector4Like } from 'three';
3
3
  import type { ICollider, IComponent, IContext, IPhysicsEngine, IRigidbody, Vec2, Vec3 } from './engine_types.js';
4
4
  import { ShapeOverlapResult } from './engine_types.js';
5
+ /** Register the Rapier physics backend. Called from {@link initEngine}
6
+ * to ensure it runs regardless of tree-shaking. */
7
+ export declare function initPhysics(): void;
5
8
  /**
6
9
  * Rapier physics engine implementation for Needle Engine.
7
10
  *
@@ -23,15 +23,19 @@ const $componentKey = Symbol("needle component");
23
23
  const $bodyKey = Symbol("physics body");
24
24
  const $colliderRigidbody = Symbol("rigidbody");
25
25
  globalThis["NEEDLE_USE_RAPIER"] = globalThis["NEEDLE_USE_RAPIER"] !== undefined ? globalThis["NEEDLE_USE_RAPIER"] : true;
26
- if (debugPhysics)
27
- console.log("Use Rapier", NEEDLE_USE_RAPIER, globalThis["NEEDLE_USE_RAPIER"]);
28
- if (NEEDLE_USE_RAPIER) {
29
- ContextRegistry.registerCallback(ContextEvent.ContextCreationStart, evt => {
30
- if (debugPhysics)
31
- console.log("Register rapier physics backend");
32
- evt.context.physics.engine = new RapierPhysics(evt.context);
33
- // We do not initialize physics immediately to avoid loading the physics engine if it is not needed
34
- });
26
+ /** Register the Rapier physics backend. Called from {@link initEngine}
27
+ * to ensure it runs regardless of tree-shaking. */
28
+ export function initPhysics() {
29
+ if (debugPhysics)
30
+ console.log("Use Rapier", NEEDLE_USE_RAPIER, globalThis["NEEDLE_USE_RAPIER"]);
31
+ if (NEEDLE_USE_RAPIER) {
32
+ ContextRegistry.registerCallback(ContextEvent.ContextCreationStart, evt => {
33
+ if (debugPhysics)
34
+ console.log("Register rapier physics backend");
35
+ evt.context.physics.engine = new RapierPhysics(evt.context);
36
+ // We do not initialize physics immediately to avoid loading the physics engine if it is not needed
37
+ });
38
+ }
35
39
  }
36
40
  /**
37
41
  * Rapier physics engine implementation for Needle Engine.