@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/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect, SafeLoopArray, XRManager, Ray, Plane, Vector2, decoder, AssetPromise, resourceLoader, decode, Loader } from '@galacean/engine';
1
+ import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect, Signal, XRManager, Ray, Plane, Vector2, decoder, AssetPromise, resourceLoader, decode, Loader } from '@galacean/engine';
2
2
 
3
3
  function _is_native_reflect_construct() {
4
4
  // Since Reflect.construct can't be properly polyfilled, some
@@ -341,13 +341,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
341
341
  function XRInputManager(_xrManager, _engine) {
342
342
  this._xrManager = _xrManager;
343
343
  this._engine = _engine;
344
+ this.onTrackedDeviceChanged = new Signal();
344
345
  this./** @internal */ _cameras = [];
345
346
  this./** @internal */ _controllers = [];
346
347
  this._added = [];
347
348
  this._removed = [];
348
349
  this._trackedDevices = [];
349
350
  this._statusSnapshot = [];
350
- this._listeners = new SafeLoopArray();
351
351
  var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
352
352
  for(var i = 0; i < 6; i++){
353
353
  switch(i){
@@ -374,22 +374,6 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
374
374
  return this._trackedDevices[type];
375
375
  };
376
376
  /**
377
- * Add a listener for tracked device changes.
378
- * @param listener - The listener to add
379
- */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
380
- this._listeners.push({
381
- fn: listener
382
- });
383
- };
384
- /**
385
- * Remove a listener of tracked device changes.
386
- * @param listener - The listener to remove
387
- */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
388
- this._listeners.findAndRemove(function(value) {
389
- return value.fn === listener ? value.destroyed = true : false;
390
- });
391
- };
392
- /**
393
377
  * @internal
394
378
  */ _proto._onUpdate = function _onUpdate() {
395
379
  var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
@@ -425,19 +409,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
425
409
  }
426
410
  // Dispatch change event
427
411
  if (added.length > 0 || removed.length > 0) {
428
- var listeners = this._listeners.getLoopArray();
429
- for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){
430
- var listener = listeners[i3];
431
- !listener.destroyed && listener.fn(added, removed);
432
- }
412
+ this.onTrackedDeviceChanged.invoke(added, removed);
433
413
  }
434
414
  };
435
415
  /**
436
416
  * @internal
437
417
  */ _proto._onDestroy = function _onDestroy() {
438
- this._listeners.findAndRemove(function(value) {
439
- return value.destroyed = true;
440
- });
418
+ this.onTrackedDeviceChanged.removeAll();
441
419
  };
442
420
  _proto._handleEvent = function _handleEvent(event) {
443
421
  var input = this._trackedDevices[event.input];
@@ -513,6 +491,18 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
513
491
  }
514
492
  return new PointerEvent(type, eventInitDict);
515
493
  };
494
+ /**
495
+ * Add a listener for tracked device changes.
496
+ * @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
497
+ */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
498
+ this.onTrackedDeviceChanged.on(listener);
499
+ };
500
+ /**
501
+ * Remove a listener of tracked device changes.
502
+ * @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
503
+ */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
504
+ this.onTrackedDeviceChanged.off(listener);
505
+ };
516
506
  return XRInputManager;
517
507
  }();
518
508
 
@@ -531,9 +521,9 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
531
521
  function XRSessionManager(_xrManager, _engine) {
532
522
  this._xrManager = _xrManager;
533
523
  this._engine = _engine;
524
+ this.onStateChanged = new Signal();
534
525
  this._mode = XRSessionMode.None;
535
526
  this._state = XRSessionState.None;
536
- this._listeners = new SafeLoopArray();
537
527
  // @ts-ignore
538
528
  this._rhi = _engine._hardwareRenderer;
539
529
  this._raf = requestAnimationFrame.bind(window);
@@ -584,30 +574,10 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
584
574
  }
585
575
  };
586
576
  /**
587
- * Add a listening function for session state changes.
588
- * @param listener - The listening function
589
- */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
590
- this._listeners.push({
591
- fn: listener
592
- });
593
- };
594
- /**
595
- * Remove a listening function of session state changes.
596
- * @param listener - The listening function
597
- */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
598
- this._listeners.findAndRemove(function(value) {
599
- return value.fn === listener ? value.destroyed = true : false;
600
- });
601
- };
602
- /**
603
577
  * @internal
604
578
  */ _proto._setState = function _setState(value) {
605
579
  this._state = value;
606
- var listeners = this._listeners.getLoopArray();
607
- for(var i = 0, n = listeners.length; i < n; i++){
608
- var listener = listeners[i];
609
- !listener.destroyed && listener.fn(value);
610
- }
580
+ this.onStateChanged.invoke(value);
611
581
  };
612
582
  /**
613
583
  * @internal
@@ -683,11 +653,21 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
683
653
  /**
684
654
  * @internal
685
655
  */ _proto._onDestroy = function _onDestroy() {
686
- this._listeners.findAndRemove(function(value) {
687
- return value.destroyed = true;
688
- });
656
+ this.onStateChanged.removeAll();
689
657
  this._raf = this._caf = null;
690
658
  };
659
+ /**
660
+ * Add a listening function for session state changes.
661
+ * @deprecated Use `onStateChanged.on(listener)` instead.
662
+ */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
663
+ this.onStateChanged.on(listener);
664
+ };
665
+ /**
666
+ * Remove a listening function of session state changes.
667
+ * @deprecated Use `onStateChanged.off(listener)` instead.
668
+ */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
669
+ this.onStateChanged.off(listener);
670
+ };
691
671
  _create_class(XRSessionManager, [
692
672
  {
693
673
  key: "mode",
@@ -1003,26 +983,10 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1003
983
  _inherits(XRTrackableFeature, XRFeature);
1004
984
  function XRTrackableFeature() {
1005
985
  var _this;
1006
- _this = XRFeature.apply(this, arguments) || this, _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {}, _this._listeners = new SafeLoopArray();
986
+ _this = XRFeature.apply(this, arguments) || this, /** Signal emitted when tracked objects change. */ _this.onChanged = new Signal(), _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {};
1007
987
  return _this;
1008
988
  }
1009
989
  var _proto = XRTrackableFeature.prototype;
1010
- /**
1011
- * Add a listening function for tracked object changes.
1012
- * @param listener - The listening function
1013
- */ _proto.addChangedListener = function addChangedListener(listener) {
1014
- this._listeners.push({
1015
- fn: listener
1016
- });
1017
- };
1018
- /**
1019
- * Remove a listening function of tracked object changes.
1020
- * @param listener - The listening function
1021
- */ _proto.removeChangedListener = function removeChangedListener(listener) {
1022
- this._listeners.findAndRemove(function(value) {
1023
- return value.fn === listener ? value.destroyed = true : false;
1024
- });
1025
- };
1026
990
  _proto._onUpdate = function _onUpdate() {
1027
991
  var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
1028
992
  var platformFrame = platformSession.frame;
@@ -1078,11 +1042,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1078
1042
  requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
1079
1043
  }
1080
1044
  if (added.length > 0 || updated.length > 0 || removed.length > 0) {
1081
- var listeners = this._listeners.getLoopArray();
1082
- for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){
1083
- var listener = listeners[i2];
1084
- !listener.destroyed && listener.fn(added, updated, removed);
1085
- }
1045
+ this.onChanged.invoke(added, updated, removed);
1086
1046
  }
1087
1047
  };
1088
1048
  _proto._onSessionStop = function _onSessionStop() {
@@ -1091,9 +1051,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1091
1051
  _proto._onSessionExit = function _onSessionExit() {
1092
1052
  // prettier-ignore
1093
1053
  this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;
1094
- this._listeners.findAndRemove(function(value) {
1095
- return value.destroyed = true;
1096
- });
1054
+ this.onChanged.removeAll();
1097
1055
  };
1098
1056
  _proto._addRequestTracking = function _addRequestTracking(requestTracking) {
1099
1057
  var _this = this, platformFeature = _this._platformFeature;
@@ -1120,6 +1078,18 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1120
1078
  platformFeature.onDelRequestTracking(requestTrackings[i]);
1121
1079
  }
1122
1080
  };
1081
+ /**
1082
+ * Add a listening function for tracked object changes.
1083
+ * @deprecated Use `onChanged.on(listener)` instead.
1084
+ */ _proto.addChangedListener = function addChangedListener(listener) {
1085
+ this.onChanged.on(listener);
1086
+ };
1087
+ /**
1088
+ * Remove a listening function of tracked object changes.
1089
+ * @deprecated Use `onChanged.off(listener)` instead.
1090
+ */ _proto.removeChangedListener = function removeChangedListener(listener) {
1091
+ this.onChanged.off(listener);
1092
+ };
1123
1093
  return XRTrackableFeature;
1124
1094
  }(XRFeature);
1125
1095
  XRTrackableFeature._uuid = 0;