@galacean/engine-xr-webxr 0.0.0-experimental-stateMachine.0 → 0.0.0-experimental-1.3-xr.1
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 +413 -35
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +20 -2
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +20 -2
- package/dist/module.js +21 -3
- package/dist/module.js.map +1 -1
- package/package.json +9 -9
- package/LICENSE +0 -21
package/dist/browser.js
CHANGED
|
@@ -574,6 +574,7 @@
|
|
|
574
574
|
this._engine = _engine;
|
|
575
575
|
this._mode = XRSessionMode.None;
|
|
576
576
|
this._state = XRSessionState.None;
|
|
577
|
+
this._listeners = [];
|
|
577
578
|
// @ts-ignore
|
|
578
579
|
this._rhi = _engine._hardwareRenderer;
|
|
579
580
|
this._raf = requestAnimationFrame.bind(window);
|
|
@@ -596,7 +597,7 @@
|
|
|
596
597
|
throw new Error("Without session to run.");
|
|
597
598
|
}
|
|
598
599
|
platformSession.start();
|
|
599
|
-
this.
|
|
600
|
+
this.state = XRSessionState.Running;
|
|
600
601
|
this._xrManager._onSessionStart();
|
|
601
602
|
if (!engine.isPaused) {
|
|
602
603
|
engine.pause();
|
|
@@ -616,7 +617,7 @@
|
|
|
616
617
|
rhi._mainFrameBuffer = null;
|
|
617
618
|
rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
|
|
618
619
|
platformSession.stop();
|
|
619
|
-
this.
|
|
620
|
+
this.state = XRSessionState.Paused;
|
|
620
621
|
this._xrManager._onSessionStop();
|
|
621
622
|
if (!engine.isPaused) {
|
|
622
623
|
engine.pause();
|
|
@@ -624,6 +625,22 @@
|
|
|
624
625
|
}
|
|
625
626
|
};
|
|
626
627
|
/**
|
|
628
|
+
* Add a listening function for session state changes.
|
|
629
|
+
* @param listener - The listening function
|
|
630
|
+
*/ _proto.addChangedListener = function addChangedListener(listener) {
|
|
631
|
+
this._listeners.push(listener);
|
|
632
|
+
};
|
|
633
|
+
/**
|
|
634
|
+
* Remove a listening function of session state changes.
|
|
635
|
+
* @param listener - The listening function
|
|
636
|
+
*/ _proto.removeChangedListener = function removeChangedListener(listener) {
|
|
637
|
+
var _this = this, listeners = _this._listeners;
|
|
638
|
+
var index = listeners.indexOf(listener);
|
|
639
|
+
if (index >= 0) {
|
|
640
|
+
listeners.splice(index, 1);
|
|
641
|
+
}
|
|
642
|
+
};
|
|
643
|
+
/**
|
|
627
644
|
* @internal
|
|
628
645
|
*/ _proto._initialize = function _initialize(mode, features) {
|
|
629
646
|
var _this = this;
|
|
@@ -638,7 +655,7 @@
|
|
|
638
655
|
xrManager._platformDevice.requestSession(_this._rhi, mode, platformFeatures).then(function(platformSession) {
|
|
639
656
|
_this._mode = mode;
|
|
640
657
|
_this._platformSession = platformSession;
|
|
641
|
-
_this.
|
|
658
|
+
_this.state = XRSessionState.Initialized;
|
|
642
659
|
platformSession.setSessionExitCallBack(_this._onSessionExit);
|
|
643
660
|
platformSession.addEventListener();
|
|
644
661
|
xrManager._onSessionInit();
|
|
@@ -687,7 +704,7 @@
|
|
|
687
704
|
rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
|
|
688
705
|
platformSession.removeEventListener();
|
|
689
706
|
this._platformSession = null;
|
|
690
|
-
this.
|
|
707
|
+
this.state = XRSessionState.None;
|
|
691
708
|
this._xrManager._onSessionExit();
|
|
692
709
|
if (!engine.isPaused) {
|
|
693
710
|
engine.pause();
|
|
@@ -712,6 +729,15 @@
|
|
|
712
729
|
* Return the current session state.
|
|
713
730
|
*/ function get() {
|
|
714
731
|
return this._state;
|
|
732
|
+
},
|
|
733
|
+
set: /**
|
|
734
|
+
* @internal
|
|
735
|
+
*/ function set(value) {
|
|
736
|
+
this._state = value;
|
|
737
|
+
var listeners = this._listeners;
|
|
738
|
+
for(var i = 0, n = listeners.length; i < n; i++){
|
|
739
|
+
listeners[i](value);
|
|
740
|
+
}
|
|
715
741
|
}
|
|
716
742
|
},
|
|
717
743
|
{
|
|
@@ -760,21 +786,23 @@
|
|
|
760
786
|
if (this.sessionManager._platformSession) {
|
|
761
787
|
throw new Error("Cannot add feature when the session is initialized.");
|
|
762
788
|
}
|
|
763
|
-
|
|
789
|
+
if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {
|
|
790
|
+
throw new Error("The feature is not supported");
|
|
791
|
+
}
|
|
792
|
+
var features = this.features;
|
|
764
793
|
for(var i = 0, n = features.length; i < n; i++){
|
|
765
|
-
|
|
766
|
-
if (_instanceof1(feature, type)) throw new Error("The feature has been added");
|
|
794
|
+
if (_instanceof1(features[i], type)) throw new Error("The feature has been added");
|
|
767
795
|
}
|
|
768
|
-
var
|
|
769
|
-
|
|
770
|
-
return
|
|
796
|
+
var feature = _construct$1(type, [].concat(this, args));
|
|
797
|
+
features.push(feature);
|
|
798
|
+
return feature;
|
|
771
799
|
};
|
|
772
800
|
/**
|
|
773
801
|
* Get feature which match the type.
|
|
774
802
|
* @param type - The type of the feature
|
|
775
803
|
* @returns The feature which match type
|
|
776
804
|
*/ _proto.getFeature = function getFeature(type) {
|
|
777
|
-
var
|
|
805
|
+
var features = this.features;
|
|
778
806
|
for(var i = 0, n = features.length; i < n; i++){
|
|
779
807
|
var feature = features[i];
|
|
780
808
|
if (_instanceof1(feature, type)) {
|
|
@@ -782,19 +810,6 @@
|
|
|
782
810
|
}
|
|
783
811
|
}
|
|
784
812
|
};
|
|
785
|
-
_proto.getFeatures = function getFeatures(type, out) {
|
|
786
|
-
if (out) {
|
|
787
|
-
out.length = 0;
|
|
788
|
-
} else {
|
|
789
|
-
out = [];
|
|
790
|
-
}
|
|
791
|
-
var _this = this, features = _this._features;
|
|
792
|
-
for(var i = 0, n = features.length; i < n; i--){
|
|
793
|
-
var feature = features[i];
|
|
794
|
-
_instanceof1(feature, type) && out.push(feature);
|
|
795
|
-
}
|
|
796
|
-
return out;
|
|
797
|
-
};
|
|
798
813
|
/**
|
|
799
814
|
* Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.
|
|
800
815
|
* @param sessionMode - The mode of the session
|
|
@@ -814,7 +829,7 @@
|
|
|
814
829
|
// 1. Check if this xr mode is supported
|
|
815
830
|
sessionManager.isSupportedMode(sessionMode).then(function() {
|
|
816
831
|
// 2. Initialize session
|
|
817
|
-
sessionManager._initialize(sessionMode, _this.
|
|
832
|
+
sessionManager._initialize(sessionMode, _this.features).then(function() {
|
|
818
833
|
autoRun && sessionManager.run();
|
|
819
834
|
resolve();
|
|
820
835
|
}, reject);
|
|
@@ -835,7 +850,7 @@
|
|
|
835
850
|
/**
|
|
836
851
|
* @internal
|
|
837
852
|
*/ _proto._initialize = function _initialize(engine, xrDevice) {
|
|
838
|
-
this.
|
|
853
|
+
this.features.length = 0;
|
|
839
854
|
this._platformDevice = xrDevice;
|
|
840
855
|
this.sessionManager = new XRSessionManager(this, engine);
|
|
841
856
|
this.inputManager = new XRInputManager(this, engine);
|
|
@@ -849,7 +864,7 @@
|
|
|
849
864
|
sessionManager._onUpdate();
|
|
850
865
|
this.inputManager._onUpdate();
|
|
851
866
|
this.cameraManager._onUpdate();
|
|
852
|
-
var
|
|
867
|
+
var features = this.features;
|
|
853
868
|
for(var i = 0, n = features.length; i < n; i++){
|
|
854
869
|
var feature = features[i];
|
|
855
870
|
feature.enabled && feature._onUpdate();
|
|
@@ -889,7 +904,7 @@
|
|
|
889
904
|
/**
|
|
890
905
|
* @internal
|
|
891
906
|
*/ _proto._onSessionStop = function _onSessionStop() {
|
|
892
|
-
var
|
|
907
|
+
var features = this.features;
|
|
893
908
|
for(var i = 0, n = features.length; i < n; i++){
|
|
894
909
|
var feature = features[i];
|
|
895
910
|
feature.enabled && feature._onSessionStop();
|
|
@@ -898,7 +913,7 @@
|
|
|
898
913
|
/**
|
|
899
914
|
* @internal
|
|
900
915
|
*/ _proto._onSessionInit = function _onSessionInit() {
|
|
901
|
-
var
|
|
916
|
+
var features = this.features;
|
|
902
917
|
for(var i = 0, n = features.length; i < n; i++){
|
|
903
918
|
var feature = features[i];
|
|
904
919
|
feature.enabled && feature._onSessionInit();
|
|
@@ -908,7 +923,7 @@
|
|
|
908
923
|
* @internal
|
|
909
924
|
*/ _proto._onSessionStart = function _onSessionStart() {
|
|
910
925
|
this.cameraManager._onSessionStart();
|
|
911
|
-
var
|
|
926
|
+
var features = this.features;
|
|
912
927
|
for(var i = 0, n = features.length; i < n; i++){
|
|
913
928
|
var feature = features[i];
|
|
914
929
|
feature.enabled && feature._onSessionStart();
|
|
@@ -918,7 +933,7 @@
|
|
|
918
933
|
* @internal
|
|
919
934
|
*/ _proto._onSessionExit = function _onSessionExit() {
|
|
920
935
|
this.cameraManager._onSessionExit();
|
|
921
|
-
var
|
|
936
|
+
var features = this.features;
|
|
922
937
|
for(var i = 0, n = features.length; i < n; i++){
|
|
923
938
|
var feature = features[i];
|
|
924
939
|
feature.enabled && feature._onSessionExit();
|
|
@@ -1057,6 +1072,101 @@
|
|
|
1057
1072
|
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;
|
|
1058
1073
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1059
1074
|
}
|
|
1075
|
+
function __generator(thisArg, body) {
|
|
1076
|
+
var verb = function verb(n) {
|
|
1077
|
+
return function(v) {
|
|
1078
|
+
return step([
|
|
1079
|
+
n,
|
|
1080
|
+
v
|
|
1081
|
+
]);
|
|
1082
|
+
};
|
|
1083
|
+
};
|
|
1084
|
+
var step = function step(op) {
|
|
1085
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
1086
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
1087
|
+
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;
|
|
1088
|
+
if (y = 0, t) op = [
|
|
1089
|
+
op[0] & 2,
|
|
1090
|
+
t.value
|
|
1091
|
+
];
|
|
1092
|
+
switch(op[0]){
|
|
1093
|
+
case 0:
|
|
1094
|
+
case 1:
|
|
1095
|
+
t = op;
|
|
1096
|
+
break;
|
|
1097
|
+
case 4:
|
|
1098
|
+
_.label++;
|
|
1099
|
+
return {
|
|
1100
|
+
value: op[1],
|
|
1101
|
+
done: false
|
|
1102
|
+
};
|
|
1103
|
+
case 5:
|
|
1104
|
+
_.label++;
|
|
1105
|
+
y = op[1];
|
|
1106
|
+
op = [
|
|
1107
|
+
0
|
|
1108
|
+
];
|
|
1109
|
+
continue;
|
|
1110
|
+
case 7:
|
|
1111
|
+
op = _.ops.pop();
|
|
1112
|
+
_.trys.pop();
|
|
1113
|
+
continue;
|
|
1114
|
+
default:
|
|
1115
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
1116
|
+
_ = 0;
|
|
1117
|
+
continue;
|
|
1118
|
+
}
|
|
1119
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
1120
|
+
_.label = op[1];
|
|
1121
|
+
break;
|
|
1122
|
+
}
|
|
1123
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
1124
|
+
_.label = t[1];
|
|
1125
|
+
t = op;
|
|
1126
|
+
break;
|
|
1127
|
+
}
|
|
1128
|
+
if (t && _.label < t[2]) {
|
|
1129
|
+
_.label = t[2];
|
|
1130
|
+
_.ops.push(op);
|
|
1131
|
+
break;
|
|
1132
|
+
}
|
|
1133
|
+
if (t[2]) _.ops.pop();
|
|
1134
|
+
_.trys.pop();
|
|
1135
|
+
continue;
|
|
1136
|
+
}
|
|
1137
|
+
op = body.call(thisArg, _);
|
|
1138
|
+
} catch (e) {
|
|
1139
|
+
op = [
|
|
1140
|
+
6,
|
|
1141
|
+
e
|
|
1142
|
+
];
|
|
1143
|
+
y = 0;
|
|
1144
|
+
} finally{
|
|
1145
|
+
f = t = 0;
|
|
1146
|
+
}
|
|
1147
|
+
if (op[0] & 5) throw op[1];
|
|
1148
|
+
return {
|
|
1149
|
+
value: op[0] ? op[1] : void 0,
|
|
1150
|
+
done: true
|
|
1151
|
+
};
|
|
1152
|
+
};
|
|
1153
|
+
var _ = {
|
|
1154
|
+
label: 0,
|
|
1155
|
+
sent: function sent() {
|
|
1156
|
+
if (t[0] & 1) throw t[1];
|
|
1157
|
+
return t[1];
|
|
1158
|
+
},
|
|
1159
|
+
trys: [],
|
|
1160
|
+
ops: []
|
|
1161
|
+
}, f, y, t, g;
|
|
1162
|
+
return g = {
|
|
1163
|
+
next: verb(0),
|
|
1164
|
+
"throw": verb(1),
|
|
1165
|
+
"return": verb(2)
|
|
1166
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
1167
|
+
return this;
|
|
1168
|
+
}), g;
|
|
1169
|
+
}
|
|
1060
1170
|
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
1061
1171
|
var e = new Error(message);
|
|
1062
1172
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
@@ -1411,7 +1521,7 @@
|
|
|
1411
1521
|
], XRHitTest);
|
|
1412
1522
|
/**
|
|
1413
1523
|
* The anchor in XR space.
|
|
1414
|
-
*/ var XRAnchor = /*#__PURE__*/ function(XRTracked1) {
|
|
1524
|
+
*/ var XRAnchor$1 = /*#__PURE__*/ function(XRTracked1) {
|
|
1415
1525
|
var XRAnchor = function XRAnchor() {
|
|
1416
1526
|
return XRTracked1.apply(this, arguments);
|
|
1417
1527
|
};
|
|
@@ -1481,7 +1591,7 @@
|
|
|
1481
1591
|
this._removeAllRequestTrackings();
|
|
1482
1592
|
};
|
|
1483
1593
|
_proto._generateTracked = function _generateTracked() {
|
|
1484
|
-
var anchor = new XRAnchor();
|
|
1594
|
+
var anchor = new XRAnchor$1();
|
|
1485
1595
|
anchor.id = XRTrackableFeature._uuid++;
|
|
1486
1596
|
return anchor;
|
|
1487
1597
|
};
|
|
@@ -1574,6 +1684,256 @@
|
|
|
1574
1684
|
XRImageTracking = __decorate([
|
|
1575
1685
|
registerXRFeature(XRFeatureType.ImageTracking)
|
|
1576
1686
|
], XRImageTracking);
|
|
1687
|
+
/**
|
|
1688
|
+
* A reference image is an image to look for in the physical environment.
|
|
1689
|
+
*/ var XRReferenceImage = function XRReferenceImage(name, imageSource, physicalWidth) {
|
|
1690
|
+
this.name = name;
|
|
1691
|
+
this.imageSource = imageSource;
|
|
1692
|
+
this.physicalWidth = physicalWidth;
|
|
1693
|
+
};
|
|
1694
|
+
var XRReferenceImageDecoder = /*#__PURE__*/ function() {
|
|
1695
|
+
var XRReferenceImageDecoder = function XRReferenceImageDecoder() {};
|
|
1696
|
+
XRReferenceImageDecoder.decode = function decode(engine, bufferReader) {
|
|
1697
|
+
return new Promise(function(resolve, reject) {
|
|
1698
|
+
var physicalWidth = bufferReader.nextFloat32();
|
|
1699
|
+
bufferReader.nextUint8();
|
|
1700
|
+
var img = new Image();
|
|
1701
|
+
img.onload = function() {
|
|
1702
|
+
resolve(new XRReferenceImage("", img, physicalWidth));
|
|
1703
|
+
};
|
|
1704
|
+
img.src = URL.createObjectURL(new window.Blob([
|
|
1705
|
+
bufferReader.nextImagesData(1)[0]
|
|
1706
|
+
]));
|
|
1707
|
+
});
|
|
1708
|
+
};
|
|
1709
|
+
return XRReferenceImageDecoder;
|
|
1710
|
+
}();
|
|
1711
|
+
XRReferenceImageDecoder = __decorate([
|
|
1712
|
+
engine.decoder("XRReferenceImage")
|
|
1713
|
+
], XRReferenceImageDecoder);
|
|
1714
|
+
function _extends() {
|
|
1715
|
+
_extends = Object.assign || function assign(target) {
|
|
1716
|
+
for(var i = 1; i < arguments.length; i++){
|
|
1717
|
+
var source = arguments[i];
|
|
1718
|
+
for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
|
|
1719
|
+
}
|
|
1720
|
+
return target;
|
|
1721
|
+
};
|
|
1722
|
+
return _extends.apply(this, arguments);
|
|
1723
|
+
}
|
|
1724
|
+
var XRReferenceImageLoader = /*#__PURE__*/ function(Loader1) {
|
|
1725
|
+
var XRReferenceImageLoader = function XRReferenceImageLoader() {
|
|
1726
|
+
return Loader1.apply(this, arguments);
|
|
1727
|
+
};
|
|
1728
|
+
_inherits(XRReferenceImageLoader, Loader1);
|
|
1729
|
+
var _proto = XRReferenceImageLoader.prototype;
|
|
1730
|
+
_proto.load = function load(item, resourceManager) {
|
|
1731
|
+
var _this = this;
|
|
1732
|
+
return new engine.AssetPromise(function(resolve, reject) {
|
|
1733
|
+
_this.request(item.url, _extends({}, item, {
|
|
1734
|
+
type: "arraybuffer"
|
|
1735
|
+
})).then(function(data) {
|
|
1736
|
+
engine.decode(data, resourceManager.engine).then(function(referenceImage) {
|
|
1737
|
+
resolve(referenceImage);
|
|
1738
|
+
});
|
|
1739
|
+
}).catch(reject);
|
|
1740
|
+
});
|
|
1741
|
+
};
|
|
1742
|
+
return XRReferenceImageLoader;
|
|
1743
|
+
}(engine.Loader);
|
|
1744
|
+
XRReferenceImageLoader = __decorate([
|
|
1745
|
+
engine.resourceLoader("XRReferenceImage", [])
|
|
1746
|
+
], XRReferenceImageLoader);
|
|
1747
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
1748
|
+
try {
|
|
1749
|
+
var info = gen[key](arg);
|
|
1750
|
+
var value = info.value;
|
|
1751
|
+
} catch (error) {
|
|
1752
|
+
reject(error);
|
|
1753
|
+
return;
|
|
1754
|
+
}
|
|
1755
|
+
if (info.done) resolve(value);
|
|
1756
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
1757
|
+
}
|
|
1758
|
+
function _async_to_generator(fn) {
|
|
1759
|
+
return function() {
|
|
1760
|
+
var self = this, args = arguments;
|
|
1761
|
+
return new Promise(function(resolve, reject) {
|
|
1762
|
+
var gen = fn.apply(self, args);
|
|
1763
|
+
function _next(value) {
|
|
1764
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
1765
|
+
}
|
|
1766
|
+
function _throw(err) {
|
|
1767
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
1768
|
+
}
|
|
1769
|
+
_next(undefined);
|
|
1770
|
+
});
|
|
1771
|
+
};
|
|
1772
|
+
}
|
|
1773
|
+
var XRSceneExtendParser = /*#__PURE__*/ function() {
|
|
1774
|
+
var XRSceneExtendParser = function XRSceneExtendParser() {};
|
|
1775
|
+
XRSceneExtendParser.parse = function parse(engine$1, context, data) {
|
|
1776
|
+
return _async_to_generator(function() {
|
|
1777
|
+
var xrManager, xr, origin, camera, leftCamera, rightCamera, features, entityMap, cameraManager, i, n, feature, _;
|
|
1778
|
+
return __generator(this, function(_state) {
|
|
1779
|
+
switch(_state.label){
|
|
1780
|
+
case 0:
|
|
1781
|
+
xrManager = engine$1.xrManager;
|
|
1782
|
+
if (!xrManager) {
|
|
1783
|
+
engine.Logger.error("XRManager is not found in the engine.");
|
|
1784
|
+
return [
|
|
1785
|
+
2
|
|
1786
|
+
];
|
|
1787
|
+
}
|
|
1788
|
+
xr = data.scene.xr;
|
|
1789
|
+
origin = xr.origin, camera = xr.camera, leftCamera = xr.leftCamera, rightCamera = xr.rightCamera, features = xr.features;
|
|
1790
|
+
entityMap = context.entityMap;
|
|
1791
|
+
origin && (xrManager.origin = entityMap.get(origin));
|
|
1792
|
+
cameraManager = xrManager.cameraManager;
|
|
1793
|
+
setCamera(cameraManager, XRTrackedInputDevice.Camera, entityMap.get(camera));
|
|
1794
|
+
setCamera(cameraManager, XRTrackedInputDevice.LeftCamera, entityMap.get(leftCamera));
|
|
1795
|
+
setCamera(cameraManager, XRTrackedInputDevice.RightCamera, entityMap.get(rightCamera));
|
|
1796
|
+
i = 0, n = features.length;
|
|
1797
|
+
_state.label = 1;
|
|
1798
|
+
case 1:
|
|
1799
|
+
if (!(i < n)) return [
|
|
1800
|
+
3,
|
|
1801
|
+
9
|
|
1802
|
+
];
|
|
1803
|
+
feature = features[i];
|
|
1804
|
+
if (!feature.enable) return [
|
|
1805
|
+
3,
|
|
1806
|
+
8
|
|
1807
|
+
];
|
|
1808
|
+
_ = feature.type;
|
|
1809
|
+
switch(_){
|
|
1810
|
+
case XRFeatureType.ImageTracking:
|
|
1811
|
+
return [
|
|
1812
|
+
3,
|
|
1813
|
+
2
|
|
1814
|
+
];
|
|
1815
|
+
case XRFeatureType.PlaneTracking:
|
|
1816
|
+
return [
|
|
1817
|
+
3,
|
|
1818
|
+
4
|
|
1819
|
+
];
|
|
1820
|
+
case XRFeatureType.AnchorTracking:
|
|
1821
|
+
return [
|
|
1822
|
+
3,
|
|
1823
|
+
5
|
|
1824
|
+
];
|
|
1825
|
+
case XRFeatureType.HitTest:
|
|
1826
|
+
return [
|
|
1827
|
+
3,
|
|
1828
|
+
6
|
|
1829
|
+
];
|
|
1830
|
+
}
|
|
1831
|
+
return [
|
|
1832
|
+
3,
|
|
1833
|
+
7
|
|
1834
|
+
];
|
|
1835
|
+
case 2:
|
|
1836
|
+
return [
|
|
1837
|
+
4,
|
|
1838
|
+
addImageTracking(engine$1, xrManager, feature)
|
|
1839
|
+
];
|
|
1840
|
+
case 3:
|
|
1841
|
+
_state.sent();
|
|
1842
|
+
return [
|
|
1843
|
+
3,
|
|
1844
|
+
8
|
|
1845
|
+
];
|
|
1846
|
+
case 4:
|
|
1847
|
+
addPlaneTracking(xrManager, feature);
|
|
1848
|
+
return [
|
|
1849
|
+
3,
|
|
1850
|
+
8
|
|
1851
|
+
];
|
|
1852
|
+
case 5:
|
|
1853
|
+
addAnchorTracking(xrManager, feature);
|
|
1854
|
+
return [
|
|
1855
|
+
3,
|
|
1856
|
+
8
|
|
1857
|
+
];
|
|
1858
|
+
case 6:
|
|
1859
|
+
addHitTest(xrManager);
|
|
1860
|
+
return [
|
|
1861
|
+
3,
|
|
1862
|
+
8
|
|
1863
|
+
];
|
|
1864
|
+
case 7:
|
|
1865
|
+
return [
|
|
1866
|
+
3,
|
|
1867
|
+
8
|
|
1868
|
+
];
|
|
1869
|
+
case 8:
|
|
1870
|
+
i++;
|
|
1871
|
+
return [
|
|
1872
|
+
3,
|
|
1873
|
+
1
|
|
1874
|
+
];
|
|
1875
|
+
case 9:
|
|
1876
|
+
return [
|
|
1877
|
+
2
|
|
1878
|
+
];
|
|
1879
|
+
}
|
|
1880
|
+
});
|
|
1881
|
+
})();
|
|
1882
|
+
};
|
|
1883
|
+
return XRSceneExtendParser;
|
|
1884
|
+
}();
|
|
1885
|
+
XRSceneExtendParser = __decorate([
|
|
1886
|
+
engine.registerSceneExtendParser("XR")
|
|
1887
|
+
], XRSceneExtendParser);
|
|
1888
|
+
function addImageTracking(engine$1, xrManager, schema) {
|
|
1889
|
+
if (!xrManager.isSupportedFeature(XRImageTracking)) {
|
|
1890
|
+
engine.Logger.error("Image Tracking is not supported.");
|
|
1891
|
+
return;
|
|
1892
|
+
}
|
|
1893
|
+
var promises = [];
|
|
1894
|
+
var images = schema.images;
|
|
1895
|
+
var resourceManager = engine$1.resourceManager;
|
|
1896
|
+
for(var i = 0, n = images.length; i < n; i++){
|
|
1897
|
+
// @ts-ignore
|
|
1898
|
+
promises.push(resourceManager.getResourceByRef(images[i]));
|
|
1899
|
+
}
|
|
1900
|
+
return Promise.all(promises).then(function(xrReferenceImages) {
|
|
1901
|
+
xrManager.addFeature(XRImageTracking, xrReferenceImages);
|
|
1902
|
+
});
|
|
1903
|
+
}
|
|
1904
|
+
function addPlaneTracking(xrManager, schema) {
|
|
1905
|
+
if (!xrManager.isSupportedFeature(XRPlaneTracking)) {
|
|
1906
|
+
engine.Logger.error("Plane Tracking is not supported.");
|
|
1907
|
+
return;
|
|
1908
|
+
}
|
|
1909
|
+
xrManager.addFeature(XRPlaneTracking, schema.detectionMode);
|
|
1910
|
+
}
|
|
1911
|
+
function addAnchorTracking(xrManager, schema) {
|
|
1912
|
+
if (!xrManager.isSupportedFeature(XRAnchorTracking)) {
|
|
1913
|
+
engine.Logger.error("Anchor Tracking is not supported.");
|
|
1914
|
+
return;
|
|
1915
|
+
}
|
|
1916
|
+
var anchorTracking = xrManager.addFeature(XRAnchorTracking);
|
|
1917
|
+
var anchors = schema.anchors;
|
|
1918
|
+
for(var i = 0, n = anchors.length; i < n; i++){
|
|
1919
|
+
var anchor = anchors[i];
|
|
1920
|
+
var position = new engine.Vector3().copyFrom(anchor.position);
|
|
1921
|
+
var rotation = new engine.Quaternion().copyFrom(anchor.rotation);
|
|
1922
|
+
anchorTracking.addAnchor(position, rotation);
|
|
1923
|
+
}
|
|
1924
|
+
}
|
|
1925
|
+
function addHitTest(xrManager, schema) {
|
|
1926
|
+
if (!xrManager.isSupportedFeature(XRHitTest)) {
|
|
1927
|
+
engine.Logger.error("Hit Test is not supported.");
|
|
1928
|
+
return;
|
|
1929
|
+
}
|
|
1930
|
+
xrManager.addFeature(XRHitTest);
|
|
1931
|
+
}
|
|
1932
|
+
function setCamera(cameraManager, device, entity) {
|
|
1933
|
+
var _entity;
|
|
1934
|
+
var camera = (_entity = entity) == null ? void 0 : _entity.getComponent(engine.Camera);
|
|
1935
|
+
camera && cameraManager.attachCamera(device, camera);
|
|
1936
|
+
}
|
|
1577
1937
|
|
|
1578
1938
|
function _is_native_reflect_construct() {
|
|
1579
1939
|
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
@@ -1739,6 +2099,15 @@
|
|
|
1739
2099
|
*/ MathUtil.degreeToRadian = function degreeToRadian(d) {
|
|
1740
2100
|
return d * MathUtil.degreeToRadFactor;
|
|
1741
2101
|
};
|
|
2102
|
+
/**
|
|
2103
|
+
* Linearly interpolate between two values
|
|
2104
|
+
* @param start - Specify the start of the range in which to interpolate
|
|
2105
|
+
* @param end - Specify the end of the range in which to interpolate
|
|
2106
|
+
* @param t - The blend amount where 0 returns start and 1 end
|
|
2107
|
+
* @returns The result of linear blending between start and end
|
|
2108
|
+
*/ MathUtil.lerp = function lerp(start, end, t) {
|
|
2109
|
+
return start + (end - start) * t;
|
|
2110
|
+
};
|
|
1742
2111
|
return MathUtil;
|
|
1743
2112
|
}();
|
|
1744
2113
|
(function() {
|
|
@@ -5973,7 +6342,7 @@
|
|
|
5973
6342
|
session.removeEventListener("squeeze", onSessionEvent);
|
|
5974
6343
|
session.removeEventListener("squeezestart", onSessionEvent);
|
|
5975
6344
|
session.removeEventListener("squeezeend", onSessionEvent);
|
|
5976
|
-
session.
|
|
6345
|
+
session.removeEventListener("end", this._onSessionExit);
|
|
5977
6346
|
this._events.length = 0;
|
|
5978
6347
|
};
|
|
5979
6348
|
_proto.resetEvents = function resetEvents() {
|
|
@@ -6116,7 +6485,16 @@
|
|
|
6116
6485
|
});
|
|
6117
6486
|
};
|
|
6118
6487
|
_proto.isSupportedFeature = function isSupportedFeature(type) {
|
|
6119
|
-
|
|
6488
|
+
switch(type){
|
|
6489
|
+
case XRFeatureType.HitTest:
|
|
6490
|
+
case XRFeatureType.PlaneTracking:
|
|
6491
|
+
return typeof XRPlane !== "undefined";
|
|
6492
|
+
case XRFeatureType.AnchorTracking:
|
|
6493
|
+
return typeof XRAnchor !== "undefined";
|
|
6494
|
+
case XRFeatureType.ImageTracking:
|
|
6495
|
+
// @ts-ignore
|
|
6496
|
+
return typeof XRImageTrackingResult !== "undefined";
|
|
6497
|
+
}
|
|
6120
6498
|
};
|
|
6121
6499
|
_proto.createPlatformFeature = function createPlatformFeature(type) {
|
|
6122
6500
|
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|