@galacean/engine-xr-webxr 2.0.0-alpha.14 → 2.0.0-alpha.15

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/browser.js CHANGED
@@ -402,13 +402,13 @@
402
402
  function XRInputManager(_xrManager, _engine) {
403
403
  this._xrManager = _xrManager;
404
404
  this._engine = _engine;
405
+ this.onTrackedDeviceChanged = new engine.Signal();
405
406
  this./** @internal */ _cameras = [];
406
407
  this./** @internal */ _controllers = [];
407
408
  this._added = [];
408
409
  this._removed = [];
409
410
  this._trackedDevices = [];
410
411
  this._statusSnapshot = [];
411
- this._listeners = new engine.SafeLoopArray();
412
412
  var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
413
413
  for(var i = 0; i < 6; i++){
414
414
  switch(i){
@@ -435,22 +435,6 @@
435
435
  return this._trackedDevices[type];
436
436
  };
437
437
  /**
438
- * Add a listener for tracked device changes.
439
- * @param listener - The listener to add
440
- */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
441
- this._listeners.push({
442
- fn: listener
443
- });
444
- };
445
- /**
446
- * Remove a listener of tracked device changes.
447
- * @param listener - The listener to remove
448
- */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
449
- this._listeners.findAndRemove(function(value) {
450
- return value.fn === listener ? value.destroyed = true : false;
451
- });
452
- };
453
- /**
454
438
  * @internal
455
439
  */ _proto._onUpdate = function _onUpdate() {
456
440
  var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
@@ -486,19 +470,13 @@
486
470
  }
487
471
  // Dispatch change event
488
472
  if (added.length > 0 || removed.length > 0) {
489
- var listeners = this._listeners.getLoopArray();
490
- for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){
491
- var listener = listeners[i3];
492
- !listener.destroyed && listener.fn(added, removed);
493
- }
473
+ this.onTrackedDeviceChanged.invoke(added, removed);
494
474
  }
495
475
  };
496
476
  /**
497
477
  * @internal
498
478
  */ _proto._onDestroy = function _onDestroy() {
499
- this._listeners.findAndRemove(function(value) {
500
- return value.destroyed = true;
501
- });
479
+ this.onTrackedDeviceChanged.removeAll();
502
480
  };
503
481
  _proto._handleEvent = function _handleEvent(event) {
504
482
  var input = this._trackedDevices[event.input];
@@ -574,6 +552,18 @@
574
552
  }
575
553
  return new PointerEvent(type, eventInitDict);
576
554
  };
555
+ /**
556
+ * Add a listener for tracked device changes.
557
+ * @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
558
+ */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
559
+ this.onTrackedDeviceChanged.on(listener);
560
+ };
561
+ /**
562
+ * Remove a listener of tracked device changes.
563
+ * @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
564
+ */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
565
+ this.onTrackedDeviceChanged.off(listener);
566
+ };
577
567
  return XRInputManager;
578
568
  }();
579
569
  /**
@@ -590,9 +580,9 @@
590
580
  function XRSessionManager(_xrManager, _engine) {
591
581
  this._xrManager = _xrManager;
592
582
  this._engine = _engine;
583
+ this.onStateChanged = new engine.Signal();
593
584
  this._mode = XRSessionMode.None;
594
585
  this._state = XRSessionState.None;
595
- this._listeners = new engine.SafeLoopArray();
596
586
  // @ts-ignore
597
587
  this._rhi = _engine._hardwareRenderer;
598
588
  this._raf = requestAnimationFrame.bind(window);
@@ -643,30 +633,10 @@
643
633
  }
644
634
  };
645
635
  /**
646
- * Add a listening function for session state changes.
647
- * @param listener - The listening function
648
- */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
649
- this._listeners.push({
650
- fn: listener
651
- });
652
- };
653
- /**
654
- * Remove a listening function of session state changes.
655
- * @param listener - The listening function
656
- */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
657
- this._listeners.findAndRemove(function(value) {
658
- return value.fn === listener ? value.destroyed = true : false;
659
- });
660
- };
661
- /**
662
636
  * @internal
663
637
  */ _proto._setState = function _setState(value) {
664
638
  this._state = value;
665
- var listeners = this._listeners.getLoopArray();
666
- for(var i = 0, n = listeners.length; i < n; i++){
667
- var listener = listeners[i];
668
- !listener.destroyed && listener.fn(value);
669
- }
639
+ this.onStateChanged.invoke(value);
670
640
  };
671
641
  /**
672
642
  * @internal
@@ -742,11 +712,21 @@
742
712
  /**
743
713
  * @internal
744
714
  */ _proto._onDestroy = function _onDestroy() {
745
- this._listeners.findAndRemove(function(value) {
746
- return value.destroyed = true;
747
- });
715
+ this.onStateChanged.removeAll();
748
716
  this._raf = this._caf = null;
749
717
  };
718
+ /**
719
+ * Add a listening function for session state changes.
720
+ * @deprecated Use `onStateChanged.on(listener)` instead.
721
+ */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
722
+ this.onStateChanged.on(listener);
723
+ };
724
+ /**
725
+ * Remove a listening function of session state changes.
726
+ * @deprecated Use `onStateChanged.off(listener)` instead.
727
+ */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
728
+ this.onStateChanged.off(listener);
729
+ };
750
730
  _create_class$1(XRSessionManager, [
751
731
  {
752
732
  key: "mode",
@@ -1057,26 +1037,10 @@
1057
1037
  _inherits(XRTrackableFeature, XRFeature);
1058
1038
  function XRTrackableFeature() {
1059
1039
  var _this;
1060
- _this = XRFeature.apply(this, arguments) || this, _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {}, _this._listeners = new engine.SafeLoopArray();
1040
+ _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 = {};
1061
1041
  return _this;
1062
1042
  }
1063
1043
  var _proto = XRTrackableFeature.prototype;
1064
- /**
1065
- * Add a listening function for tracked object changes.
1066
- * @param listener - The listening function
1067
- */ _proto.addChangedListener = function addChangedListener(listener) {
1068
- this._listeners.push({
1069
- fn: listener
1070
- });
1071
- };
1072
- /**
1073
- * Remove a listening function of tracked object changes.
1074
- * @param listener - The listening function
1075
- */ _proto.removeChangedListener = function removeChangedListener(listener) {
1076
- this._listeners.findAndRemove(function(value) {
1077
- return value.fn === listener ? value.destroyed = true : false;
1078
- });
1079
- };
1080
1044
  _proto._onUpdate = function _onUpdate() {
1081
1045
  var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
1082
1046
  var platformFrame = platformSession.frame;
@@ -1132,11 +1096,7 @@
1132
1096
  requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
1133
1097
  }
1134
1098
  if (added.length > 0 || updated.length > 0 || removed.length > 0) {
1135
- var listeners = this._listeners.getLoopArray();
1136
- for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){
1137
- var listener = listeners[i2];
1138
- !listener.destroyed && listener.fn(added, updated, removed);
1139
- }
1099
+ this.onChanged.invoke(added, updated, removed);
1140
1100
  }
1141
1101
  };
1142
1102
  _proto._onSessionStop = function _onSessionStop() {
@@ -1145,9 +1105,7 @@
1145
1105
  _proto._onSessionExit = function _onSessionExit() {
1146
1106
  // prettier-ignore
1147
1107
  this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;
1148
- this._listeners.findAndRemove(function(value) {
1149
- return value.destroyed = true;
1150
- });
1108
+ this.onChanged.removeAll();
1151
1109
  };
1152
1110
  _proto._addRequestTracking = function _addRequestTracking(requestTracking) {
1153
1111
  var _this = this, platformFeature = _this._platformFeature;
@@ -1174,6 +1132,18 @@
1174
1132
  platformFeature.onDelRequestTracking(requestTrackings[i]);
1175
1133
  }
1176
1134
  };
1135
+ /**
1136
+ * Add a listening function for tracked object changes.
1137
+ * @deprecated Use `onChanged.on(listener)` instead.
1138
+ */ _proto.addChangedListener = function addChangedListener(listener) {
1139
+ this.onChanged.on(listener);
1140
+ };
1141
+ /**
1142
+ * Remove a listening function of tracked object changes.
1143
+ * @deprecated Use `onChanged.off(listener)` instead.
1144
+ */ _proto.removeChangedListener = function removeChangedListener(listener) {
1145
+ this.onChanged.off(listener);
1146
+ };
1177
1147
  return XRTrackableFeature;
1178
1148
  }(XRFeature);
1179
1149
  XRTrackableFeature._uuid = 0;