@galacean/engine-xr 2.0.0-alpha.2 → 2.0.0-alpha.21

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/dist/main.js CHANGED
@@ -345,13 +345,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
345
345
  function XRInputManager(_xrManager, _engine) {
346
346
  this._xrManager = _xrManager;
347
347
  this._engine = _engine;
348
+ this.onTrackedDeviceChanged = new engine.Signal();
348
349
  this./** @internal */ _cameras = [];
349
350
  this./** @internal */ _controllers = [];
350
351
  this._added = [];
351
352
  this._removed = [];
352
353
  this._trackedDevices = [];
353
354
  this._statusSnapshot = [];
354
- this._listeners = new engine.SafeLoopArray();
355
355
  var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
356
356
  for(var i = 0; i < 6; i++){
357
357
  switch(i){
@@ -378,22 +378,6 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
378
378
  return this._trackedDevices[type];
379
379
  };
380
380
  /**
381
- * Add a listener for tracked device changes.
382
- * @param listener - The listener to add
383
- */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
384
- this._listeners.push({
385
- fn: listener
386
- });
387
- };
388
- /**
389
- * Remove a listener of tracked device changes.
390
- * @param listener - The listener to remove
391
- */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
392
- this._listeners.findAndRemove(function(value) {
393
- return value.fn === listener ? value.destroyed = true : false;
394
- });
395
- };
396
- /**
397
381
  * @internal
398
382
  */ _proto._onUpdate = function _onUpdate() {
399
383
  var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
@@ -429,19 +413,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
429
413
  }
430
414
  // Dispatch change event
431
415
  if (added.length > 0 || removed.length > 0) {
432
- var listeners = this._listeners.getLoopArray();
433
- for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){
434
- var listener = listeners[i3];
435
- !listener.destroyed && listener.fn(added, removed);
436
- }
416
+ this.onTrackedDeviceChanged.invoke(added, removed);
437
417
  }
438
418
  };
439
419
  /**
440
420
  * @internal
441
421
  */ _proto._onDestroy = function _onDestroy() {
442
- this._listeners.findAndRemove(function(value) {
443
- return value.destroyed = true;
444
- });
422
+ this.onTrackedDeviceChanged.removeAll();
445
423
  };
446
424
  _proto._handleEvent = function _handleEvent(event) {
447
425
  var input = this._trackedDevices[event.input];
@@ -517,6 +495,18 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
517
495
  }
518
496
  return new PointerEvent(type, eventInitDict);
519
497
  };
498
+ /**
499
+ * Add a listener for tracked device changes.
500
+ * @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
501
+ */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
502
+ this.onTrackedDeviceChanged.on(listener);
503
+ };
504
+ /**
505
+ * Remove a listener of tracked device changes.
506
+ * @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
507
+ */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
508
+ this.onTrackedDeviceChanged.off(listener);
509
+ };
520
510
  return XRInputManager;
521
511
  }();
522
512
 
@@ -535,9 +525,9 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
535
525
  function XRSessionManager(_xrManager, _engine) {
536
526
  this._xrManager = _xrManager;
537
527
  this._engine = _engine;
528
+ this.onStateChanged = new engine.Signal();
538
529
  this._mode = XRSessionMode.None;
539
530
  this._state = XRSessionState.None;
540
- this._listeners = new engine.SafeLoopArray();
541
531
  // @ts-ignore
542
532
  this._rhi = _engine._hardwareRenderer;
543
533
  this._raf = requestAnimationFrame.bind(window);
@@ -588,30 +578,10 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
588
578
  }
589
579
  };
590
580
  /**
591
- * Add a listening function for session state changes.
592
- * @param listener - The listening function
593
- */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
594
- this._listeners.push({
595
- fn: listener
596
- });
597
- };
598
- /**
599
- * Remove a listening function of session state changes.
600
- * @param listener - The listening function
601
- */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
602
- this._listeners.findAndRemove(function(value) {
603
- return value.fn === listener ? value.destroyed = true : false;
604
- });
605
- };
606
- /**
607
581
  * @internal
608
582
  */ _proto._setState = function _setState(value) {
609
583
  this._state = value;
610
- var listeners = this._listeners.getLoopArray();
611
- for(var i = 0, n = listeners.length; i < n; i++){
612
- var listener = listeners[i];
613
- !listener.destroyed && listener.fn(value);
614
- }
584
+ this.onStateChanged.invoke(value);
615
585
  };
616
586
  /**
617
587
  * @internal
@@ -687,11 +657,21 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
687
657
  /**
688
658
  * @internal
689
659
  */ _proto._onDestroy = function _onDestroy() {
690
- this._listeners.findAndRemove(function(value) {
691
- return value.destroyed = true;
692
- });
660
+ this.onStateChanged.removeAll();
693
661
  this._raf = this._caf = null;
694
662
  };
663
+ /**
664
+ * Add a listening function for session state changes.
665
+ * @deprecated Use `onStateChanged.on(listener)` instead.
666
+ */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
667
+ this.onStateChanged.on(listener);
668
+ };
669
+ /**
670
+ * Remove a listening function of session state changes.
671
+ * @deprecated Use `onStateChanged.off(listener)` instead.
672
+ */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
673
+ this.onStateChanged.off(listener);
674
+ };
695
675
  _create_class(XRSessionManager, [
696
676
  {
697
677
  key: "mode",
@@ -1007,26 +987,10 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1007
987
  _inherits(XRTrackableFeature, XRFeature);
1008
988
  function XRTrackableFeature() {
1009
989
  var _this;
1010
- _this = XRFeature.apply(this, arguments) || this, _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {}, _this._listeners = new engine.SafeLoopArray();
990
+ _this = XRFeature.apply(this, arguments) || this, /** Signal emitted when tracked objects change. */ _this.onChanged = new engine.Signal(), _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {};
1011
991
  return _this;
1012
992
  }
1013
993
  var _proto = XRTrackableFeature.prototype;
1014
- /**
1015
- * Add a listening function for tracked object changes.
1016
- * @param listener - The listening function
1017
- */ _proto.addChangedListener = function addChangedListener(listener) {
1018
- this._listeners.push({
1019
- fn: listener
1020
- });
1021
- };
1022
- /**
1023
- * Remove a listening function of tracked object changes.
1024
- * @param listener - The listening function
1025
- */ _proto.removeChangedListener = function removeChangedListener(listener) {
1026
- this._listeners.findAndRemove(function(value) {
1027
- return value.fn === listener ? value.destroyed = true : false;
1028
- });
1029
- };
1030
994
  _proto._onUpdate = function _onUpdate() {
1031
995
  var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
1032
996
  var platformFrame = platformSession.frame;
@@ -1082,11 +1046,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1082
1046
  requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
1083
1047
  }
1084
1048
  if (added.length > 0 || updated.length > 0 || removed.length > 0) {
1085
- var listeners = this._listeners.getLoopArray();
1086
- for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){
1087
- var listener = listeners[i2];
1088
- !listener.destroyed && listener.fn(added, updated, removed);
1089
- }
1049
+ this.onChanged.invoke(added, updated, removed);
1090
1050
  }
1091
1051
  };
1092
1052
  _proto._onSessionStop = function _onSessionStop() {
@@ -1095,9 +1055,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1095
1055
  _proto._onSessionExit = function _onSessionExit() {
1096
1056
  // prettier-ignore
1097
1057
  this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;
1098
- this._listeners.findAndRemove(function(value) {
1099
- return value.destroyed = true;
1100
- });
1058
+ this.onChanged.removeAll();
1101
1059
  };
1102
1060
  _proto._addRequestTracking = function _addRequestTracking(requestTracking) {
1103
1061
  var _this = this, platformFeature = _this._platformFeature;
@@ -1124,6 +1082,18 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1124
1082
  platformFeature.onDelRequestTracking(requestTrackings[i]);
1125
1083
  }
1126
1084
  };
1085
+ /**
1086
+ * Add a listening function for tracked object changes.
1087
+ * @deprecated Use `onChanged.on(listener)` instead.
1088
+ */ _proto.addChangedListener = function addChangedListener(listener) {
1089
+ this.onChanged.on(listener);
1090
+ };
1091
+ /**
1092
+ * Remove a listening function of tracked object changes.
1093
+ * @deprecated Use `onChanged.off(listener)` instead.
1094
+ */ _proto.removeChangedListener = function removeChangedListener(listener) {
1095
+ this.onChanged.off(listener);
1096
+ };
1127
1097
  return XRTrackableFeature;
1128
1098
  }(XRFeature);
1129
1099
  XRTrackableFeature._uuid = 0;