@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.
Files changed (133) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/components.needle.json +1 -1
  3. package/dist/{needle-engine.bundle-qZfVf_v-.umd.cjs → needle-engine.bundle-C-ixARur.umd.cjs} +128 -127
  4. package/dist/{needle-engine.bundle-B-5Q2CpC.min.js → needle-engine.bundle-CHmXdnE1.min.js} +138 -137
  5. package/dist/{needle-engine.bundle-dit3f1l5.js → needle-engine.bundle-DF01sSGQ.js} +7815 -7602
  6. package/dist/needle-engine.d.ts +125 -27
  7. package/dist/needle-engine.js +524 -521
  8. package/dist/needle-engine.min.js +1 -1
  9. package/dist/needle-engine.umd.cjs +1 -1
  10. package/lib/engine/api.d.ts +2 -0
  11. package/lib/engine/api.js +2 -0
  12. package/lib/engine/api.js.map +1 -1
  13. package/lib/engine/debug/debug_spatial_console.d.ts +2 -0
  14. package/lib/engine/debug/debug_spatial_console.js +10 -7
  15. package/lib/engine/debug/debug_spatial_console.js.map +1 -1
  16. package/lib/engine/engine_addressables.d.ts +2 -0
  17. package/lib/engine/engine_addressables.js +6 -3
  18. package/lib/engine/engine_addressables.js.map +1 -1
  19. package/lib/engine/engine_audio.d.ts +68 -0
  20. package/lib/engine/engine_audio.js +172 -0
  21. package/lib/engine/engine_audio.js.map +1 -1
  22. package/lib/engine/engine_components.js +1 -1
  23. package/lib/engine/engine_components.js.map +1 -1
  24. package/lib/engine/engine_context.d.ts +1 -1
  25. package/lib/engine/engine_context.js +1 -1
  26. package/lib/engine/engine_context.js.map +1 -1
  27. package/lib/engine/engine_gameobject.js +2 -2
  28. package/lib/engine/engine_gameobject.js.map +1 -1
  29. package/lib/engine/engine_init.js +13 -3
  30. package/lib/engine/engine_init.js.map +1 -1
  31. package/lib/engine/engine_input.d.ts +1 -1
  32. package/lib/engine/engine_input.js +1 -1
  33. package/lib/engine/engine_input.js.map +1 -1
  34. package/lib/engine/engine_license.js +1 -1
  35. package/lib/engine/engine_license.js.map +1 -1
  36. package/lib/engine/engine_mainloop_utils.js +5 -2
  37. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  38. package/lib/engine/engine_networking_blob.js +1 -1
  39. package/lib/engine/engine_networking_blob.js.map +1 -1
  40. package/lib/engine/engine_scenedata.d.ts +2 -0
  41. package/lib/engine/engine_scenedata.js +4 -2
  42. package/lib/engine/engine_scenedata.js.map +1 -1
  43. package/lib/engine/engine_serialization_builtin_serializer.d.ts +10 -16
  44. package/lib/engine/engine_serialization_builtin_serializer.js +55 -41
  45. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  46. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  47. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  48. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -1
  49. package/lib/engine/webcomponents/needle menu/needle-menu.js +1 -1
  50. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  51. package/lib/engine/webcomponents/needle-engine.d.ts +10 -4
  52. package/lib/engine/webcomponents/needle-engine.js +1 -1
  53. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  54. package/lib/engine/xr/NeedleXRSession.d.ts +3 -2
  55. package/lib/engine/xr/NeedleXRSession.js +50 -14
  56. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  57. package/lib/engine/xr/events.d.ts +1 -1
  58. package/lib/engine/xr/events.js.map +1 -1
  59. package/lib/engine-components/Animation.js +17 -16
  60. package/lib/engine-components/Animation.js.map +1 -1
  61. package/lib/engine-components/AnimatorController.d.ts +2 -0
  62. package/lib/engine-components/AnimatorController.js +4 -1
  63. package/lib/engine-components/AnimatorController.js.map +1 -1
  64. package/lib/engine-components/AudioSource.d.ts +19 -3
  65. package/lib/engine-components/AudioSource.js +121 -68
  66. package/lib/engine-components/AudioSource.js.map +1 -1
  67. package/lib/engine-components/DragControls.d.ts +7 -0
  68. package/lib/engine-components/DragControls.js +19 -0
  69. package/lib/engine-components/DragControls.js.map +1 -1
  70. package/lib/engine-components/Networking.d.ts +1 -1
  71. package/lib/engine-components/Networking.js +1 -1
  72. package/lib/engine-components/OrbitControls.js +16 -11
  73. package/lib/engine-components/OrbitControls.js.map +1 -1
  74. package/lib/engine-components/ReflectionProbe.js +2 -0
  75. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  76. package/lib/engine-components/SeeThrough.js +2 -2
  77. package/lib/engine-components/SeeThrough.js.map +1 -1
  78. package/lib/engine-components/api.d.ts +1 -1
  79. package/lib/engine-components/api.js +1 -1
  80. package/lib/engine-components/api.js.map +1 -1
  81. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  82. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +2 -0
  83. package/lib/engine-components/postprocessing/VolumeParameter.js +4 -1
  84. package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
  85. package/lib/engine-components/ui/Canvas.d.ts +1 -1
  86. package/lib/engine-components/ui/Canvas.js +2 -8
  87. package/lib/engine-components/ui/Canvas.js.map +1 -1
  88. package/lib/engine-components/ui/Text.d.ts +1 -0
  89. package/lib/engine-components/ui/Text.js +10 -7
  90. package/lib/engine-components/ui/Text.js.map +1 -1
  91. package/lib/engine-components/web/CursorFollow.js +21 -12
  92. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  93. package/lib/engine-components/webxr/WebXRImageTracking.js +4 -0
  94. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  95. package/package.json +1 -1
  96. package/plugins/vite/asap.js +17 -8
  97. package/plugins/vite/dependencies.js +29 -0
  98. package/plugins/vite/local-files-core.js +3 -3
  99. package/plugins/vite/local-files-utils.d.ts +3 -1
  100. package/plugins/vite/local-files-utils.js +29 -5
  101. package/src/engine/api.ts +3 -0
  102. package/src/engine/debug/debug_spatial_console.ts +10 -7
  103. package/src/engine/engine_addressables.ts +6 -3
  104. package/src/engine/engine_audio.ts +184 -0
  105. package/src/engine/engine_components.ts +1 -1
  106. package/src/engine/engine_context.ts +2 -2
  107. package/src/engine/engine_gameobject.ts +2 -2
  108. package/src/engine/engine_init.ts +13 -3
  109. package/src/engine/engine_input.ts +1 -1
  110. package/src/engine/engine_license.ts +1 -1
  111. package/src/engine/engine_mainloop_utils.ts +5 -2
  112. package/src/engine/engine_networking_blob.ts +1 -1
  113. package/src/engine/engine_scenedata.ts +5 -3
  114. package/src/engine/engine_serialization_builtin_serializer.ts +63 -46
  115. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  116. package/src/engine/webcomponents/needle menu/needle-menu.ts +1 -1
  117. package/src/engine/webcomponents/needle-engine.ts +10 -4
  118. package/src/engine/xr/NeedleXRSession.ts +48 -13
  119. package/src/engine/xr/events.ts +1 -1
  120. package/src/engine-components/Animation.ts +19 -16
  121. package/src/engine-components/AnimatorController.ts +4 -1
  122. package/src/engine-components/AudioSource.ts +130 -79
  123. package/src/engine-components/DragControls.ts +18 -2
  124. package/src/engine-components/Networking.ts +1 -1
  125. package/src/engine-components/OrbitControls.ts +18 -9
  126. package/src/engine-components/ReflectionProbe.ts +2 -0
  127. package/src/engine-components/SeeThrough.ts +2 -2
  128. package/src/engine-components/api.ts +1 -1
  129. package/src/engine-components/postprocessing/VolumeParameter.ts +4 -1
  130. package/src/engine-components/ui/Canvas.ts +2 -8
  131. package/src/engine-components/ui/Text.ts +12 -8
  132. package/src/engine-components/web/CursorFollow.ts +21 -13
  133. 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 current audio clip in seconds.
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
- return this.sound?.buffer?.duration;
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
- * Note: 2D playback is not fully supported in the current implementation.
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, () => { }, console.error);
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 dist = Mathf.lerp(10 * this._maxDistance / Math.max(0.0001, this.spatialBlend), this._minDistance, this.spatialBlend);
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, this._minDistance, this._maxDistance, this.spatialBlend, "Ref distance=" + dist);
453
- sound.setRefDistance(dist);
454
- sound.setMaxDistance(Math.max(0.01, this._maxDistance));
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
- sound.setDistanceModel('exponential');
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(console.error);
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
- // Check if we need to call load first
532
- let needsLoading = !this.sound || (clip && clip !== this.clip);
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("Pause", this);
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("Pause", this);
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":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAE5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAGvD,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,CAAN,IAAY,gBAkBX;AAlBD,WAAY,gBAAgB;IACxB;;;OAGG;IACH,qEAAe,CAAA;IAEf;;;OAGG;IACH,2DAAU,CAAA;IAEV;;;OAGG;IACH,2DAAU,CAAA;AACd,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB,QAkB3B;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAEtC;;;;;;OAMG;IACI,MAAM,KAAK,yBAAyB;QACvC,OAAO,WAAW,CAAC,yBAAyB,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,yBAAyB,CAAC,EAAY;QAChD,WAAW,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IAEH,IAAI,GAAyB,EAAE,CAAC;IAEhC;;;;OAIG;IAEH,WAAW,GAAY,KAAK,CAAC;IAE7B;;;;OAIG;IAEH,OAAO,GAAY,IAAI,CAAC;IAExB;;;;OAIG;IAEH,gBAAgB,GAAY,IAAI,CAAC;IAEjC;;;;OAIG;IACH,IAAI,SAAS,KAAc,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;IAEnE;;;;;OAKG;IACH,IAAI,QAAQ;QACR,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,CAAC;aACI,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACvC,CAAC;aACI,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE,CAAC;YAC/C,2FAA2F;YAC3F,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,GAAW;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC;QAC/B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5I,IAAI,IAAI,CAAC,GAAW;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACxB,IAAI,UAAU;gBACV,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;IAED;;;;OAIG;IAEH,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,GAAY;QACjB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IAEH,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,IAAI,YAAY,CAAC,GAAW;QACxB,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QACvC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAED;;;OAGG;IAEH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG;YAAE,OAAO;QACtC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAED;;;OAGG;IAEH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG;YAAE,OAAO;QACtC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAEO,aAAa,GAAW,CAAC,CAAC;IAC1B,YAAY,GAAW,CAAC,CAAC;IACzB,YAAY,GAAW,GAAG,CAAC;IAEnC;;;;OAIG;IAEH,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,GAAW;QAClB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACO,OAAO,GAAW,CAAC,CAAC;IAE5B;;;;;OAKG;IAEH,IAAI,KAAK,CAAC,GAAW;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IAEH,WAAW,GAAqB,CAAC,CAAC;IAG1B,KAAK,GAAY,KAAK,CAAC;IACvB,KAAK,GAA2B,IAAI,CAAC;IACrC,MAAM,GAAiC,IAAI,CAAC;IAC5C,UAAU,GAAG,KAAK,CAAC;IACnB,WAAW,GAAuB,IAAI,CAAC;IACvC,UAAU,GAAY,KAAK,CAAC;IACpC,yFAAyF;IACzF,iEAAiE;IACzD,uBAAuB,GAAgC,IAAI,CAAC;IAC5D,WAAW,GAAgC,IAAI,CAAC;IAChD,aAAa,GAA4B,IAAI,CAAC;IAEtD,sCAAsC;IAC9B,UAAU,GAAoB,IAAI,CAAC;IACnC,YAAY,GAAoB,IAAI,CAAC;IACrC,WAAW,GAAoB,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,IAAW,KAAK;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,yBAAyB,EAAE,CAAC;YACvD,8CAA8C;YAC9C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,gCAAgC;mBACpF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,wCAAwC;mBAC5F,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,iCAAiC;YAE9F,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEzG,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;iBACI,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5D;;;;OAIG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,KAAK;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC9D,OAAO,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAC;YACzC,WAAW,CAAC,yBAAyB,CAAC,GAAG,EAAE;gBACvC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU;oBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;aACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5G,CAAC;IAED,gBAAgB;IAChB,SAAS;QACL,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEO,mBAAmB,GAAG,GAAG,EAAE;QAC/B,QAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC/B,KAAK,QAAQ;gBACT,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;oBACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;oBACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,CAAC,KAAK,EAAE,CAAC;oBACjB,CAAC;gBACL,CAAC;gBACD,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3I,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,yBAAyB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClH,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM;QACd,CAAC;IACL,CAAC,CAAA;IAEO,wBAAwB,GAAG,GAAG,EAAE;QACpC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAC9B,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;YAEzB,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAA;IAEO,WAAW,GAAG,CAAC,MAAoB,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO;QACX,CAAC;QAED,IAAI,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,IAAI,EAAE,CAAC;QAEjB,IAAI,MAAM;YAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;YAClD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,yBAAyB,CAAC;QAC1E,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,IAAI,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,IAAI,EAAE,CAAC;QAEjB,4EAA4E;QAC5E,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvE,CAAC,CAAA;IACO,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAA;IAED;;;;;OAKG;IACK,sBAAsB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAEtC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEpC,qEAAqE;QACrE,IAAI,CAAC;YAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE1E,+CAA+C;QAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEtC,qCAAqC;QACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErC,+EAA+E;QAC/E,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAoC,CAAC;QAElE,gFAAgF;QAChF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,KAAK,CAAC,OAAO,GAAG;YACZ,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC;gBAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,sEAAsE;QACtE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;QACxC,KAAK,CAAC,UAAU,GAAG;YACf,IAAI,CAAC;gBAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAED,gFAAgF;IACxE,uBAAuB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACzC,kEAAkE;QAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,4BAA4B;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC;QAEhD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE1B,4EAA4E;QAC5E,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,gBAAgB,CAAC,WAAW;gBAC7B,mEAAmE;gBACnE,gFAAgF;gBAChF,yEAAyE;gBACzE,iEAAiE;gBACjE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAClC,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,gBAAgB,CAAC,MAAM;gBACxB,oFAAoF;gBACpF,8DAA8D;gBAC9D,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,gBAAgB,CAAC,MAAM;gBACxB,OAAO,CAAC,IAAI,CAAC,mDAAmD,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9E,MAAM;QACd,CAAC;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;gBACvE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAA2B;QAC/C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,KAAK;gBACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvJ,IAAI,CAAC,IAAI,CAAC,WAAW;oBACjB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;oBACxC,IAAI,KAAK;wBAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;oBACnF,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBACpC,IAAI,KAAK;oBACL,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC5D,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;oBACtE,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAC3B,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI;oBAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBAC/E,IAAI,MAAM;oBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;;gBACI,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1D,CAAC;aACI,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,OAAyC,SAAS;QACzD,oDAAoD;QACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAClB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAErB,2CAA2C;QAC3C,qEAAqE;QACrE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE,CAAC;YACnF,iPAAiP;YACjP,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,gBAAgB,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,IAAI,GAAG,oCAAoC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACxK,CAAC;QAED,mFAAmF;QACnF,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,YAAY,GAAG,IAAI,CAAC;QACvE,IAAI,IAAI,YAAY,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ;YACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClF,gGAAgG;QAChG,qGAAqG;QACrG,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7C,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;gBAEnC,qEAAqE;gBACrE,gDAAgD;gBAChD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACrD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC9C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU;oBAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpC,OAAO,IAAI,CAAC;YAEhB,CAAC;iBACI,CAAC;gBACF,IAAI,IAAI,CAAC,aAAa;oBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI;QACA,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;YACxD,IAAI,KAAK;gBACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB,GAAW,CAAC,CAAC;IAE7B,SAAS,GAAY,IAAI,CAAC;IAC1B,kCAAkC,GAAY,KAAK,CAAC;IAE5D,gBAAgB;IAChB,MAAM;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,wDAAwD;QACxD,6DAA6D;IACjE,CAAC;CACJ;AAnmBG;IADC,YAAY,CAAC,GAAG,CAAC;yCACc;AAQhC;IADC,YAAY,EAAE;gDACc;AAQ7B;IADC,YAAY,EAAE;4CACS;AAQxB;IADC,YAAY,EAAE;qDACkB;AAqEjC;IADC,YAAY,EAAE;uCAId;AAaD;IADC,YAAY,EAAE;+CAGd;AAYD;IADC,YAAY,EAAE;8CAGd;AAYD;IADC,YAAY,EAAE;8CAGd;AAiBD;IADC,YAAY,EAAE;yCAC8B;AAiB7C;IADC,YAAY,EAAE;wCAGd;AAWD;IADC,YAAY,EAAE;gDACmB"}
@@ -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.