@galacean/engine-xr 0.0.0-experimental-1.2-xr.0 → 0.0.0-experimental-1.3-xr.2

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.
@@ -527,6 +527,7 @@ exports.XRTargetRayMode = void 0;
527
527
  this._engine = _engine;
528
528
  this._mode = exports.XRSessionMode.None;
529
529
  this._state = exports.XRSessionState.None;
530
+ this._listeners = [];
530
531
  // @ts-ignore
531
532
  this._rhi = _engine._hardwareRenderer;
532
533
  this._raf = engineMiniprogramAdapter.requestAnimationFrame.bind(engineMiniprogramAdapter.window);
@@ -549,13 +550,12 @@ exports.XRTargetRayMode = void 0;
549
550
  throw new Error("Without session to run.");
550
551
  }
551
552
  platformSession.start();
552
- this._state = exports.XRSessionState.Running;
553
+ this.state = exports.XRSessionState.Running;
553
554
  this._xrManager._onSessionStart();
554
555
  if (!engine.isPaused) {
555
556
  engine.pause();
556
557
  engine.resume();
557
558
  }
558
- engine.dispatch("XRSessionStart");
559
559
  };
560
560
  /**
561
561
  * Stop the session.
@@ -570,13 +570,28 @@ exports.XRTargetRayMode = void 0;
570
570
  rhi._mainFrameBuffer = null;
571
571
  rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
572
572
  platformSession.stop();
573
- this._state = exports.XRSessionState.Paused;
573
+ this.state = exports.XRSessionState.Paused;
574
574
  this._xrManager._onSessionStop();
575
575
  if (!engine.isPaused) {
576
576
  engine.pause();
577
577
  engine.resume();
578
578
  }
579
- engine.dispatch("XRSessionStop");
579
+ };
580
+ /**
581
+ * Add a listening function for session state changes.
582
+ * @param listener - The listening function
583
+ */ _proto.addChangedListener = function addChangedListener(listener) {
584
+ this._listeners.push(listener);
585
+ };
586
+ /**
587
+ * Remove a listening function of session state changes.
588
+ * @param listener - The listening function
589
+ */ _proto.removeChangedListener = function removeChangedListener(listener) {
590
+ var _this = this, listeners = _this._listeners;
591
+ var index = listeners.indexOf(listener);
592
+ if (index >= 0) {
593
+ listeners.splice(index, 1);
594
+ }
580
595
  };
581
596
  /**
582
597
  * @internal
@@ -593,12 +608,11 @@ exports.XRTargetRayMode = void 0;
593
608
  xrManager._platformDevice.requestSession(_this._rhi, mode, platformFeatures).then(function(platformSession) {
594
609
  _this._mode = mode;
595
610
  _this._platformSession = platformSession;
596
- _this._state = exports.XRSessionState.Initialized;
611
+ _this.state = exports.XRSessionState.Initialized;
597
612
  platformSession.setSessionExitCallBack(_this._onSessionExit);
598
613
  platformSession.addEventListener();
599
614
  xrManager._onSessionInit();
600
615
  resolve();
601
- _this._engine.dispatch("XRSessionInit");
602
616
  }, reject);
603
617
  });
604
618
  };
@@ -631,14 +645,11 @@ exports.XRTargetRayMode = void 0;
631
645
  /**
632
646
  * @internal
633
647
  */ _proto._exit = function _exit() {
634
- var _this = this;
635
- var _this1 = this, platformSession = _this1._platformSession;
648
+ var _this = this, platformSession = _this._platformSession;
636
649
  if (!platformSession) {
637
650
  return Promise.reject("Without session to stop.");
638
651
  }
639
- return platformSession.end().then(function() {
640
- _this._engine.dispatch("XRSessionExit");
641
- });
652
+ return platformSession.end();
642
653
  };
643
654
  _proto._onSessionExit = function _onSessionExit() {
644
655
  var _this = this, rhi = _this._rhi, platformSession = _this._platformSession, engine = _this._engine;
@@ -646,7 +657,7 @@ exports.XRTargetRayMode = void 0;
646
657
  rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
647
658
  platformSession.removeEventListener();
648
659
  this._platformSession = null;
649
- this._state = exports.XRSessionState.None;
660
+ this.state = exports.XRSessionState.None;
650
661
  this._xrManager._onSessionExit();
651
662
  if (!engine.isPaused) {
652
663
  engine.pause();
@@ -671,6 +682,15 @@ exports.XRTargetRayMode = void 0;
671
682
  * Return the current session state.
672
683
  */ function get() {
673
684
  return this._state;
685
+ },
686
+ set: /**
687
+ * @internal
688
+ */ function set(value) {
689
+ this._state = value;
690
+ var listeners = this._listeners;
691
+ for(var i = 0, n = listeners.length; i < n; i++){
692
+ listeners[i](value);
693
+ }
674
694
  }
675
695
  },
676
696
  {
@@ -720,15 +740,15 @@ exports.XRTargetRayMode = void 0;
720
740
  if (this.sessionManager._platformSession) {
721
741
  throw new Error("Cannot add feature when the session is initialized.");
722
742
  }
723
- var _this = this, features = _this._features; _this._platformDevice;
724
743
  if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {
725
744
  throw new Error("The feature is not supported");
726
745
  }
746
+ var features = this.features;
727
747
  for(var i = 0, n = features.length; i < n; i++){
728
748
  if (_instanceof(features[i], type)) throw new Error("The feature has been added");
729
749
  }
730
750
  var feature = _construct(type, [].concat(this, args));
731
- this._features.push(feature);
751
+ features.push(feature);
732
752
  return feature;
733
753
  };
734
754
  /**
@@ -736,7 +756,7 @@ exports.XRTargetRayMode = void 0;
736
756
  * @param type - The type of the feature
737
757
  * @returns The feature which match type
738
758
  */ _proto.getFeature = function getFeature(type) {
739
- var _this = this, features = _this._features;
759
+ var features = this.features;
740
760
  for(var i = 0, n = features.length; i < n; i++){
741
761
  var feature = features[i];
742
762
  if (_instanceof(feature, type)) {
@@ -744,19 +764,6 @@ exports.XRTargetRayMode = void 0;
744
764
  }
745
765
  }
746
766
  };
747
- _proto.getFeatures = function getFeatures(out) {
748
- var _this = this, features = _this._features;
749
- var length = features.length;
750
- if (out) {
751
- out.length = length;
752
- } else {
753
- out = new Array(length);
754
- }
755
- for(var i = 0; i < length; i--){
756
- out[i] = features[i];
757
- }
758
- return out;
759
- };
760
767
  /**
761
768
  * Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.
762
769
  * @param sessionMode - The mode of the session
@@ -776,7 +783,7 @@ exports.XRTargetRayMode = void 0;
776
783
  // 1. Check if this xr mode is supported
777
784
  sessionManager.isSupportedMode(sessionMode).then(function() {
778
785
  // 2. Initialize session
779
- sessionManager._initialize(sessionMode, _this._features).then(function() {
786
+ sessionManager._initialize(sessionMode, _this.features).then(function() {
780
787
  autoRun && sessionManager.run();
781
788
  resolve();
782
789
  }, reject);
@@ -797,7 +804,7 @@ exports.XRTargetRayMode = void 0;
797
804
  /**
798
805
  * @internal
799
806
  */ _proto._initialize = function _initialize(engine, xrDevice) {
800
- this._features = [];
807
+ this.features.length = 0;
801
808
  this._platformDevice = xrDevice;
802
809
  this.sessionManager = new XRSessionManager(this, engine);
803
810
  this.inputManager = new XRInputManager(this, engine);
@@ -811,7 +818,7 @@ exports.XRTargetRayMode = void 0;
811
818
  sessionManager._onUpdate();
812
819
  this.inputManager._onUpdate();
813
820
  this.cameraManager._onUpdate();
814
- var _this = this, features = _this._features;
821
+ var features = this.features;
815
822
  for(var i = 0, n = features.length; i < n; i++){
816
823
  var feature = features[i];
817
824
  feature.enabled && feature._onUpdate();
@@ -851,7 +858,7 @@ exports.XRTargetRayMode = void 0;
851
858
  /**
852
859
  * @internal
853
860
  */ _proto._onSessionStop = function _onSessionStop() {
854
- var _this = this, features = _this._features;
861
+ var features = this.features;
855
862
  for(var i = 0, n = features.length; i < n; i++){
856
863
  var feature = features[i];
857
864
  feature.enabled && feature._onSessionStop();
@@ -860,7 +867,7 @@ exports.XRTargetRayMode = void 0;
860
867
  /**
861
868
  * @internal
862
869
  */ _proto._onSessionInit = function _onSessionInit() {
863
- var _this = this, features = _this._features;
870
+ var features = this.features;
864
871
  for(var i = 0, n = features.length; i < n; i++){
865
872
  var feature = features[i];
866
873
  feature.enabled && feature._onSessionInit();
@@ -870,7 +877,7 @@ exports.XRTargetRayMode = void 0;
870
877
  * @internal
871
878
  */ _proto._onSessionStart = function _onSessionStart() {
872
879
  this.cameraManager._onSessionStart();
873
- var _this = this, features = _this._features;
880
+ var features = this.features;
874
881
  for(var i = 0, n = features.length; i < n; i++){
875
882
  var feature = features[i];
876
883
  feature.enabled && feature._onSessionStart();
@@ -880,7 +887,7 @@ exports.XRTargetRayMode = void 0;
880
887
  * @internal
881
888
  */ _proto._onSessionExit = function _onSessionExit() {
882
889
  this.cameraManager._onSessionExit();
883
- var _this = this, features = _this._features;
890
+ var features = this.features;
884
891
  for(var i = 0, n = features.length; i < n; i++){
885
892
  var feature = features[i];
886
893
  feature.enabled && feature._onSessionExit();
@@ -988,10 +995,75 @@ ApplyMixins(miniprogram.XRManager, [
988
995
  }();
989
996
 
990
997
  /**
991
- * The base class of XR tracked object.
992
- */ var XRTracked = function XRTracked() {
993
- /** The pose of the trackable in XR space. */ this.pose = new XRPose();
994
- /** The tracking state of the trackable. */ this.state = exports.XRTrackingState.NotTracking;
998
+ * Enum for the types of hit test that can be performed.
999
+ * Note: currently only supports plane.
1000
+ */ exports.TrackableType = void 0;
1001
+ (function(TrackableType) {
1002
+ TrackableType[TrackableType[/** Tracked plane. */ "Plane"] = 0x1] = "Plane";
1003
+ TrackableType[TrackableType[/** All tracked objects. */ "All"] = 0x1] = "All";
1004
+ })(exports.TrackableType || (exports.TrackableType = {}));
1005
+
1006
+ /**
1007
+ * XR hit result.
1008
+ * It is the detection result returned by using XR HitTest feature.
1009
+ */ var XRHitResult = function XRHitResult() {
1010
+ /** The position of the hit point. */ this.point = new miniprogram.Vector3();
1011
+ /** The normal of the hit point. */ this.normal = new miniprogram.Vector3();
1012
+ };
1013
+
1014
+ /******************************************************************************
1015
+ Copyright (c) Microsoft Corporation.
1016
+
1017
+ Permission to use, copy, modify, and/or distribute this software for any
1018
+ purpose with or without fee is hereby granted.
1019
+
1020
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1021
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1022
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1023
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1024
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1025
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1026
+ PERFORMANCE OF THIS SOFTWARE.
1027
+ ***************************************************************************** */
1028
+
1029
+ function __decorate(decorators, target, key, desc) {
1030
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1031
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1032
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1033
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1034
+ }
1035
+
1036
+ function __generator(thisArg, body) {
1037
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1038
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1039
+ function verb(n) { return function (v) { return step([n, v]); }; }
1040
+ function step(op) {
1041
+ if (f) throw new TypeError("Generator is already executing.");
1042
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
1043
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1044
+ if (y = 0, t) op = [op[0] & 2, t.value];
1045
+ switch (op[0]) {
1046
+ case 0: case 1: t = op; break;
1047
+ case 4: _.label++; return { value: op[1], done: false };
1048
+ case 5: _.label++; y = op[1]; op = [0]; continue;
1049
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
1050
+ default:
1051
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1052
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1053
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1054
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1055
+ if (t[2]) _.ops.pop();
1056
+ _.trys.pop(); continue;
1057
+ }
1058
+ op = body.call(thisArg, _);
1059
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1060
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1061
+ }
1062
+ }
1063
+
1064
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1065
+ var e = new Error(message);
1066
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
995
1067
  };
996
1068
 
997
1069
  exports.XRFeatureType = void 0;
@@ -1147,50 +1219,6 @@ exports.XRRequestTrackingState = void 0;
1147
1219
  XRTrackableFeature._uuid = 0;
1148
1220
  })();
1149
1221
 
1150
- /**
1151
- * Enum for the types of hit test that can be performed.
1152
- * Note: currently only supports plane.
1153
- */ exports.TrackableType = void 0;
1154
- (function(TrackableType) {
1155
- TrackableType[TrackableType[/** Tracked plane. */ "Plane"] = 0x1] = "Plane";
1156
- TrackableType[TrackableType[/** All tracked objects. */ "All"] = 0x1] = "All";
1157
- })(exports.TrackableType || (exports.TrackableType = {}));
1158
-
1159
- /**
1160
- * XR hit result.
1161
- * It is the detection result returned by using XR HitTest feature.
1162
- */ var XRHitResult = function XRHitResult() {
1163
- /** The position of the hit point. */ this.point = new miniprogram.Vector3();
1164
- /** The normal of the hit point. */ this.normal = new miniprogram.Vector3();
1165
- };
1166
-
1167
- /******************************************************************************
1168
- Copyright (c) Microsoft Corporation.
1169
-
1170
- Permission to use, copy, modify, and/or distribute this software for any
1171
- purpose with or without fee is hereby granted.
1172
-
1173
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1174
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1175
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1176
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1177
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1178
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1179
- PERFORMANCE OF THIS SOFTWARE.
1180
- ***************************************************************************** */
1181
-
1182
- function __decorate(decorators, target, key, desc) {
1183
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1184
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1185
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1186
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1187
- }
1188
-
1189
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1190
- var e = new Error(message);
1191
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1192
- };
1193
-
1194
1222
  /**
1195
1223
  * Enumerates modes of plane in XR.
1196
1224
  */ exports.XRPlaneMode = void 0;
@@ -1221,6 +1249,13 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
1221
1249
  return XRRequestPlane;
1222
1250
  }(XRRequestTracking);
1223
1251
 
1252
+ /**
1253
+ * The base class of XR tracked object.
1254
+ */ var XRTracked = function XRTracked() {
1255
+ /** The pose of the trackable in XR space. */ this.pose = new XRPose();
1256
+ /** The tracking state of the trackable. */ this.state = exports.XRTrackingState.NotTracking;
1257
+ };
1258
+
1224
1259
  /**
1225
1260
  * The tracked plane in XR space.
1226
1261
  */ var XRTrackedPlane = /*#__PURE__*/ function(XRTracked1) {
@@ -1568,6 +1603,260 @@ exports.XRImageTracking = __decorate([
1568
1603
  this.physicalWidth = physicalWidth;
1569
1604
  };
1570
1605
 
1606
+ exports.XRReferenceImageDecoder = /*#__PURE__*/ function() {
1607
+ function XRReferenceImageDecoder() {}
1608
+ XRReferenceImageDecoder.decode = function decode(engine, bufferReader) {
1609
+ return new Promise(function(resolve, reject) {
1610
+ var physicalWidth = bufferReader.nextFloat32();
1611
+ bufferReader.nextUint8();
1612
+ var img = new engineMiniprogramAdapter.Image();
1613
+ img.onload = function() {
1614
+ resolve(new XRReferenceImage("", img, physicalWidth));
1615
+ };
1616
+ img.src = engineMiniprogramAdapter.URL.createObjectURL(new engineMiniprogramAdapter.window.Blob([
1617
+ bufferReader.nextImagesData(1)[0]
1618
+ ]));
1619
+ });
1620
+ };
1621
+ return XRReferenceImageDecoder;
1622
+ }();
1623
+ exports.XRReferenceImageDecoder = __decorate([
1624
+ miniprogram.decoder("XRReferenceImage")
1625
+ ], exports.XRReferenceImageDecoder);
1626
+
1627
+ function _extends() {
1628
+ _extends = Object.assign || function assign(target) {
1629
+ for (var i = 1; i < arguments.length; i++) {
1630
+ var source = arguments[i];
1631
+ for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
1632
+ }
1633
+
1634
+ return target;
1635
+ };
1636
+
1637
+ return _extends.apply(this, arguments);
1638
+ }
1639
+
1640
+ exports.XRReferenceImageLoader = /*#__PURE__*/ function(Loader1) {
1641
+ _inherits(XRReferenceImageLoader, Loader1);
1642
+ function XRReferenceImageLoader() {
1643
+ return Loader1.apply(this, arguments);
1644
+ }
1645
+ var _proto = XRReferenceImageLoader.prototype;
1646
+ _proto.load = function load(item, resourceManager) {
1647
+ var _this = this;
1648
+ return new miniprogram.AssetPromise(function(resolve, reject) {
1649
+ _this.request(item.url, _extends({}, item, {
1650
+ type: "arraybuffer"
1651
+ })).then(function(data) {
1652
+ miniprogram.decode(data, resourceManager.engine).then(function(referenceImage) {
1653
+ resolve(referenceImage);
1654
+ });
1655
+ }).catch(reject);
1656
+ });
1657
+ };
1658
+ return XRReferenceImageLoader;
1659
+ }(miniprogram.Loader);
1660
+ exports.XRReferenceImageLoader = __decorate([
1661
+ miniprogram.resourceLoader("XRReferenceImage", [])
1662
+ ], exports.XRReferenceImageLoader);
1663
+
1664
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1665
+ try {
1666
+ var info = gen[key](arg);
1667
+ var value = info.value;
1668
+ } catch (error) {
1669
+ reject(error);
1670
+ return;
1671
+ }
1672
+ if (info.done) resolve(value);
1673
+ else Promise.resolve(value).then(_next, _throw);
1674
+ }
1675
+ function _async_to_generator(fn) {
1676
+ return function() {
1677
+ var self = this, args = arguments;
1678
+
1679
+ return new Promise(function(resolve, reject) {
1680
+ var gen = fn.apply(self, args);
1681
+
1682
+ function _next(value) {
1683
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1684
+ }
1685
+
1686
+ function _throw(err) {
1687
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1688
+ }
1689
+
1690
+ _next(undefined);
1691
+ });
1692
+ };
1693
+ }
1694
+
1695
+ exports.XRSceneExtendParser = /*#__PURE__*/ function() {
1696
+ function XRSceneExtendParser() {}
1697
+ XRSceneExtendParser.parse = function parse(engine, context, data) {
1698
+ return _async_to_generator(function() {
1699
+ var xrManager, xr, origin, camera, leftCamera, rightCamera, features, entityMap, cameraManager, i, n, feature, _;
1700
+ return __generator(this, function(_state) {
1701
+ switch(_state.label){
1702
+ case 0:
1703
+ xrManager = engine.xrManager;
1704
+ if (!xrManager) {
1705
+ miniprogram.Logger.error("XRManager is not found in the engine.");
1706
+ return [
1707
+ 2
1708
+ ];
1709
+ }
1710
+ xr = data.scene.xr;
1711
+ origin = xr.origin, camera = xr.camera, leftCamera = xr.leftCamera, rightCamera = xr.rightCamera, features = xr.features;
1712
+ entityMap = context.entityMap;
1713
+ origin && (xrManager.origin = entityMap.get(origin));
1714
+ cameraManager = xrManager.cameraManager;
1715
+ setCamera(cameraManager, exports.XRTrackedInputDevice.Camera, entityMap.get(camera));
1716
+ setCamera(cameraManager, exports.XRTrackedInputDevice.LeftCamera, entityMap.get(leftCamera));
1717
+ setCamera(cameraManager, exports.XRTrackedInputDevice.RightCamera, entityMap.get(rightCamera));
1718
+ i = 0, n = features.length;
1719
+ _state.label = 1;
1720
+ case 1:
1721
+ if (!(i < n)) return [
1722
+ 3,
1723
+ 9
1724
+ ];
1725
+ feature = features[i];
1726
+ if (!feature.enable) return [
1727
+ 3,
1728
+ 8
1729
+ ];
1730
+ _ = feature.type;
1731
+ switch(_){
1732
+ case exports.XRFeatureType.ImageTracking:
1733
+ return [
1734
+ 3,
1735
+ 2
1736
+ ];
1737
+ case exports.XRFeatureType.PlaneTracking:
1738
+ return [
1739
+ 3,
1740
+ 4
1741
+ ];
1742
+ case exports.XRFeatureType.AnchorTracking:
1743
+ return [
1744
+ 3,
1745
+ 5
1746
+ ];
1747
+ case exports.XRFeatureType.HitTest:
1748
+ return [
1749
+ 3,
1750
+ 6
1751
+ ];
1752
+ }
1753
+ return [
1754
+ 3,
1755
+ 7
1756
+ ];
1757
+ case 2:
1758
+ return [
1759
+ 4,
1760
+ addImageTracking(engine, xrManager, feature)
1761
+ ];
1762
+ case 3:
1763
+ _state.sent();
1764
+ return [
1765
+ 3,
1766
+ 8
1767
+ ];
1768
+ case 4:
1769
+ addPlaneTracking(xrManager, feature);
1770
+ return [
1771
+ 3,
1772
+ 8
1773
+ ];
1774
+ case 5:
1775
+ addAnchorTracking(xrManager, feature);
1776
+ return [
1777
+ 3,
1778
+ 8
1779
+ ];
1780
+ case 6:
1781
+ addHitTest(xrManager);
1782
+ return [
1783
+ 3,
1784
+ 8
1785
+ ];
1786
+ case 7:
1787
+ return [
1788
+ 3,
1789
+ 8
1790
+ ];
1791
+ case 8:
1792
+ i++;
1793
+ return [
1794
+ 3,
1795
+ 1
1796
+ ];
1797
+ case 9:
1798
+ return [
1799
+ 2
1800
+ ];
1801
+ }
1802
+ });
1803
+ })();
1804
+ };
1805
+ return XRSceneExtendParser;
1806
+ }();
1807
+ exports.XRSceneExtendParser = __decorate([
1808
+ miniprogram.registerSceneExtendParser("XR")
1809
+ ], exports.XRSceneExtendParser);
1810
+ function addImageTracking(engine, xrManager, schema) {
1811
+ if (!xrManager.isSupportedFeature(exports.XRImageTracking)) {
1812
+ miniprogram.Logger.error("Image Tracking is not supported.");
1813
+ return;
1814
+ }
1815
+ var promises = [];
1816
+ var images = schema.images;
1817
+ var resourceManager = engine.resourceManager;
1818
+ for(var i = 0, n = images.length; i < n; i++){
1819
+ // @ts-ignore
1820
+ promises.push(resourceManager.getResourceByRef(images[i]));
1821
+ }
1822
+ return Promise.all(promises).then(function(xrReferenceImages) {
1823
+ xrManager.addFeature(exports.XRImageTracking, xrReferenceImages);
1824
+ });
1825
+ }
1826
+ function addPlaneTracking(xrManager, schema) {
1827
+ if (!xrManager.isSupportedFeature(exports.XRPlaneTracking)) {
1828
+ miniprogram.Logger.error("Plane Tracking is not supported.");
1829
+ return;
1830
+ }
1831
+ xrManager.addFeature(exports.XRPlaneTracking, schema.detectionMode);
1832
+ }
1833
+ function addAnchorTracking(xrManager, schema) {
1834
+ if (!xrManager.isSupportedFeature(exports.XRAnchorTracking)) {
1835
+ miniprogram.Logger.error("Anchor Tracking is not supported.");
1836
+ return;
1837
+ }
1838
+ var anchorTracking = xrManager.addFeature(exports.XRAnchorTracking);
1839
+ var anchors = schema.anchors;
1840
+ for(var i = 0, n = anchors.length; i < n; i++){
1841
+ var anchor = anchors[i];
1842
+ var position = new miniprogram.Vector3().copyFrom(anchor.position);
1843
+ var rotation = new miniprogram.Quaternion().copyFrom(anchor.rotation);
1844
+ anchorTracking.addAnchor(position, rotation);
1845
+ }
1846
+ }
1847
+ function addHitTest(xrManager, schema) {
1848
+ if (!xrManager.isSupportedFeature(exports.XRHitTest)) {
1849
+ miniprogram.Logger.error("Hit Test is not supported.");
1850
+ return;
1851
+ }
1852
+ xrManager.addFeature(exports.XRHitTest);
1853
+ }
1854
+ function setCamera(cameraManager, device, entity) {
1855
+ var _entity;
1856
+ var camera = (_entity = entity) == null ? void 0 : _entity.getComponent(miniprogram.Camera);
1857
+ camera && cameraManager.attachCamera(device, camera);
1858
+ }
1859
+
1571
1860
  exports.XRAnchor = XRAnchor;
1572
1861
  exports.XRCamera = XRCamera;
1573
1862
  exports.XRCameraManager = XRCameraManager;
@@ -1578,7 +1867,5 @@ exports.XRInputManager = XRInputManager;
1578
1867
  exports.XRPose = XRPose;
1579
1868
  exports.XRReferenceImage = XRReferenceImage;
1580
1869
  exports.XRSessionManager = XRSessionManager;
1581
- exports.XRTrackableFeature = XRTrackableFeature;
1582
- exports.XRTracked = XRTracked;
1583
1870
  exports.XRTrackedImage = XRTrackedImage;
1584
1871
  exports.XRTrackedPlane = XRTrackedPlane;