@needle-tools/engine 5.0.2 → 5.1.0-canary.87c4c44
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.
- package/CHANGELOG.md +24 -0
- package/README.md +6 -7
- package/SKILL.md +39 -21
- package/components.needle.json +1 -1
- package/dist/needle-engine.bundle-BlVD1I5a.min.js +1656 -0
- package/dist/{needle-engine.bundle-BoTyA-Le.js → needle-engine.bundle-CFOipCo_.js} +8519 -7920
- package/dist/needle-engine.bundle-DX2Y-SQF.umd.cjs +1656 -0
- package/dist/needle-engine.d.ts +628 -61
- package/dist/needle-engine.js +575 -565
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{vendor-vHLk8sXu.js → vendor-CAcsI0eU.js} +116 -115
- package/dist/{vendor-CntUvmJu.umd.cjs → vendor-CEM38hLE.umd.cjs} +2 -2
- package/dist/{vendor-DPbfJJ4d.min.js → vendor-HRlxIBga.min.js} +2 -2
- package/lib/engine/api.d.ts +2 -0
- package/lib/engine/api.js +2 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_addressables.js +5 -1
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_animation.d.ts +14 -7
- package/lib/engine/engine_animation.js +49 -9
- package/lib/engine/engine_animation.js.map +1 -1
- package/lib/engine/engine_components.js +33 -4
- package/lib/engine/engine_components.js.map +1 -1
- package/lib/engine/engine_context.d.ts +7 -2
- package/lib/engine/engine_context.js +10 -2
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_gameobject.d.ts +4 -0
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_init.js +2 -0
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_input.js +4 -1
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_materialpropertyblock.js +1 -20
- package/lib/engine/engine_materialpropertyblock.js.map +1 -1
- package/lib/engine/engine_networking.d.ts +11 -8
- package/lib/engine/engine_networking.js +43 -26
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_networking_instantiate.d.ts +100 -5
- package/lib/engine/engine_networking_instantiate.js +150 -16
- package/lib/engine/engine_networking_instantiate.js.map +1 -1
- package/lib/engine/engine_networking_prefabs.d.ts +59 -0
- package/lib/engine/engine_networking_prefabs.js +67 -0
- package/lib/engine/engine_networking_prefabs.js.map +1 -0
- package/lib/engine/postprocessing/api.d.ts +2 -0
- package/lib/engine/postprocessing/api.js +2 -0
- package/lib/engine/postprocessing/api.js.map +1 -0
- package/lib/engine/postprocessing/index.d.ts +2 -0
- package/lib/engine/postprocessing/index.js +2 -0
- package/lib/engine/postprocessing/index.js.map +1 -0
- package/lib/engine/postprocessing/postprocessing.d.ts +83 -0
- package/lib/engine/postprocessing/postprocessing.js +280 -0
- package/lib/engine/postprocessing/postprocessing.js.map +1 -0
- package/lib/engine/postprocessing/types.d.ts +39 -0
- package/lib/engine/postprocessing/types.js +2 -0
- package/lib/engine/postprocessing/types.js.map +1 -0
- package/lib/engine/webcomponents/WebXRButtons.js +17 -3
- package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
- package/lib/engine/webcomponents/icons.js +3 -1
- package/lib/engine/webcomponents/icons.js.map +1 -1
- package/lib/engine/xr/NeedleXRSession.d.ts +1 -0
- package/lib/engine/xr/NeedleXRSession.js +43 -10
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine/xr/init.d.ts +4 -0
- package/lib/engine/xr/init.js +49 -0
- package/lib/engine/xr/init.js.map +1 -0
- package/lib/engine-components/AnimationUtils.d.ts +4 -1
- package/lib/engine-components/AnimationUtils.js +7 -19
- package/lib/engine-components/AnimationUtils.js.map +1 -1
- package/lib/engine-components/AnimatorController.d.ts +135 -2
- package/lib/engine-components/AnimatorController.js +216 -13
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +4 -0
- package/lib/engine-components/OrbitControls.js +5 -1
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/SeeThrough.d.ts +0 -2
- package/lib/engine-components/SeeThrough.js +0 -89
- package/lib/engine-components/SeeThrough.js.map +1 -1
- package/lib/engine-components/SyncedRoom.d.ts +4 -0
- package/lib/engine-components/SyncedRoom.js +23 -8
- package/lib/engine-components/SyncedRoom.js.map +1 -1
- package/lib/engine-components/SyncedTransform.js +5 -5
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/Voip.d.ts +46 -0
- package/lib/engine-components/Voip.js +126 -2
- package/lib/engine-components/Voip.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -0
- package/lib/engine-components/api.js +1 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +5 -2
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +11 -18
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +3 -4
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +6 -15
- package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +2 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
- package/lib/engine-components/postprocessing/Volume.d.ts +18 -11
- package/lib/engine-components/postprocessing/Volume.js +61 -140
- package/lib/engine-components/postprocessing/Volume.js.map +1 -1
- package/lib/engine-components/postprocessing/index.d.ts +1 -0
- package/lib/engine-components/postprocessing/index.js +1 -0
- package/lib/engine-components/postprocessing/index.js.map +1 -1
- package/lib/engine-components/postprocessing/utils.d.ts +2 -0
- package/lib/engine-components/postprocessing/utils.js +2 -0
- package/lib/engine-components/postprocessing/utils.js.map +1 -1
- package/lib/engine-components/ui/Canvas.js +2 -2
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/Graphic.d.ts +3 -3
- package/lib/engine-components/ui/Graphic.js +6 -2
- package/lib/engine-components/ui/Graphic.js.map +1 -1
- package/lib/engine-components/ui/Text.d.ts +64 -11
- package/lib/engine-components/ui/Text.js +154 -45
- package/lib/engine-components/ui/Text.js.map +1 -1
- package/lib/engine-components/ui/index.d.ts +1 -0
- package/lib/engine-components/ui/index.js +1 -0
- package/lib/engine-components/ui/index.js.map +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +25 -3
- package/lib/engine-components-experimental/networking/PlayerSync.js +60 -11
- package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
- package/package.json +6 -5
- package/plugins/vite/ai.d.ts +11 -10
- package/plugins/vite/ai.js +305 -31
- package/plugins/vite/dependencies.js +5 -0
- package/src/engine/api.ts +3 -0
- package/src/engine/engine_addressables.ts +4 -1
- package/src/engine/engine_animation.ts +47 -9
- package/src/engine/engine_components.ts +36 -7
- package/src/engine/engine_context.ts +11 -2
- package/src/engine/engine_gameobject.ts +5 -0
- package/src/engine/engine_init.ts +2 -0
- package/src/engine/engine_input.ts +2 -1
- package/src/engine/engine_materialpropertyblock.ts +1 -20
- package/src/engine/engine_networking.ts +46 -23
- package/src/engine/engine_networking_instantiate.ts +160 -18
- package/src/engine/engine_networking_prefabs.ts +80 -0
- package/src/engine/postprocessing/api.ts +2 -0
- package/src/engine/postprocessing/index.ts +2 -0
- package/src/engine/postprocessing/postprocessing.ts +322 -0
- package/src/engine/postprocessing/types.ts +43 -0
- package/src/engine/webcomponents/WebXRButtons.ts +21 -4
- package/src/engine/webcomponents/icons.ts +5 -3
- package/src/engine/xr/NeedleXRSession.ts +50 -15
- package/src/engine/xr/init.ts +56 -0
- package/src/engine-components/AnimationUtils.ts +7 -17
- package/src/engine-components/AnimatorController.ts +288 -18
- package/src/engine-components/OrbitControls.ts +5 -1
- package/src/engine-components/SeeThrough.ts +0 -116
- package/src/engine-components/SyncedRoom.ts +28 -9
- package/src/engine-components/SyncedTransform.ts +5 -5
- package/src/engine-components/Voip.ts +129 -2
- package/src/engine-components/api.ts +1 -0
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +16 -24
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +9 -16
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +2 -1
- package/src/engine-components/postprocessing/Volume.ts +72 -163
- package/src/engine-components/postprocessing/index.ts +1 -0
- package/src/engine-components/postprocessing/utils.ts +2 -0
- package/src/engine-components/ui/Canvas.ts +2 -2
- package/src/engine-components/ui/Graphic.ts +7 -3
- package/src/engine-components/ui/Text.ts +170 -52
- package/src/engine-components/ui/index.ts +2 -1
- package/src/engine-components-experimental/networking/PlayerSync.ts +64 -11
- package/dist/needle-engine.bundle-B3ywqx5o.min.js +0 -1654
- 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
|
-
*
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
176
|
-
|
|
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
|
|
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
|
-
|
|
318
|
-
|
|
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
|
-
|
|
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
|
|
324
|
-
if (
|
|
325
|
-
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/engine/postprocessing/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/postprocessing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { EffectComposer } from "postprocessing";
|
|
2
|
+
import type { EffectComposer as ThreeEffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
|
|
3
|
+
import type { Context } from "../engine_context.js";
|
|
4
|
+
import type { IPostProcessingEffect, IPostProcessingHandler } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Core postprocessing stack accessible via `context.postprocessing`.
|
|
7
|
+
* Manages the effect pipeline independently of any specific component.
|
|
8
|
+
*
|
|
9
|
+
* Volumes and individual PostProcessingEffect components add/remove effects
|
|
10
|
+
* to this stack. The stack builds the EffectComposer pipeline when dirty.
|
|
11
|
+
*
|
|
12
|
+
* @example Add an effect directly
|
|
13
|
+
* ```ts
|
|
14
|
+
* const bloom = new BloomEffect({ intensity: 3 });
|
|
15
|
+
* this.context.postprocessing.addEffect(bloom);
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example Remove an effect
|
|
19
|
+
* ```ts
|
|
20
|
+
* this.context.postprocessing.removeEffect(bloom);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class PostProcessing {
|
|
24
|
+
private readonly _context;
|
|
25
|
+
private _handler;
|
|
26
|
+
private readonly _effects;
|
|
27
|
+
private _isDirty;
|
|
28
|
+
/** Currently active postprocessing effects in the stack */
|
|
29
|
+
get effects(): readonly IPostProcessingEffect[];
|
|
30
|
+
get dirty(): boolean;
|
|
31
|
+
set dirty(value: boolean);
|
|
32
|
+
/** The internal PostProcessingHandler that manages the EffectComposer pipeline */
|
|
33
|
+
get handler(): IPostProcessingHandler | null;
|
|
34
|
+
/**
|
|
35
|
+
* The effect composer used to render postprocessing effects.
|
|
36
|
+
* This is set internally by the PostProcessingHandler when effects are applied.
|
|
37
|
+
*/
|
|
38
|
+
get composer(): EffectComposer | ThreeEffectComposer | null;
|
|
39
|
+
set composer(value: EffectComposer | ThreeEffectComposer | null);
|
|
40
|
+
private _composer;
|
|
41
|
+
/**
|
|
42
|
+
* Set multisampling to "auto" to automatically adjust the multisampling level based on performance.
|
|
43
|
+
* Set to a number to manually set the multisampling level.
|
|
44
|
+
* @default "auto"
|
|
45
|
+
*/
|
|
46
|
+
multisampling: "auto" | number;
|
|
47
|
+
/** When enabled, the device pixel ratio will be gradually reduced when FPS is low
|
|
48
|
+
* and restored when performance recovers.
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
adaptiveResolution: boolean;
|
|
52
|
+
constructor(context: Context);
|
|
53
|
+
/**
|
|
54
|
+
* Add a post processing effect to the stack.
|
|
55
|
+
* The effect stack will be rebuilt on the next update.
|
|
56
|
+
*/
|
|
57
|
+
addEffect(effect: IPostProcessingEffect): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove a post processing effect from the stack.
|
|
60
|
+
* The effect stack will be rebuilt on the next update.
|
|
61
|
+
*/
|
|
62
|
+
removeEffect(effect: IPostProcessingEffect): void;
|
|
63
|
+
/** Mark the stack as dirty so the effects are rebuilt on the next update */
|
|
64
|
+
markDirty(): void;
|
|
65
|
+
private _enabledTime;
|
|
66
|
+
private _multisampleAutoChangeTime;
|
|
67
|
+
private _multisampleAutoDecreaseTime;
|
|
68
|
+
/** @internal Called from the context render loop to update the postprocessing pipeline */
|
|
69
|
+
update(): void;
|
|
70
|
+
private _lastApplyTime?;
|
|
71
|
+
private _rapidApplyCount;
|
|
72
|
+
/** When true, tonemapping is applied directly to the renderer (no full pipeline) */
|
|
73
|
+
private _tonemappingOnlyActive;
|
|
74
|
+
private _previousToneMapping?;
|
|
75
|
+
private _previousToneMappingExposure?;
|
|
76
|
+
private apply;
|
|
77
|
+
/** Restore renderer tonemapping to previous values when leaving tonemapping-only mode */
|
|
78
|
+
private restoreTonemapping;
|
|
79
|
+
/** Lazily creates the PostProcessingHandler to avoid loading the postprocessing library until actually needed */
|
|
80
|
+
private ensureHandler;
|
|
81
|
+
/** @internal */
|
|
82
|
+
dispose(): void;
|
|
83
|
+
}
|