@needle-tools/engine 5.1.0-alpha.2 → 5.1.0-alpha.3
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 +35 -1
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-qZfVf_v-.umd.cjs → needle-engine.bundle-C-ixARur.umd.cjs} +128 -127
- package/dist/{needle-engine.bundle-B-5Q2CpC.min.js → needle-engine.bundle-CHmXdnE1.min.js} +138 -137
- package/dist/{needle-engine.bundle-dit3f1l5.js → needle-engine.bundle-DF01sSGQ.js} +7815 -7602
- package/dist/needle-engine.d.ts +125 -27
- package/dist/needle-engine.js +524 -521
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- 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/debug/debug_spatial_console.d.ts +2 -0
- package/lib/engine/debug/debug_spatial_console.js +10 -7
- package/lib/engine/debug/debug_spatial_console.js.map +1 -1
- package/lib/engine/engine_addressables.d.ts +2 -0
- package/lib/engine/engine_addressables.js +6 -3
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_audio.d.ts +68 -0
- package/lib/engine/engine_audio.js +172 -0
- package/lib/engine/engine_audio.js.map +1 -1
- package/lib/engine/engine_components.js +1 -1
- package/lib/engine/engine_components.js.map +1 -1
- package/lib/engine/engine_context.d.ts +1 -1
- package/lib/engine/engine_context.js +1 -1
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_gameobject.js +2 -2
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_init.js +13 -3
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_input.d.ts +1 -1
- package/lib/engine/engine_input.js +1 -1
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_license.js +1 -1
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.js +5 -2
- package/lib/engine/engine_mainloop_utils.js.map +1 -1
- package/lib/engine/engine_networking_blob.js +1 -1
- package/lib/engine/engine_networking_blob.js.map +1 -1
- package/lib/engine/engine_scenedata.d.ts +2 -0
- package/lib/engine/engine_scenedata.js +4 -2
- package/lib/engine/engine_scenedata.js.map +1 -1
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +10 -16
- package/lib/engine/engine_serialization_builtin_serializer.js +55 -41
- package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.d.ts +10 -4
- package/lib/engine/webcomponents/needle-engine.js +1 -1
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/xr/NeedleXRSession.d.ts +3 -2
- package/lib/engine/xr/NeedleXRSession.js +50 -14
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine/xr/events.d.ts +1 -1
- package/lib/engine/xr/events.js.map +1 -1
- package/lib/engine-components/Animation.js +17 -16
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/AnimatorController.d.ts +2 -0
- package/lib/engine-components/AnimatorController.js +4 -1
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +19 -3
- package/lib/engine-components/AudioSource.js +121 -68
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/DragControls.d.ts +7 -0
- package/lib/engine-components/DragControls.js +19 -0
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/Networking.d.ts +1 -1
- package/lib/engine-components/Networking.js +1 -1
- package/lib/engine-components/OrbitControls.js +16 -11
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.js +2 -0
- package/lib/engine-components/ReflectionProbe.js.map +1 -1
- package/lib/engine-components/SeeThrough.js +2 -2
- package/lib/engine-components/SeeThrough.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -1
- package/lib/engine-components/api.js +1 -1
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
- package/lib/engine-components/postprocessing/VolumeParameter.d.ts +2 -0
- package/lib/engine-components/postprocessing/VolumeParameter.js +4 -1
- package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
- package/lib/engine-components/ui/Canvas.d.ts +1 -1
- package/lib/engine-components/ui/Canvas.js +2 -8
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/Text.d.ts +1 -0
- package/lib/engine-components/ui/Text.js +10 -7
- package/lib/engine-components/ui/Text.js.map +1 -1
- package/lib/engine-components/web/CursorFollow.js +21 -12
- package/lib/engine-components/web/CursorFollow.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.js +4 -0
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/asap.js +17 -8
- package/plugins/vite/dependencies.js +29 -0
- package/plugins/vite/local-files-core.js +3 -3
- package/plugins/vite/local-files-utils.d.ts +3 -1
- package/plugins/vite/local-files-utils.js +29 -5
- package/src/engine/api.ts +3 -0
- package/src/engine/debug/debug_spatial_console.ts +10 -7
- package/src/engine/engine_addressables.ts +6 -3
- package/src/engine/engine_audio.ts +184 -0
- package/src/engine/engine_components.ts +1 -1
- package/src/engine/engine_context.ts +2 -2
- package/src/engine/engine_gameobject.ts +2 -2
- package/src/engine/engine_init.ts +13 -3
- package/src/engine/engine_input.ts +1 -1
- package/src/engine/engine_license.ts +1 -1
- package/src/engine/engine_mainloop_utils.ts +5 -2
- package/src/engine/engine_networking_blob.ts +1 -1
- package/src/engine/engine_scenedata.ts +5 -3
- package/src/engine/engine_serialization_builtin_serializer.ts +63 -46
- package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
- package/src/engine/webcomponents/needle menu/needle-menu.ts +1 -1
- package/src/engine/webcomponents/needle-engine.ts +10 -4
- package/src/engine/xr/NeedleXRSession.ts +48 -13
- package/src/engine/xr/events.ts +1 -1
- package/src/engine-components/Animation.ts +19 -16
- package/src/engine-components/AnimatorController.ts +4 -1
- package/src/engine-components/AudioSource.ts +130 -79
- package/src/engine-components/DragControls.ts +18 -2
- package/src/engine-components/Networking.ts +1 -1
- package/src/engine-components/OrbitControls.ts +18 -9
- package/src/engine-components/ReflectionProbe.ts +2 -0
- package/src/engine-components/SeeThrough.ts +2 -2
- package/src/engine-components/api.ts +1 -1
- package/src/engine-components/postprocessing/VolumeParameter.ts +4 -1
- package/src/engine-components/ui/Canvas.ts +2 -8
- package/src/engine-components/ui/Text.ts +12 -8
- package/src/engine-components/web/CursorFollow.ts +21 -13
- package/src/engine-components/webxr/WebXRImageTracking.ts +2 -0
|
@@ -9,7 +9,6 @@ import { PositionalAudioHelper } from 'three/examples/jsm/helpers/PositionalAudi
|
|
|
9
9
|
import { isDevEnvironment } from "../engine/debug/index.js";
|
|
10
10
|
import { Application, ApplicationEvents } from "../engine/engine_application.js";
|
|
11
11
|
import { findObjectOfType } from "../engine/engine_components.js";
|
|
12
|
-
import { Mathf } from "../engine/engine_math.js";
|
|
13
12
|
import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
14
13
|
import { DeviceUtilities, getParam } from "../engine/engine_utils.js";
|
|
15
14
|
import { AudioListener } from "./AudioListener.js";
|
|
@@ -127,12 +126,23 @@ export class AudioSource extends Behaviour {
|
|
|
127
126
|
*/
|
|
128
127
|
get isPlaying() { return this.sound?.isPlaying ?? false; }
|
|
129
128
|
/**
|
|
130
|
-
* The total duration of the
|
|
129
|
+
* The total duration of the currently loaded audio clip in seconds.
|
|
131
130
|
*
|
|
132
131
|
* @returns Duration in seconds or undefined if no clip is loaded
|
|
132
|
+
* @remarks For MediaStream clips, duration is not directly available and will return undefined. If the audio clip has not started loading or is still loading, duration may also be undefined until the audio buffer is ready.
|
|
133
133
|
*/
|
|
134
134
|
get duration() {
|
|
135
|
-
|
|
135
|
+
if (this.sound?.buffer?.duration) {
|
|
136
|
+
return this.sound.buffer.duration;
|
|
137
|
+
}
|
|
138
|
+
else if (this._audioElement?.duration) {
|
|
139
|
+
return this._audioElement.duration;
|
|
140
|
+
}
|
|
141
|
+
else if (this._loadedClip instanceof MediaStream) {
|
|
142
|
+
// MediaStream duration is not directly available; return undefined or estimate if possible
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
136
146
|
}
|
|
137
147
|
/**
|
|
138
148
|
* The current playback position as a normalized value between 0 and 1.
|
|
@@ -185,7 +195,8 @@ export class AudioSource extends Behaviour {
|
|
|
185
195
|
/**
|
|
186
196
|
* Controls how the audio is positioned in space.
|
|
187
197
|
* Values range from 0 (2D, non-positional) to 1 (fully 3D positioned).
|
|
188
|
-
*
|
|
198
|
+
* Internally uses a dual-path audio graph to crossfade between a spatialized (PannerNode)
|
|
199
|
+
* and a non-spatialized (direct) signal path.
|
|
189
200
|
*/
|
|
190
201
|
get spatialBlend() {
|
|
191
202
|
return this._spatialBlend;
|
|
@@ -268,7 +279,12 @@ export class AudioSource extends Behaviour {
|
|
|
268
279
|
// set this from audio context time, used to set clip offset when setting "time" property
|
|
269
280
|
// there is maybe a better way to set a audio clip current time?!
|
|
270
281
|
_lastClipStartedLoading = null;
|
|
282
|
+
_loadedClip = null;
|
|
271
283
|
_audioElement = null;
|
|
284
|
+
// Spatial blend dual-path audio nodes
|
|
285
|
+
_entryNode = null;
|
|
286
|
+
_spatialGain = null;
|
|
287
|
+
_bypassGain = null;
|
|
272
288
|
/**
|
|
273
289
|
* Returns the underlying {@link PositionalAudio} object, creating it if necessary.
|
|
274
290
|
* The audio source needs a user interaction to be initialized due to browser autoplay policies.
|
|
@@ -286,43 +302,12 @@ export class AudioSource extends Behaviour {
|
|
|
286
302
|
if (listener?.listener) {
|
|
287
303
|
this.sound = new PositionalAudio(listener.listener);
|
|
288
304
|
this.gameObject?.add(this.sound);
|
|
289
|
-
// this._listener = listener;
|
|
290
|
-
// this._originalSoundMatrixWorldFunction = this.sound.updateMatrixWorld;
|
|
291
|
-
// this.sound.updateMatrixWorld = this._onSoundMatrixWorld;
|
|
292
305
|
}
|
|
293
306
|
else if (debug)
|
|
294
307
|
console.warn("No audio listener found in scene - can not play audio");
|
|
295
308
|
}
|
|
296
309
|
return this.sound;
|
|
297
310
|
}
|
|
298
|
-
// This is a hacky workaround to get the PositionalAudio behave like a 2D audio source
|
|
299
|
-
// private _listener: AudioListener | null = null;
|
|
300
|
-
// private _originalSoundMatrixWorldFunction: Function | null = null;
|
|
301
|
-
// private _onSoundMatrixWorld = (force: boolean) => {
|
|
302
|
-
// if (this._spatialBlend > .05) {
|
|
303
|
-
// if (this._originalSoundMatrixWorldFunction) {
|
|
304
|
-
// this._originalSoundMatrixWorldFunction.call(this.sound, force);
|
|
305
|
-
// }
|
|
306
|
-
// }
|
|
307
|
-
// else {
|
|
308
|
-
// // we use another object's matrix world function (but bound to the positional audio)
|
|
309
|
-
// // this is just a little trick to prevent calling the PositionalAudio's updateMatrixWorld function
|
|
310
|
-
// this.gameObject.updateMatrixWorld?.call(this.sound, force);
|
|
311
|
-
// if (this.sound && this._listener) {
|
|
312
|
-
// this.sound.gain.connect(this._listener.listener.getInput());
|
|
313
|
-
// // const pos = getTempVector().setFromMatrixPosition(this._listener.gameObject.matrixWorld);
|
|
314
|
-
// // const ctx = this.sound.context;
|
|
315
|
-
// // const delay = this._listener.listener.timeDelta;
|
|
316
|
-
// // const time = ctx.currentTime ;
|
|
317
|
-
// // this.sound.panner.positionX.setValueAtTime(pos.x, time);
|
|
318
|
-
// // this.sound.panner.positionY.setValueAtTime(pos.y, time);
|
|
319
|
-
// // this.sound.panner.positionZ.setValueAtTime(pos.z, time);
|
|
320
|
-
// // this.sound.panner.orientationX.setValueAtTime(0, time);
|
|
321
|
-
// // this.sound.panner.orientationY.setValueAtTime(0, time);
|
|
322
|
-
// // this.sound.panner.orientationZ.setValueAtTime(-1, time);
|
|
323
|
-
// }
|
|
324
|
-
// }
|
|
325
|
-
// }
|
|
326
311
|
/**
|
|
327
312
|
* Indicates whether the audio source is queued to play when possible.
|
|
328
313
|
* This may be true before user interaction has been registered.
|
|
@@ -346,8 +331,10 @@ export class AudioSource extends Behaviour {
|
|
|
346
331
|
if (this.playOnAwake)
|
|
347
332
|
this.shouldPlay = true;
|
|
348
333
|
if (this.preload) {
|
|
349
|
-
if (typeof this.clip === "string") {
|
|
350
|
-
this.audioLoader.load(this.clip, this.createAudio, () => { },
|
|
334
|
+
if (typeof this.clip === "string" && this.clip.length > 0) {
|
|
335
|
+
this.audioLoader.load(this.clip, this.createAudio, () => { }, e => {
|
|
336
|
+
console.error(`[AudioSource] Error preloading audio clip "${this.clip}":`, e);
|
|
337
|
+
});
|
|
351
338
|
}
|
|
352
339
|
}
|
|
353
340
|
}
|
|
@@ -416,25 +403,17 @@ export class AudioSource extends Behaviour {
|
|
|
416
403
|
sound.stop();
|
|
417
404
|
if (buffer)
|
|
418
405
|
sound.setBuffer(buffer);
|
|
406
|
+
this._loadedClip = this.clip;
|
|
419
407
|
sound.loop = this._loop;
|
|
420
408
|
if (this.context.application.muted)
|
|
421
409
|
sound.setVolume(0);
|
|
422
410
|
else
|
|
423
411
|
sound.setVolume(this.volume);
|
|
424
412
|
sound.autoplay = this.shouldPlay && AudioSource.userInteractionRegistered;
|
|
413
|
+
this.setupSpatialBlendNodes();
|
|
425
414
|
this.applySpatialDistanceSettings();
|
|
426
415
|
if (sound.isPlaying)
|
|
427
416
|
sound.stop();
|
|
428
|
-
// const panner = sound.panner;
|
|
429
|
-
// panner.coneOuterGain = 1;
|
|
430
|
-
// sound.setDirectionalCone(360, 360, 1);
|
|
431
|
-
// const src = sound.context.createBufferSource();
|
|
432
|
-
// src.buffer = sound.buffer;
|
|
433
|
-
// src.connect(sound.panner);
|
|
434
|
-
// src.start(this.audioContext?.currentTime);
|
|
435
|
-
// const gain = sound.context.createGain();
|
|
436
|
-
// gain.gain.value = 1 - this.spatialBlend;
|
|
437
|
-
// src.connect(gain);
|
|
438
417
|
// make sure we only play the sound if the user has interacted with the page
|
|
439
418
|
AudioSource.registerWaitForAllowAudio(this.__onAllowAudioCallback);
|
|
440
419
|
};
|
|
@@ -442,30 +421,96 @@ export class AudioSource extends Behaviour {
|
|
|
442
421
|
if (this.shouldPlay)
|
|
443
422
|
this.play();
|
|
444
423
|
};
|
|
424
|
+
/**
|
|
425
|
+
* Sets up the dual-path audio graph for spatial blend crossfading.
|
|
426
|
+
* Creates two parallel signal paths from source to output:
|
|
427
|
+
* - 3D path: entry → panner → spatialGain → gain (spatialized)
|
|
428
|
+
* - 2D path: entry → bypassGain → gain (non-spatialized)
|
|
429
|
+
*/
|
|
430
|
+
setupSpatialBlendNodes() {
|
|
431
|
+
const sound = this.sound;
|
|
432
|
+
if (!sound || this._entryNode)
|
|
433
|
+
return;
|
|
434
|
+
const ctx = sound.context;
|
|
435
|
+
this._entryNode = ctx.createGain();
|
|
436
|
+
this._spatialGain = ctx.createGain();
|
|
437
|
+
this._bypassGain = ctx.createGain();
|
|
438
|
+
// Disconnect the default panner → gain connection set up by three.js
|
|
439
|
+
try {
|
|
440
|
+
sound.panner.disconnect(sound.gain);
|
|
441
|
+
}
|
|
442
|
+
catch { /* not connected */ }
|
|
443
|
+
// 3D path: entry → panner → spatialGain → gain
|
|
444
|
+
this._entryNode.connect(sound.panner);
|
|
445
|
+
sound.panner.connect(this._spatialGain);
|
|
446
|
+
this._spatialGain.connect(sound.gain);
|
|
447
|
+
// 2D path: entry → bypassGain → gain
|
|
448
|
+
this._entryNode.connect(this._bypassGain);
|
|
449
|
+
this._bypassGain.connect(sound.gain);
|
|
450
|
+
// Override getOutput so three.js connects source → entryNode instead of panner
|
|
451
|
+
sound.getOutput = () => this._entryNode;
|
|
452
|
+
// Wrap connect() to undo PositionalAudio's redundant panner → gain reconnection
|
|
453
|
+
const origConnect = sound.connect;
|
|
454
|
+
sound.connect = function () {
|
|
455
|
+
origConnect.call(sound);
|
|
456
|
+
try {
|
|
457
|
+
sound.panner.disconnect(sound.gain);
|
|
458
|
+
}
|
|
459
|
+
catch { /* expected */ }
|
|
460
|
+
return sound;
|
|
461
|
+
};
|
|
462
|
+
// Wrap disconnect() to prevent error when panner → gain doesn't exist
|
|
463
|
+
const origDisconnect = sound.disconnect;
|
|
464
|
+
sound.disconnect = function () {
|
|
465
|
+
try {
|
|
466
|
+
origDisconnect.call(sound);
|
|
467
|
+
}
|
|
468
|
+
catch { /* panner → gain already removed */ }
|
|
469
|
+
return sound;
|
|
470
|
+
};
|
|
471
|
+
this.updateSpatialBlendGains();
|
|
472
|
+
}
|
|
473
|
+
/** Updates the spatial/bypass gain values based on the current spatialBlend. */
|
|
474
|
+
updateSpatialBlendGains() {
|
|
475
|
+
if (!this._spatialGain || !this._bypassGain || !this.sound)
|
|
476
|
+
return;
|
|
477
|
+
const t = this.sound.context.currentTime;
|
|
478
|
+
// Use setTargetAtTime for smooth transitions (avoids clicks/pops)
|
|
479
|
+
this._spatialGain.gain.setTargetAtTime(this._spatialBlend, t, 0.01);
|
|
480
|
+
this._bypassGain.gain.setTargetAtTime(1 - this._spatialBlend, t, 0.01);
|
|
481
|
+
}
|
|
445
482
|
applySpatialDistanceSettings() {
|
|
446
483
|
const sound = this.sound;
|
|
447
484
|
if (!sound)
|
|
448
485
|
return;
|
|
449
486
|
this._needUpdateSpatialDistanceSettings = false;
|
|
450
|
-
const
|
|
487
|
+
const ref = Math.max(0.0001, this._minDistance);
|
|
488
|
+
const max = Math.max(0.01, this._maxDistance);
|
|
451
489
|
if (debug)
|
|
452
|
-
console.log(this.name,
|
|
453
|
-
sound.setRefDistance(
|
|
454
|
-
sound.setMaxDistance(
|
|
455
|
-
// sound.setRolloffFactor(this.spatialBlend);
|
|
456
|
-
// sound.panner.positionZ.automationRate
|
|
490
|
+
console.log(this.name, ref, max, this.spatialBlend);
|
|
491
|
+
sound.setRefDistance(ref);
|
|
492
|
+
sound.setMaxDistance(max);
|
|
457
493
|
// https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel
|
|
458
494
|
switch (this.rollOffMode) {
|
|
459
495
|
case AudioRolloffMode.Logarithmic:
|
|
460
|
-
|
|
496
|
+
// Unity's logarithmic rolloff matches Web Audio's 'inverse' model:
|
|
497
|
+
// gain = refDistance / (refDistance + rolloffFactor * (distance - refDistance))
|
|
498
|
+
// We compute rolloffFactor so gain reaches ~0.01 (-40dB) at maxDistance,
|
|
499
|
+
// matching Unity's behavior of effective silence at maxDistance.
|
|
500
|
+
sound.setDistanceModel('inverse');
|
|
501
|
+
sound.setRolloffFactor(99 * ref / Math.max(0.001, max - ref));
|
|
461
502
|
break;
|
|
462
503
|
case AudioRolloffMode.Linear:
|
|
504
|
+
// gain = 1 - rolloffFactor * (distance - refDistance) / (maxDistance - refDistance)
|
|
505
|
+
// With rolloffFactor=1 this reaches exactly 0 at maxDistance.
|
|
463
506
|
sound.setDistanceModel('linear');
|
|
507
|
+
sound.setRolloffFactor(1);
|
|
464
508
|
break;
|
|
465
509
|
case AudioRolloffMode.Custom:
|
|
466
510
|
console.warn("Custom rolloff for AudioSource is not supported: " + this.name);
|
|
467
511
|
break;
|
|
468
512
|
}
|
|
513
|
+
this.updateSpatialBlendGains();
|
|
469
514
|
if (this.spatialBlend > 0) {
|
|
470
515
|
if (debug && !this.helper) {
|
|
471
516
|
this.helper = new PositionalAudioHelper(sound, sound.getRefDistance());
|
|
@@ -482,7 +527,7 @@ export class AudioSource extends Behaviour {
|
|
|
482
527
|
if (typeof clip === "string") {
|
|
483
528
|
if (debug)
|
|
484
529
|
console.log(clip);
|
|
485
|
-
if (clip.endsWith(".mp3") || clip.endsWith(".wav")) {
|
|
530
|
+
if (clip.endsWith(".mp3") || clip.endsWith(".wav") || clip.endsWith(".ogg") || clip.endsWith(".flac") || clip.endsWith(".aac") || clip.endsWith(".webm")) {
|
|
486
531
|
if (!this.audioLoader)
|
|
487
532
|
this.audioLoader = new AudioLoader();
|
|
488
533
|
this.shouldPlay = true;
|
|
@@ -494,7 +539,10 @@ export class AudioSource extends Behaviour {
|
|
|
494
539
|
this._lastClipStartedLoading = clip;
|
|
495
540
|
if (debug)
|
|
496
541
|
console.log("load audio", clip);
|
|
497
|
-
const buffer = await this.audioLoader.loadAsync(clip).catch(
|
|
542
|
+
const buffer = await this.audioLoader.loadAsync(clip).catch(e => {
|
|
543
|
+
console.error(`[AudioSource] Error loading audio clip "${clip}":`, e);
|
|
544
|
+
return null;
|
|
545
|
+
});
|
|
498
546
|
if (this.destroyed)
|
|
499
547
|
return;
|
|
500
548
|
if (this._lastClipStartedLoading === clip)
|
|
@@ -515,34 +563,36 @@ export class AudioSource extends Behaviour {
|
|
|
515
563
|
* If no argument is provided, plays the currently assigned clip.
|
|
516
564
|
*
|
|
517
565
|
* @param clip - Optional audio clip or {@link MediaStream} to play
|
|
566
|
+
* @returns A promise that resolves when playback starts successfully, or rejects on error
|
|
518
567
|
*/
|
|
519
|
-
play(clip = undefined) {
|
|
568
|
+
async play(clip = undefined) {
|
|
520
569
|
// use audio source's clip when no clip is passed in
|
|
521
570
|
if (!clip && this.clip)
|
|
522
571
|
clip = this.clip;
|
|
523
572
|
// We only support strings and media stream
|
|
524
573
|
// TODO: maybe we should return here if an invalid value is passed in
|
|
525
574
|
if (clip !== undefined && typeof clip !== "string" && !(clip instanceof MediaStream)) {
|
|
526
|
-
if (isDevEnvironment())
|
|
527
|
-
console.warn("Called play on AudioSource with unknown argument type:", clip + "\nUsing the assigned clip instead:", this.clip);
|
|
528
575
|
// e.g. when a AudioSource.Play is called from SpatialTrigger onEnter this event is called with the TriggerReceiver... to still make this work we *re-use* our already assigned clip. Because otherwise calling `play` would not play the clip...
|
|
529
576
|
clip = this.clip;
|
|
577
|
+
if (isDevEnvironment())
|
|
578
|
+
console.warn("[AudioSource] Called play on AudioSource with unknown argument type:", clip + "\nUsing the assigned clip instead:", this.clip);
|
|
530
579
|
}
|
|
531
|
-
//
|
|
532
|
-
let needsLoading = !this.sound || (clip && clip !== this.
|
|
580
|
+
// Load if the sound hasn't been created yet or if the clip changed since last load
|
|
581
|
+
let needsLoading = !this.sound || (clip && clip !== this._loadedClip);
|
|
533
582
|
if (typeof clip === "string" && !this.audioLoader)
|
|
534
583
|
needsLoading = true;
|
|
535
584
|
if (clip instanceof MediaStream || typeof clip === "string")
|
|
536
585
|
this.clip = clip;
|
|
537
586
|
if (needsLoading) {
|
|
538
587
|
this.shouldPlay = true;
|
|
539
|
-
this.onNewClip(clip);
|
|
540
|
-
return;
|
|
588
|
+
return this.onNewClip(clip).then(() => true).catch(() => false);
|
|
541
589
|
}
|
|
542
590
|
this.shouldPlay = true;
|
|
543
591
|
this._hasEnded = false;
|
|
544
592
|
if (debug)
|
|
545
|
-
console.log("play", this.sound?.getVolume(), this.sound);
|
|
593
|
+
console.log("[AudioSource] play", this.sound?.getVolume(), this.sound);
|
|
594
|
+
// If a different clip was passed in, needsLoading above would be true and onNewClip handles it.
|
|
595
|
+
// This guard prevents double-playing the same already-playing sound (which would throw in three.js).
|
|
546
596
|
if (this.sound && !this.sound.isPlaying) {
|
|
547
597
|
const muted = this.context.application.muted;
|
|
548
598
|
if (muted)
|
|
@@ -560,13 +610,16 @@ export class AudioSource extends Behaviour {
|
|
|
560
610
|
this.context.domElement.shadowRoot?.append(this._audioElement);
|
|
561
611
|
this._audioElement.srcObject = this.clip;
|
|
562
612
|
this._audioElement.autoplay = false;
|
|
613
|
+
return true;
|
|
563
614
|
}
|
|
564
615
|
else {
|
|
565
616
|
if (this._audioElement)
|
|
566
617
|
this._audioElement.remove();
|
|
567
618
|
this.sound.play(muted ? .1 : 0);
|
|
619
|
+
return true;
|
|
568
620
|
}
|
|
569
621
|
}
|
|
622
|
+
return false;
|
|
570
623
|
}
|
|
571
624
|
/**
|
|
572
625
|
* Pauses audio playback while maintaining the current position.
|
|
@@ -574,7 +627,7 @@ export class AudioSource extends Behaviour {
|
|
|
574
627
|
*/
|
|
575
628
|
pause() {
|
|
576
629
|
if (debug)
|
|
577
|
-
console.log("
|
|
630
|
+
console.log("[AudioSource] pause", this);
|
|
578
631
|
this._hasEnded = true;
|
|
579
632
|
this.shouldPlay = false;
|
|
580
633
|
if (this.sound && this.sound.isPlaying && this.sound.source) {
|
|
@@ -589,13 +642,13 @@ export class AudioSource extends Behaviour {
|
|
|
589
642
|
*/
|
|
590
643
|
stop() {
|
|
591
644
|
if (debug)
|
|
592
|
-
console.log("
|
|
645
|
+
console.log("[AudioSource] stop", this);
|
|
593
646
|
this._hasEnded = true;
|
|
594
647
|
this.shouldPlay = false;
|
|
595
648
|
if (this.sound && this.sound.source) {
|
|
596
649
|
this._lastContextTime = this.sound?.context.currentTime;
|
|
597
650
|
if (debug)
|
|
598
|
-
console.log(this._lastContextTime);
|
|
651
|
+
console.log("[AudioSource] lastContextTime", this._lastContextTime);
|
|
599
652
|
this.sound.stop();
|
|
600
653
|
}
|
|
601
654
|
this._audioElement?.remove();
|
|
@@ -616,7 +669,7 @@ export class AudioSource extends Behaviour {
|
|
|
616
669
|
if (this.sound && !this.sound.isPlaying && this.shouldPlay && !this._hasEnded) {
|
|
617
670
|
this._hasEnded = true;
|
|
618
671
|
if (debug)
|
|
619
|
-
console.log("Audio clip ended", this.clip);
|
|
672
|
+
console.log("[AudioSource] Audio clip ended", this.clip);
|
|
620
673
|
this.dispatchEvent(new CustomEvent("ended", { detail: this }));
|
|
621
674
|
}
|
|
622
675
|
// this.gameObject.position.x = Math.sin(time.time) * 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../src/engine-components/AudioSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../src/engine-components/AudioSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Object3D } from "three";
|
|
2
2
|
import { Behaviour } from "./Component.js";
|
|
3
|
+
import { EventList } from "./EventList.js";
|
|
3
4
|
import type { IPointerEventHandler, PointerEventData } from "./ui/PointerEvents.js";
|
|
4
5
|
/**
|
|
5
6
|
* The DragMode determines how an object is dragged around in the scene.
|
|
@@ -106,6 +107,12 @@ export declare class DragControls extends Behaviour implements IPointerEventHand
|
|
|
106
107
|
* providing visual feedback about the object's position relative to surfaces below it.
|
|
107
108
|
*/
|
|
108
109
|
showGizmo: boolean;
|
|
110
|
+
/** Invoked once when a drag begins (after the minimum drag distance threshold is met). */
|
|
111
|
+
dragStarted: EventList;
|
|
112
|
+
/** Invoked every frame while the object is being dragged. */
|
|
113
|
+
dragUpdated: EventList;
|
|
114
|
+
/** Invoked once when the last pointer is released and the drag ends. */
|
|
115
|
+
dragEnded: EventList;
|
|
109
116
|
/**
|
|
110
117
|
* Returns the object currently being dragged by this DragControls component, if any.
|
|
111
118
|
* @returns The object being dragged or null if no object is currently dragged
|
|
@@ -15,6 +15,7 @@ import { getParam } from "../engine/engine_utils.js";
|
|
|
15
15
|
import { NeedleXRSession } from "../engine/engine_xr.js";
|
|
16
16
|
import { Avatar_POI } from "./avatar/Avatar_Brain_LookAt.js";
|
|
17
17
|
import { Behaviour, GameObject } from "./Component.js";
|
|
18
|
+
import { EventList } from "./EventList.js";
|
|
18
19
|
import { UsageMarker } from "./Interactable.js";
|
|
19
20
|
import { Rigidbody } from "./RigidBody.js";
|
|
20
21
|
import { SyncedTransform } from "./SyncedTransform.js";
|
|
@@ -137,6 +138,12 @@ export class DragControls extends Behaviour {
|
|
|
137
138
|
* providing visual feedback about the object's position relative to surfaces below it.
|
|
138
139
|
*/
|
|
139
140
|
showGizmo = false;
|
|
141
|
+
/** Invoked once when a drag begins (after the minimum drag distance threshold is met). */
|
|
142
|
+
dragStarted = new EventList();
|
|
143
|
+
/** Invoked every frame while the object is being dragged. */
|
|
144
|
+
dragUpdated = new EventList();
|
|
145
|
+
/** Invoked once when the last pointer is released and the drag ends. */
|
|
146
|
+
dragEnded = new EventList();
|
|
140
147
|
/**
|
|
141
148
|
* Returns the object currently being dragged by this DragControls component, if any.
|
|
142
149
|
* @returns The object being dragged or null if no object is currently dragged
|
|
@@ -415,6 +422,7 @@ export class DragControls extends Behaviour {
|
|
|
415
422
|
if (!object)
|
|
416
423
|
return;
|
|
417
424
|
this._isDragging = true;
|
|
425
|
+
this.dragStarted?.invoke();
|
|
418
426
|
const sync = GameObject.getComponentInChildren(object, SyncedTransform);
|
|
419
427
|
if (debug)
|
|
420
428
|
console.log("DRAG START", sync, object);
|
|
@@ -448,6 +456,7 @@ export class DragControls extends Behaviour {
|
|
|
448
456
|
}
|
|
449
457
|
const object = this._targetObject || this.gameObject;
|
|
450
458
|
InstancingUtil.markDirty(object);
|
|
459
|
+
this.dragUpdated?.invoke();
|
|
451
460
|
}
|
|
452
461
|
/**
|
|
453
462
|
* Called when the last pointer has been removed from this object.
|
|
@@ -458,6 +467,7 @@ export class DragControls extends Behaviour {
|
|
|
458
467
|
if (!this || !this._isDragging)
|
|
459
468
|
return;
|
|
460
469
|
this._isDragging = false;
|
|
470
|
+
this.dragEnded?.invoke();
|
|
461
471
|
for (const rb of this._draggingRigidbodies) {
|
|
462
472
|
rb.setVelocity(rb.smoothedVelocity.multiplyScalar(this.context.time.deltaTime));
|
|
463
473
|
}
|
|
@@ -500,6 +510,15 @@ __decorate([
|
|
|
500
510
|
__decorate([
|
|
501
511
|
serializable()
|
|
502
512
|
], DragControls.prototype, "showGizmo", void 0);
|
|
513
|
+
__decorate([
|
|
514
|
+
serializable(EventList)
|
|
515
|
+
], DragControls.prototype, "dragStarted", void 0);
|
|
516
|
+
__decorate([
|
|
517
|
+
serializable(EventList)
|
|
518
|
+
], DragControls.prototype, "dragUpdated", void 0);
|
|
519
|
+
__decorate([
|
|
520
|
+
serializable(EventList)
|
|
521
|
+
], DragControls.prototype, "dragEnded", void 0);
|
|
503
522
|
// #region MultiTouchDragHandler
|
|
504
523
|
/**
|
|
505
524
|
* Handles two touch points affecting one object.
|