@galacean/engine-xr 2.0.0-alpha.5 → 2.0.0-alpha.51

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
@@ -118,19 +118,15 @@ function _instanceof(left, right) {
118
118
  var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
119
119
  var preCamera = xrCamera._camera;
120
120
  if (preCamera !== camera) {
121
- // @ts-ignore
122
121
  preCamera && (preCamera._cameraType = CameraType.Normal);
123
122
  switch(type){
124
123
  case XRTrackedInputDevice.Camera:
125
- // @ts-ignore
126
124
  camera._cameraType = CameraType.XRCenterCamera;
127
125
  break;
128
126
  case XRTrackedInputDevice.LeftCamera:
129
- // @ts-ignore
130
127
  camera._cameraType = CameraType.XRLeftCamera;
131
128
  break;
132
129
  case XRTrackedInputDevice.RightCamera:
133
- // @ts-ignore
134
130
  camera._cameraType = CameraType.XRRightCamera;
135
131
  break;
136
132
  }
@@ -144,7 +140,6 @@ function _instanceof(left, right) {
144
140
  */ _proto.detachCamera = function detachCamera(type) {
145
141
  var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
146
142
  var preCamera = xrCamera._camera;
147
- // @ts-ignore
148
143
  preCamera && (preCamera._cameraType = CameraType.Normal);
149
144
  xrCamera._camera = null;
150
145
  return preCamera;
@@ -213,7 +208,7 @@ function _instanceof(left, right) {
213
208
  {
214
209
  key: "fixedFoveation",
215
210
  get: /**
216
- * The fixed foveation of the camera.
211
+ * Fixed foveation, or `undefined` if unsupported by the active session.
217
212
  */ function get() {
218
213
  var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
219
214
  if (platformSession) {
@@ -341,13 +336,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
341
336
  function XRInputManager(_xrManager, _engine) {
342
337
  this._xrManager = _xrManager;
343
338
  this._engine = _engine;
339
+ this.onTrackedDeviceChanged = new Signal();
344
340
  this./** @internal */ _cameras = [];
345
341
  this./** @internal */ _controllers = [];
346
342
  this._added = [];
347
343
  this._removed = [];
348
344
  this._trackedDevices = [];
349
345
  this._statusSnapshot = [];
350
- this._listeners = new SafeLoopArray();
351
346
  var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
352
347
  for(var i = 0; i < 6; i++){
353
348
  switch(i){
@@ -374,22 +369,6 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
374
369
  return this._trackedDevices[type];
375
370
  };
376
371
  /**
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
372
  * @internal
394
373
  */ _proto._onUpdate = function _onUpdate() {
395
374
  var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
@@ -401,7 +380,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
401
380
  controller.down = controller.up = 0;
402
381
  }
403
382
  // Handle events and update tracked devices
404
- var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
383
+ var platformSession = this._xrManager.sessionManager._platformSession;
405
384
  var platformEvents = platformSession.events;
406
385
  for(var i1 = 0, n1 = platformEvents.length; i1 < n1; i1++){
407
386
  this._handleEvent(platformEvents[i1]);
@@ -425,19 +404,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
425
404
  }
426
405
  // Dispatch change event
427
406
  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
- }
407
+ this.onTrackedDeviceChanged.invoke(added, removed);
433
408
  }
434
409
  };
435
410
  /**
436
411
  * @internal
437
412
  */ _proto._onDestroy = function _onDestroy() {
438
- this._listeners.findAndRemove(function(value) {
439
- return value.destroyed = true;
440
- });
413
+ this.onTrackedDeviceChanged.removeAll();
441
414
  };
442
415
  _proto._handleEvent = function _handleEvent(event) {
443
416
  var input = this._trackedDevices[event.input];
@@ -513,6 +486,18 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
513
486
  }
514
487
  return new PointerEvent(type, eventInitDict);
515
488
  };
489
+ /**
490
+ * Add a listener for tracked device changes.
491
+ * @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
492
+ */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
493
+ this.onTrackedDeviceChanged.on(listener);
494
+ };
495
+ /**
496
+ * Remove a listener of tracked device changes.
497
+ * @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
498
+ */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
499
+ this.onTrackedDeviceChanged.off(listener);
500
+ };
516
501
  return XRInputManager;
517
502
  }();
518
503
 
@@ -531,10 +516,9 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
531
516
  function XRSessionManager(_xrManager, _engine) {
532
517
  this._xrManager = _xrManager;
533
518
  this._engine = _engine;
519
+ this.onStateChanged = new Signal();
534
520
  this._mode = XRSessionMode.None;
535
521
  this._state = XRSessionState.None;
536
- this._listeners = new SafeLoopArray();
537
- // @ts-ignore
538
522
  this._rhi = _engine._hardwareRenderer;
539
523
  this._raf = requestAnimationFrame.bind(window);
540
524
  this._caf = cancelAnimationFrame.bind(window);
@@ -584,30 +568,10 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
584
568
  }
585
569
  };
586
570
  /**
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
571
  * @internal
604
572
  */ _proto._setState = function _setState(value) {
605
573
  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
- }
574
+ this.onStateChanged.invoke(value);
611
575
  };
612
576
  /**
613
577
  * @internal
@@ -683,11 +647,21 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
683
647
  /**
684
648
  * @internal
685
649
  */ _proto._onDestroy = function _onDestroy() {
686
- this._listeners.findAndRemove(function(value) {
687
- return value.destroyed = true;
688
- });
650
+ this.onStateChanged.removeAll();
689
651
  this._raf = this._caf = null;
690
652
  };
653
+ /**
654
+ * Add a listening function for session state changes.
655
+ * @deprecated Use `onStateChanged.on(listener)` instead.
656
+ */ _proto.addStateChangedListener = function addStateChangedListener(listener) {
657
+ this.onStateChanged.on(listener);
658
+ };
659
+ /**
660
+ * Remove a listening function of session state changes.
661
+ * @deprecated Use `onStateChanged.off(listener)` instead.
662
+ */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
663
+ this.onStateChanged.off(listener);
664
+ };
691
665
  _create_class(XRSessionManager, [
692
666
  {
693
667
  key: "mode",
@@ -708,7 +682,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
708
682
  {
709
683
  key: "supportedFrameRate",
710
684
  get: /**
711
- * Return a list of supported frame rates.(only available in-session)
685
+ * Supported frame rates, or `undefined` if unsupported. Only available in-session.
712
686
  */ function get() {
713
687
  return this._platformSession.supportedFrameRates;
714
688
  }
@@ -716,7 +690,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
716
690
  {
717
691
  key: "frameRate",
718
692
  get: /**
719
- * Return the current frame rate as reported by the device.
693
+ * Current frame rate, or `undefined` if unsupported. Only available in-session.
720
694
  */ function get() {
721
695
  return this._platformSession.frameRate;
722
696
  }
@@ -1003,28 +977,12 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1003
977
  _inherits(XRTrackableFeature, XRFeature);
1004
978
  function XRTrackableFeature() {
1005
979
  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();
980
+ _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
981
  return _this;
1008
982
  }
1009
983
  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
984
  _proto._onUpdate = function _onUpdate() {
1027
- var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
985
+ var platformSession = this._xrManager.sessionManager._platformSession;
1028
986
  var platformFrame = platformSession.frame;
1029
987
  var _this = this, platformFeature = _this._platformFeature, requestTrackings = _this._requestTrackings, statusSnapshot = _this._statusSnapshot, allTracked = _this._tracked, added = _this._added, updated = _this._updated, removed = _this._removed;
1030
988
  if (!platformFrame || !requestTrackings.length) {
@@ -1078,11 +1036,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1078
1036
  requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
1079
1037
  }
1080
1038
  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
- }
1039
+ this.onChanged.invoke(added, updated, removed);
1086
1040
  }
1087
1041
  };
1088
1042
  _proto._onSessionStop = function _onSessionStop() {
@@ -1091,9 +1045,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1091
1045
  _proto._onSessionExit = function _onSessionExit() {
1092
1046
  // prettier-ignore
1093
1047
  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
- });
1048
+ this.onChanged.removeAll();
1097
1049
  };
1098
1050
  _proto._addRequestTracking = function _addRequestTracking(requestTracking) {
1099
1051
  var _this = this, platformFeature = _this._platformFeature;
@@ -1120,6 +1072,18 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
1120
1072
  platformFeature.onDelRequestTracking(requestTrackings[i]);
1121
1073
  }
1122
1074
  };
1075
+ /**
1076
+ * Add a listening function for tracked object changes.
1077
+ * @deprecated Use `onChanged.on(listener)` instead.
1078
+ */ _proto.addChangedListener = function addChangedListener(listener) {
1079
+ this.onChanged.on(listener);
1080
+ };
1081
+ /**
1082
+ * Remove a listening function of tracked object changes.
1083
+ * @deprecated Use `onChanged.off(listener)` instead.
1084
+ */ _proto.removeChangedListener = function removeChangedListener(listener) {
1085
+ this.onChanged.off(listener);
1086
+ };
1123
1087
  return XRTrackableFeature;
1124
1088
  }(XRFeature);
1125
1089
  XRTrackableFeature._uuid = 0;
@@ -1578,8 +1542,7 @@ var XRReferenceImageLoader = /*#__PURE__*/ function(Loader) {
1578
1542
  var _proto = XRReferenceImageLoader.prototype;
1579
1543
  _proto.load = function load(item, resourceManager) {
1580
1544
  return new AssetPromise(function(resolve, reject) {
1581
- resourceManager// @ts-ignore
1582
- ._request(item.url, _extends({}, item, {
1545
+ resourceManager._request(item.url, _extends({}, item, {
1583
1546
  type: "arraybuffer"
1584
1547
  })).then(function(data) {
1585
1548
  decode(data, resourceManager.engine).then(function(referenceImage) {