@needle-tools/engine 5.0.0-canary.046b5ee → 5.0.0-canary.663b7ae
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/SKILL.md +10 -51
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-ftBf8i-Y.umd.cjs → needle-engine.bundle-B2scYiA2.umd.cjs} +130 -130
- package/dist/{needle-engine.bundle-DG7qmP91.min.js → needle-engine.bundle-BFEYJdZs.min.js} +127 -127
- package/dist/{needle-engine.bundle-m_XBpL11.js → needle-engine.bundle-CYxZeAfg.js} +5671 -5575
- package/dist/needle-engine.d.ts +76 -10
- package/dist/needle-engine.js +84 -83
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_addressables.js +3 -0
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_gameobject.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 +21 -4
- package/lib/engine/engine_networking_instantiate.js +37 -3
- package/lib/engine/engine_networking_instantiate.js.map +1 -1
- package/lib/engine-components/OrbitControls.js +1 -1
- package/lib/engine-components/OrbitControls.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/package.json +1 -1
- package/src/engine/engine_addressables.ts +3 -0
- package/src/engine/engine_gameobject.ts +1 -1
- package/src/engine/engine_networking.ts +46 -23
- package/src/engine/engine_networking_instantiate.ts +38 -5
- package/src/engine-components/OrbitControls.ts +1 -1
- package/src/engine-components/Voip.ts +129 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Voip.js","sourceRoot":"","sources":["../../src/engine-components/Voip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Voip.js","sourceRoot":"","sources":["../../src/engine-components/Voip.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "5.0.0-canary.
|
|
3
|
+
"version": "5.0.0-canary.663b7ae",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
|
@@ -463,6 +463,9 @@ export class AssetReference {
|
|
|
463
463
|
if (networked) {
|
|
464
464
|
options.context = context;
|
|
465
465
|
const prefab = this.asset;
|
|
466
|
+
// Only set guid from URL if we have one — runtime Object3D prefabs
|
|
467
|
+
// (via new AssetReference({ asset: obj })) have no URL and may already
|
|
468
|
+
// have a user-assigned guid. Don't overwrite with empty string.
|
|
466
469
|
if (this.url) prefab.guid = this.url;
|
|
467
470
|
const instance = syncInstantiate(prefab, options, undefined, saveOnServer);
|
|
468
471
|
if (instance) {
|
|
@@ -8,6 +8,7 @@ import { activeInHierarchyFieldName } from "./engine_constants.js";
|
|
|
8
8
|
import { editorGuidKeyName } from "./engine_constants.js";
|
|
9
9
|
import { $isUsingInstancing, InstancingUtil } from "./engine_instancing.js";
|
|
10
10
|
import { processNewScripts } from "./engine_mainloop_utils.js";
|
|
11
|
+
import type { syncInstantiate } from "./engine_networking_instantiate.js";
|
|
11
12
|
import { InstantiateIdProvider } from "./engine_networking_instantiate.js";
|
|
12
13
|
import { assign, ISerializable } from "./engine_serialization_core.js";
|
|
13
14
|
import { Context, registerComponent } from "./engine_setup.js";
|
|
@@ -15,7 +16,6 @@ import { getTempQuaternion, logHierarchy, setWorldPosition, setWorldQuaternion }
|
|
|
15
16
|
import { type Constructor, type GuidsMap, type IComponent as Component, type IComponent, IEventList, type IGameObject as GameObject, type UIDProvider } from "./engine_types.js";
|
|
16
17
|
import { deepClone, getParam, tryFindObject } from "./engine_utils.js";
|
|
17
18
|
import { apply } from "./js-extensions/index.js";
|
|
18
|
-
import type { syncInstantiate } from "./engine_networking_instantiate.js";
|
|
19
19
|
|
|
20
20
|
const debug = getParam("debuggetcomponent");
|
|
21
21
|
const debugInstantiate = getParam("debuginstantiate");
|
|
@@ -248,6 +248,7 @@ export class OwnershipModel {
|
|
|
248
248
|
private _gainSubscription: (response: GainedOwnershipBroadcastResponse) => void;
|
|
249
249
|
private _lostSubscription: (guid: string) => void;
|
|
250
250
|
private _hasOwnerResponse: (response: OwnershipResponse) => void;
|
|
251
|
+
private _pendingOwnershipResolve: ((value: boolean) => void) | null = null;
|
|
251
252
|
|
|
252
253
|
constructor(connection: NetworkConnection, guid: string) {
|
|
253
254
|
this.connection = connection;
|
|
@@ -291,7 +292,6 @@ export class OwnershipModel {
|
|
|
291
292
|
}
|
|
292
293
|
|
|
293
294
|
private waitForHasOwnershipRequestResponse(res: OwnershipResponse) {
|
|
294
|
-
// console.log(res);
|
|
295
295
|
if (res.guid === this.guid) {
|
|
296
296
|
if (this._isWaitingForOwnershipResponseCallback) {
|
|
297
297
|
this.connection.stopListen(OwnershipEvent.ResponseHasOwner, this._isWaitingForOwnershipResponseCallback);
|
|
@@ -301,47 +301,58 @@ export class OwnershipModel {
|
|
|
301
301
|
if (!res.value) {
|
|
302
302
|
if (debugOwner)
|
|
303
303
|
console.log("request ownership", this.guid)
|
|
304
|
-
this.
|
|
304
|
+
this.connection.send(OwnershipEvent.RequestOwnership, { guid: this.guid });
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
|
|
310
|
+
|
|
310
311
|
/**
|
|
311
312
|
* Requests ownership and waits asynchronously until ownership is granted or timeout occurs.
|
|
312
313
|
* @returns Promise that resolves with this OwnershipModel when ownership is gained
|
|
313
314
|
* @throws Rejects with "Timeout" if ownership is not gained within ~1 second
|
|
314
315
|
* @example
|
|
315
316
|
* ```ts
|
|
316
|
-
*
|
|
317
|
-
*
|
|
317
|
+
* const owned = await ownership.requestOwnership();
|
|
318
|
+
* if (owned) {
|
|
318
319
|
* // Ownership granted, safe to modify object
|
|
319
|
-
* } catch(e) {
|
|
320
|
-
* console.warn("Could not gain ownership:", e);
|
|
321
320
|
* }
|
|
322
321
|
* ```
|
|
323
322
|
*/
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
323
|
+
/**
|
|
324
|
+
* Requests ownership of this object from the networking server.
|
|
325
|
+
* Returns a Promise that resolves with `true` when ownership is granted, or `false` on timeout/failure.
|
|
326
|
+
* If ownership is already held, resolves immediately with `true`.
|
|
327
|
+
* @returns Promise that resolves with `true` if ownership was gained, `false` otherwise
|
|
328
|
+
*/
|
|
329
|
+
public requestOwnership(): Promise<boolean> {
|
|
330
|
+
if (this._hasOwnership) return Promise.resolve(true);
|
|
331
|
+
|
|
332
|
+
// Cancel any previous pending request
|
|
333
|
+
this._pendingOwnershipResolve?.(false);
|
|
334
|
+
this._pendingOwnershipResolve = null;
|
|
335
|
+
|
|
336
|
+
if (debugOwner) console.log("Request ownership", this.guid);
|
|
337
|
+
this.connection.send(OwnershipEvent.RequestOwnership, { guid: this.guid });
|
|
338
|
+
|
|
339
|
+
return new Promise((resolve) => {
|
|
340
|
+
this._pendingOwnershipResolve = resolve;
|
|
341
|
+
|
|
342
|
+
// Timeout after ~2 seconds
|
|
343
|
+
setTimeout(() => {
|
|
344
|
+
if (this._pendingOwnershipResolve === resolve) {
|
|
345
|
+
this._pendingOwnershipResolve = null;
|
|
346
|
+
resolve(false);
|
|
347
|
+
}
|
|
348
|
+
}, 2000);
|
|
336
349
|
});
|
|
337
350
|
}
|
|
338
351
|
|
|
339
352
|
/**
|
|
340
|
-
*
|
|
341
|
-
* Ownership may not be granted immediately - check `hasOwnership` property or use `requestOwnershipAsync()`.
|
|
342
|
-
* @returns this OwnershipModel instance for method chaining
|
|
353
|
+
* @deprecated Use `requestOwnership()` instead for a more reliable way to gain ownership
|
|
343
354
|
*/
|
|
344
|
-
public
|
|
355
|
+
public async requestOwnershipAsync(): Promise<OwnershipModel> {
|
|
345
356
|
if (debugOwner) console.log("Request ownership", this.guid);
|
|
346
357
|
this.connection.send(OwnershipEvent.RequestOwnership, { guid: this.guid });
|
|
347
358
|
return this;
|
|
@@ -374,16 +385,23 @@ export class OwnershipModel {
|
|
|
374
385
|
this.connection.stopListen(OwnershipEvent.ResponseHasOwner, this._isWaitingForOwnershipResponseCallback);
|
|
375
386
|
this._isWaitingForOwnershipResponseCallback = null;
|
|
376
387
|
}
|
|
388
|
+
// Clean up pending ownership request
|
|
389
|
+
this._pendingOwnershipResolve?.(false);
|
|
390
|
+
this._pendingOwnershipResolve = null;
|
|
377
391
|
}
|
|
378
392
|
|
|
379
393
|
private onGainedOwnership(res: GainedOwnershipBroadcastResponse) {
|
|
380
394
|
if (res.guid === this.guid) {
|
|
381
395
|
this._isOwned = true;
|
|
382
|
-
// console.log(res.owner, connection.connectionId)
|
|
383
396
|
if (this.connection.connectionId === res.owner) {
|
|
384
397
|
if (debugOwner)
|
|
385
398
|
console.log("GAINED OWNERSHIP", this.guid)
|
|
386
399
|
this._hasOwnership = true;
|
|
400
|
+
// Resolve pending ownership request
|
|
401
|
+
if (this._pendingOwnershipResolve) {
|
|
402
|
+
this._pendingOwnershipResolve(true);
|
|
403
|
+
this._pendingOwnershipResolve = null;
|
|
404
|
+
}
|
|
387
405
|
}
|
|
388
406
|
else this._hasOwnership = false;
|
|
389
407
|
}
|
|
@@ -394,6 +412,11 @@ export class OwnershipModel {
|
|
|
394
412
|
console.log("LOST OWNERSHIP", this.guid)
|
|
395
413
|
this._hasOwnership = false;
|
|
396
414
|
this._isOwned = false;
|
|
415
|
+
// Resolve pending ownership request as failed
|
|
416
|
+
if (this._pendingOwnershipResolve) {
|
|
417
|
+
this._pendingOwnershipResolve(false);
|
|
418
|
+
this._pendingOwnershipResolve = null;
|
|
419
|
+
}
|
|
397
420
|
}
|
|
398
421
|
}
|
|
399
422
|
}
|
|
@@ -11,7 +11,7 @@ import type { INetworkConnection } from "./engine_networking_types.js";
|
|
|
11
11
|
import type { IModel } from "./engine_networking_types.js";
|
|
12
12
|
import { SendQueue } from "./engine_networking_types.js";
|
|
13
13
|
import { Context } from "./engine_setup.js"
|
|
14
|
-
import type { IComponent as Component, IGameObject as GameObject
|
|
14
|
+
import type { IComponent as Component, IContext,IGameObject as GameObject } from "./engine_types.js"
|
|
15
15
|
import type { UIDProvider } from "./engine_types.js";
|
|
16
16
|
import * as utils from "./engine_utils.js"
|
|
17
17
|
|
|
@@ -154,13 +154,46 @@ export function sendDestroyed(guid: string, con: INetworkConnection, opts?: Sync
|
|
|
154
154
|
con.send(InstantiateEvent.InstanceDestroyed, model, SendQueue.Queued);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
+
declare type SyncDestroyCallback = (guid: string, object: Object3D) => void;
|
|
158
|
+
const _onSyncDestroyCallbacks: SyncDestroyCallback[] = [];
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Register a callback that fires when a remote `syncDestroy` event is received.
|
|
162
|
+
* The callback receives the guid and the resolved Object3D (or null if not found in the scene).
|
|
163
|
+
* The callback fires **before** the object is destroyed, so you can still access its state.
|
|
164
|
+
* @param callback Called with the guid and the Object3D about to be destroyed
|
|
165
|
+
* @returns An unsubscribe function
|
|
166
|
+
* @category Networking
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* const unsub = onSyncDestroy((guid, obj) => {
|
|
170
|
+
* console.log("Remote object destroyed:", guid, obj?.name);
|
|
171
|
+
* });
|
|
172
|
+
* // later: unsub();
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export function onSyncDestroy(callback: SyncDestroyCallback): () => void {
|
|
176
|
+
_onSyncDestroyCallbacks.push(callback);
|
|
177
|
+
return () => {
|
|
178
|
+
const idx = _onSyncDestroyCallbacks.indexOf(callback);
|
|
179
|
+
if (idx >= 0) _onSyncDestroyCallbacks.splice(idx, 1);
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
157
183
|
export function beginListenDestroy(context: Context) {
|
|
158
184
|
context.connection.beginListen(InstantiateEvent.InstanceDestroyed, (data: DestroyInstanceModel) => {
|
|
159
185
|
if (debug)
|
|
160
186
|
console.log("[Remote] Destroyed", context.scene, data);
|
|
161
187
|
// TODO: create global lookup table for guids
|
|
162
188
|
const obj = findByGuid(data.guid, context.scene);
|
|
163
|
-
if (obj)
|
|
189
|
+
if (obj) {
|
|
190
|
+
// Notify listeners before destroying
|
|
191
|
+
for (const cb of _onSyncDestroyCallbacks) {
|
|
192
|
+
try { cb(data.guid, obj as Object3D); }
|
|
193
|
+
catch (err) { console.error("Error in onSyncDestroy callback", err); }
|
|
194
|
+
}
|
|
195
|
+
destroy(obj);
|
|
196
|
+
}
|
|
164
197
|
});
|
|
165
198
|
}
|
|
166
199
|
|
|
@@ -479,11 +512,11 @@ function instantiateSeeded(obj: GameObject, opts: IInstantiateOptions | null): {
|
|
|
479
512
|
return { seed: seed, instance: instance };
|
|
480
513
|
}
|
|
481
514
|
|
|
482
|
-
export {
|
|
515
|
+
export { type PrefabProviderCallback,Prefabs } from "./engine_networking_prefabs.js";
|
|
483
516
|
import { Prefabs } from "./engine_networking_prefabs.js";
|
|
484
517
|
|
|
485
518
|
/**
|
|
486
|
-
* @
|
|
519
|
+
* Register a prefab provider. Forwards to {@link Prefabs.register}.
|
|
487
520
|
* @category Networking
|
|
488
521
|
*/
|
|
489
522
|
export function registerPrefabProvider(key: string, fn: (guid: string) => Promise<Object3D | null>) {
|
|
@@ -491,7 +524,7 @@ export function registerPrefabProvider(key: string, fn: (guid: string) => Promis
|
|
|
491
524
|
}
|
|
492
525
|
|
|
493
526
|
/**
|
|
494
|
-
* @
|
|
527
|
+
* Unregister a prefab provider. Forwards to {@link Prefabs.unregister}.
|
|
495
528
|
* @category Networking
|
|
496
529
|
*/
|
|
497
530
|
export function unregisterPrefabProvider(key: string) {
|
|
@@ -15,10 +15,10 @@ import { DeviceUtilities, getParam } from "../engine/engine_utils.js";
|
|
|
15
15
|
import { NeedleEngineWebComponent } from "../engine/webcomponents/needle-engine.js";
|
|
16
16
|
import { Camera } from "./Camera.js";
|
|
17
17
|
import { Behaviour, GameObject } from "./Component.js";
|
|
18
|
+
import { LookAtConstraint } from "./LookAtConstraint.js";
|
|
18
19
|
import { SyncedTransform } from "./SyncedTransform.js";
|
|
19
20
|
import { type AfterHandleInputEvent, EventSystem, EventSystemEvents } from "./ui/EventSystem.js";
|
|
20
21
|
import { tryGetUIComponent } from "./ui/Utils.js";
|
|
21
|
-
import { LookAtConstraint } from "./LookAtConstraint.js";
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
const debug = getParam("debugorbit");
|
|
@@ -3,10 +3,10 @@ import { Application } from "../engine/engine_application.js";
|
|
|
3
3
|
import { RoomEvents } from "../engine/engine_networking.js";
|
|
4
4
|
import { disposeStream, NetworkedStreamEvents, NetworkedStreams, StreamEndedEvent, StreamReceivedEvent } from "../engine/engine_networking_streams.js"
|
|
5
5
|
import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
6
|
-
import { DeviceUtilities, getParam } from "../engine/engine_utils.js";
|
|
7
|
-
import { delay } from "../engine/engine_utils.js";
|
|
6
|
+
import { delay, DeviceUtilities, getParam } from "../engine/engine_utils.js";
|
|
8
7
|
import { getIconElement } from "../engine/webcomponents/icons.js";
|
|
9
8
|
import { Behaviour } from "./Component.js";
|
|
9
|
+
import { EventList } from "./EventList.js";
|
|
10
10
|
|
|
11
11
|
export const noVoip = "noVoip";
|
|
12
12
|
const debugParam = getParam("debugvoip");
|
|
@@ -75,6 +75,66 @@ export class Voip extends Behaviour {
|
|
|
75
75
|
*/
|
|
76
76
|
debug: boolean = false;
|
|
77
77
|
|
|
78
|
+
private _volume: number = 1;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Volume for incoming audio streams (0 = silent, 1 = full volume).
|
|
82
|
+
* Changes apply immediately to all active incoming streams.
|
|
83
|
+
*/
|
|
84
|
+
@serializable()
|
|
85
|
+
get volume(): number { return this._volume; }
|
|
86
|
+
set volume(val: number) {
|
|
87
|
+
this._volume = val;
|
|
88
|
+
for (const audio of this._incomingStreams.values()) {
|
|
89
|
+
audio.volume = val;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Get the incoming audio element for a specific user.
|
|
95
|
+
* Use this to route audio through the Web Audio API for spatial audio, effects, or analysis.
|
|
96
|
+
* @param userId The connection ID of the remote user
|
|
97
|
+
* @returns The HTMLAudioElement for this user's stream, or undefined if not connected
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* const audioEl = voip.getAudioElement(userId);
|
|
101
|
+
* if (audioEl) {
|
|
102
|
+
* const audioCtx = new AudioContext();
|
|
103
|
+
* const source = audioCtx.createMediaElementSource(audioEl);
|
|
104
|
+
* const panner = audioCtx.createPanner();
|
|
105
|
+
* source.connect(panner).connect(audioCtx.destination);
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
getAudioElement(userId: string): HTMLAudioElement | undefined {
|
|
110
|
+
return this._incomingStreams.get(userId);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Get all active incoming audio streams as a Map of userId → HTMLAudioElement.
|
|
115
|
+
* Useful for iterating over all connected voice users.
|
|
116
|
+
*/
|
|
117
|
+
get incomingStreams(): ReadonlyMap<string, HTMLAudioElement> {
|
|
118
|
+
return this._incomingStreams;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Threshold for speaking detection (0–255). When a user's audio amplitude exceeds this,
|
|
123
|
+
* they are considered "speaking". Default is 30.
|
|
124
|
+
*/
|
|
125
|
+
@serializable()
|
|
126
|
+
speakingThreshold: number = 30;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Event fired when a user's speaking state changes.
|
|
130
|
+
* Passes `{ userId: string, isSpeaking: boolean, volume: number }`.
|
|
131
|
+
*/
|
|
132
|
+
@serializable(EventList)
|
|
133
|
+
onSpeakingChanged: EventList = new EventList();
|
|
134
|
+
|
|
135
|
+
private _speakingStates = new Map<string, boolean>();
|
|
136
|
+
private _analysers = new Map<string, { analyser: AnalyserNode, data: Uint8Array, context: AudioContext }>();
|
|
137
|
+
|
|
78
138
|
private _net?: NetworkedStreams;
|
|
79
139
|
private _menubutton?: HTMLElement;
|
|
80
140
|
|
|
@@ -141,12 +201,25 @@ export class Voip extends Behaviour {
|
|
|
141
201
|
this.onEnabledChanged();
|
|
142
202
|
this.updateButton();
|
|
143
203
|
window.removeEventListener("visibilitychange", this.onVisibilityChanged);
|
|
204
|
+
// Clean up analysers
|
|
205
|
+
for (const userId of [...this._analysers.keys()]) {
|
|
206
|
+
this.cleanupAnalyser(userId);
|
|
207
|
+
}
|
|
144
208
|
}
|
|
145
209
|
|
|
146
210
|
/** @internal */
|
|
147
211
|
onDestroy(): void {
|
|
148
212
|
this._menubutton?.remove();
|
|
149
213
|
this._menubutton = undefined;
|
|
214
|
+
// Clean up all streams and analysers
|
|
215
|
+
for (const userId of [...this._analysers.keys()]) {
|
|
216
|
+
this.cleanupAnalyser(userId);
|
|
217
|
+
}
|
|
218
|
+
for (const incoming of this._incomingStreams.values()) {
|
|
219
|
+
disposeStream(incoming.srcObject as MediaStream);
|
|
220
|
+
}
|
|
221
|
+
this._incomingStreams.clear();
|
|
222
|
+
this._speakingStates.clear();
|
|
150
223
|
}
|
|
151
224
|
|
|
152
225
|
/** Set via the mic button (e.g. when the websocket connection closes and rejoins but the user was muted before we don't want to enable VOIP again automatically) */
|
|
@@ -347,10 +420,61 @@ export class Voip extends Behaviour {
|
|
|
347
420
|
disposeStream(incoming.srcObject as MediaStream);
|
|
348
421
|
}
|
|
349
422
|
this._incomingStreams.clear();
|
|
423
|
+
for (const userId of this._analysers.keys()) {
|
|
424
|
+
this.cleanupAnalyser(userId);
|
|
425
|
+
}
|
|
350
426
|
}
|
|
351
427
|
|
|
352
428
|
private _incomingStreams: Map<string, HTMLAudioElement> = new Map();
|
|
353
429
|
|
|
430
|
+
/** @internal */
|
|
431
|
+
update() {
|
|
432
|
+
// Only run speaking detection if someone is listening
|
|
433
|
+
if (!this.onSpeakingChanged || this.onSpeakingChanged.listenerCount <= 0) return;
|
|
434
|
+
|
|
435
|
+
for (const [userId, info] of this._analysers) {
|
|
436
|
+
info.analyser.getByteFrequencyData(info.data as Uint8Array<ArrayBuffer>);
|
|
437
|
+
// Average amplitude
|
|
438
|
+
let sum = 0;
|
|
439
|
+
for (let i = 0; i < info.data.length; i++) sum += info.data[i];
|
|
440
|
+
const avg = sum / info.data.length;
|
|
441
|
+
|
|
442
|
+
const wasSpeaking = this._speakingStates.get(userId) ?? false;
|
|
443
|
+
const isSpeaking = avg > this.speakingThreshold;
|
|
444
|
+
|
|
445
|
+
if (isSpeaking !== wasSpeaking) {
|
|
446
|
+
this._speakingStates.set(userId, isSpeaking);
|
|
447
|
+
this.onSpeakingChanged.invoke({ userId, isSpeaking, volume: avg / 255 });
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
private setupAnalyser(userId: string, _audioElement: HTMLAudioElement, stream: MediaStream) {
|
|
453
|
+
// Only set up if someone is listening or might listen
|
|
454
|
+
if (this._analysers.has(userId)) return;
|
|
455
|
+
try {
|
|
456
|
+
const audioCtx = new AudioContext();
|
|
457
|
+
const source = audioCtx.createMediaStreamSource(stream);
|
|
458
|
+
const analyser = audioCtx.createAnalyser();
|
|
459
|
+
analyser.fftSize = 256;
|
|
460
|
+
source.connect(analyser);
|
|
461
|
+
const data = new Uint8Array(analyser.frequencyBinCount);
|
|
462
|
+
this._analysers.set(userId, { analyser, data, context: audioCtx });
|
|
463
|
+
}
|
|
464
|
+
catch (err) {
|
|
465
|
+
if (this.debug) console.warn("VOIP: Failed to create analyser for", userId, err);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
private cleanupAnalyser(userId: string) {
|
|
470
|
+
const info = this._analysers.get(userId);
|
|
471
|
+
if (info) {
|
|
472
|
+
info.context.close();
|
|
473
|
+
this._analysers.delete(userId);
|
|
474
|
+
}
|
|
475
|
+
this._speakingStates.delete(userId);
|
|
476
|
+
}
|
|
477
|
+
|
|
354
478
|
private onReceiveStream = (evt: StreamReceivedEvent) => {
|
|
355
479
|
const userId = evt.target.userId;
|
|
356
480
|
const stream = evt.stream;
|
|
@@ -361,7 +485,9 @@ export class Voip extends Behaviour {
|
|
|
361
485
|
this._incomingStreams.set(userId, audioElement);
|
|
362
486
|
}
|
|
363
487
|
audioElement.srcObject = stream;
|
|
488
|
+
audioElement.volume = this._volume;
|
|
364
489
|
audioElement.setAttribute("autoplay", "true");
|
|
490
|
+
this.setupAnalyser(userId, audioElement, stream);
|
|
365
491
|
// for mobile we need to wait for user interaction to play audio. Auto play doesnt work on android when the page is refreshed
|
|
366
492
|
Application.registerWaitForInteraction(() => {
|
|
367
493
|
audioElement?.play().catch((err) => {
|
|
@@ -374,6 +500,7 @@ export class Voip extends Behaviour {
|
|
|
374
500
|
const existing = this._incomingStreams.get(evt.userId);
|
|
375
501
|
disposeStream(existing?.srcObject as MediaStream);
|
|
376
502
|
this._incomingStreams.delete(evt.userId);
|
|
503
|
+
this.cleanupAnalyser(evt.userId);
|
|
377
504
|
}
|
|
378
505
|
|
|
379
506
|
private onEnabledChanged = () => {
|