@galacean/engine-xr-webxr 0.0.0-experimental-1.2-xr.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 +443 -85
- 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 +12 -5
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +12 -5
- package/dist/module.js +12 -5
- 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,13 +597,12 @@
|
|
|
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();
|
|
603
604
|
engine.resume();
|
|
604
605
|
}
|
|
605
|
-
engine.dispatch("XRSessionStart");
|
|
606
606
|
};
|
|
607
607
|
/**
|
|
608
608
|
* Stop the session.
|
|
@@ -617,13 +617,28 @@
|
|
|
617
617
|
rhi._mainFrameBuffer = null;
|
|
618
618
|
rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
|
|
619
619
|
platformSession.stop();
|
|
620
|
-
this.
|
|
620
|
+
this.state = XRSessionState.Paused;
|
|
621
621
|
this._xrManager._onSessionStop();
|
|
622
622
|
if (!engine.isPaused) {
|
|
623
623
|
engine.pause();
|
|
624
624
|
engine.resume();
|
|
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
|
+
}
|
|
627
642
|
};
|
|
628
643
|
/**
|
|
629
644
|
* @internal
|
|
@@ -640,12 +655,11 @@
|
|
|
640
655
|
xrManager._platformDevice.requestSession(_this._rhi, mode, platformFeatures).then(function(platformSession) {
|
|
641
656
|
_this._mode = mode;
|
|
642
657
|
_this._platformSession = platformSession;
|
|
643
|
-
_this.
|
|
658
|
+
_this.state = XRSessionState.Initialized;
|
|
644
659
|
platformSession.setSessionExitCallBack(_this._onSessionExit);
|
|
645
660
|
platformSession.addEventListener();
|
|
646
661
|
xrManager._onSessionInit();
|
|
647
662
|
resolve();
|
|
648
|
-
_this._engine.dispatch("XRSessionInit");
|
|
649
663
|
}, reject);
|
|
650
664
|
});
|
|
651
665
|
};
|
|
@@ -678,14 +692,11 @@
|
|
|
678
692
|
/**
|
|
679
693
|
* @internal
|
|
680
694
|
*/ _proto._exit = function _exit() {
|
|
681
|
-
var _this = this;
|
|
682
|
-
var _this1 = this, platformSession = _this1._platformSession;
|
|
695
|
+
var _this = this, platformSession = _this._platformSession;
|
|
683
696
|
if (!platformSession) {
|
|
684
697
|
return Promise.reject("Without session to stop.");
|
|
685
698
|
}
|
|
686
|
-
return platformSession.end()
|
|
687
|
-
_this._engine.dispatch("XRSessionExit");
|
|
688
|
-
});
|
|
699
|
+
return platformSession.end();
|
|
689
700
|
};
|
|
690
701
|
_proto._onSessionExit = function _onSessionExit() {
|
|
691
702
|
var _this = this, rhi = _this._rhi, platformSession = _this._platformSession, engine = _this._engine;
|
|
@@ -693,7 +704,7 @@
|
|
|
693
704
|
rhi._mainFrameWidth = rhi._mainFrameHeight = 0;
|
|
694
705
|
platformSession.removeEventListener();
|
|
695
706
|
this._platformSession = null;
|
|
696
|
-
this.
|
|
707
|
+
this.state = XRSessionState.None;
|
|
697
708
|
this._xrManager._onSessionExit();
|
|
698
709
|
if (!engine.isPaused) {
|
|
699
710
|
engine.pause();
|
|
@@ -718,6 +729,15 @@
|
|
|
718
729
|
* Return the current session state.
|
|
719
730
|
*/ function get() {
|
|
720
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
|
+
}
|
|
721
741
|
}
|
|
722
742
|
},
|
|
723
743
|
{
|
|
@@ -766,16 +786,15 @@
|
|
|
766
786
|
if (this.sessionManager._platformSession) {
|
|
767
787
|
throw new Error("Cannot add feature when the session is initialized.");
|
|
768
788
|
}
|
|
769
|
-
var _this = this, features = _this._features;
|
|
770
|
-
_this._platformDevice;
|
|
771
789
|
if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {
|
|
772
790
|
throw new Error("The feature is not supported");
|
|
773
791
|
}
|
|
792
|
+
var features = this.features;
|
|
774
793
|
for(var i = 0, n = features.length; i < n; i++){
|
|
775
794
|
if (_instanceof1(features[i], type)) throw new Error("The feature has been added");
|
|
776
795
|
}
|
|
777
796
|
var feature = _construct$1(type, [].concat(this, args));
|
|
778
|
-
|
|
797
|
+
features.push(feature);
|
|
779
798
|
return feature;
|
|
780
799
|
};
|
|
781
800
|
/**
|
|
@@ -783,7 +802,7 @@
|
|
|
783
802
|
* @param type - The type of the feature
|
|
784
803
|
* @returns The feature which match type
|
|
785
804
|
*/ _proto.getFeature = function getFeature(type) {
|
|
786
|
-
var
|
|
805
|
+
var features = this.features;
|
|
787
806
|
for(var i = 0, n = features.length; i < n; i++){
|
|
788
807
|
var feature = features[i];
|
|
789
808
|
if (_instanceof1(feature, type)) {
|
|
@@ -791,19 +810,6 @@
|
|
|
791
810
|
}
|
|
792
811
|
}
|
|
793
812
|
};
|
|
794
|
-
_proto.getFeatures = function getFeatures(out) {
|
|
795
|
-
var _this = this, features = _this._features;
|
|
796
|
-
var length = features.length;
|
|
797
|
-
if (out) {
|
|
798
|
-
out.length = length;
|
|
799
|
-
} else {
|
|
800
|
-
out = new Array(length);
|
|
801
|
-
}
|
|
802
|
-
for(var i = 0; i < length; i--){
|
|
803
|
-
out[i] = features[i];
|
|
804
|
-
}
|
|
805
|
-
return out;
|
|
806
|
-
};
|
|
807
813
|
/**
|
|
808
814
|
* Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.
|
|
809
815
|
* @param sessionMode - The mode of the session
|
|
@@ -823,7 +829,7 @@
|
|
|
823
829
|
// 1. Check if this xr mode is supported
|
|
824
830
|
sessionManager.isSupportedMode(sessionMode).then(function() {
|
|
825
831
|
// 2. Initialize session
|
|
826
|
-
sessionManager._initialize(sessionMode, _this.
|
|
832
|
+
sessionManager._initialize(sessionMode, _this.features).then(function() {
|
|
827
833
|
autoRun && sessionManager.run();
|
|
828
834
|
resolve();
|
|
829
835
|
}, reject);
|
|
@@ -844,7 +850,7 @@
|
|
|
844
850
|
/**
|
|
845
851
|
* @internal
|
|
846
852
|
*/ _proto._initialize = function _initialize(engine, xrDevice) {
|
|
847
|
-
this.
|
|
853
|
+
this.features.length = 0;
|
|
848
854
|
this._platformDevice = xrDevice;
|
|
849
855
|
this.sessionManager = new XRSessionManager(this, engine);
|
|
850
856
|
this.inputManager = new XRInputManager(this, engine);
|
|
@@ -858,7 +864,7 @@
|
|
|
858
864
|
sessionManager._onUpdate();
|
|
859
865
|
this.inputManager._onUpdate();
|
|
860
866
|
this.cameraManager._onUpdate();
|
|
861
|
-
var
|
|
867
|
+
var features = this.features;
|
|
862
868
|
for(var i = 0, n = features.length; i < n; i++){
|
|
863
869
|
var feature = features[i];
|
|
864
870
|
feature.enabled && feature._onUpdate();
|
|
@@ -898,7 +904,7 @@
|
|
|
898
904
|
/**
|
|
899
905
|
* @internal
|
|
900
906
|
*/ _proto._onSessionStop = function _onSessionStop() {
|
|
901
|
-
var
|
|
907
|
+
var features = this.features;
|
|
902
908
|
for(var i = 0, n = features.length; i < n; i++){
|
|
903
909
|
var feature = features[i];
|
|
904
910
|
feature.enabled && feature._onSessionStop();
|
|
@@ -907,7 +913,7 @@
|
|
|
907
913
|
/**
|
|
908
914
|
* @internal
|
|
909
915
|
*/ _proto._onSessionInit = function _onSessionInit() {
|
|
910
|
-
var
|
|
916
|
+
var features = this.features;
|
|
911
917
|
for(var i = 0, n = features.length; i < n; i++){
|
|
912
918
|
var feature = features[i];
|
|
913
919
|
feature.enabled && feature._onSessionInit();
|
|
@@ -917,7 +923,7 @@
|
|
|
917
923
|
* @internal
|
|
918
924
|
*/ _proto._onSessionStart = function _onSessionStart() {
|
|
919
925
|
this.cameraManager._onSessionStart();
|
|
920
|
-
var
|
|
926
|
+
var features = this.features;
|
|
921
927
|
for(var i = 0, n = features.length; i < n; i++){
|
|
922
928
|
var feature = features[i];
|
|
923
929
|
feature.enabled && feature._onSessionStart();
|
|
@@ -927,7 +933,7 @@
|
|
|
927
933
|
* @internal
|
|
928
934
|
*/ _proto._onSessionExit = function _onSessionExit() {
|
|
929
935
|
this.cameraManager._onSessionExit();
|
|
930
|
-
var
|
|
936
|
+
var features = this.features;
|
|
931
937
|
for(var i = 0, n = features.length; i < n; i++){
|
|
932
938
|
var feature = features[i];
|
|
933
939
|
feature.enabled && feature._onSessionExit();
|
|
@@ -1033,10 +1039,137 @@
|
|
|
1033
1039
|
return XRFeature;
|
|
1034
1040
|
}();
|
|
1035
1041
|
/**
|
|
1036
|
-
*
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1042
|
+
* Enum for the types of hit test that can be performed.
|
|
1043
|
+
* Note: currently only supports plane.
|
|
1044
|
+
*/ var TrackableType;
|
|
1045
|
+
(function(TrackableType) {
|
|
1046
|
+
TrackableType[TrackableType[/** Tracked plane. */ "Plane"] = 0x1] = "Plane";
|
|
1047
|
+
TrackableType[TrackableType[/** All tracked objects. */ "All"] = 0x1] = "All";
|
|
1048
|
+
})(TrackableType || (TrackableType = {}));
|
|
1049
|
+
/**
|
|
1050
|
+
* XR hit result.
|
|
1051
|
+
* It is the detection result returned by using XR HitTest feature.
|
|
1052
|
+
*/ var XRHitResult = function XRHitResult() {
|
|
1053
|
+
/** The position of the hit point. */ this.point = new engine.Vector3();
|
|
1054
|
+
/** The normal of the hit point. */ this.normal = new engine.Vector3();
|
|
1055
|
+
};
|
|
1056
|
+
/******************************************************************************
|
|
1057
|
+
Copyright (c) Microsoft Corporation.
|
|
1058
|
+
|
|
1059
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
1060
|
+
purpose with or without fee is hereby granted.
|
|
1061
|
+
|
|
1062
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
1063
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
1064
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
1065
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
1066
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
1067
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
1068
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
1069
|
+
***************************************************************************** */ function __decorate(decorators, target, key, desc) {
|
|
1070
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1071
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
1073
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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
|
+
}
|
|
1170
|
+
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
1171
|
+
var e = new Error(message);
|
|
1172
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
1040
1173
|
};
|
|
1041
1174
|
var XRFeatureType;
|
|
1042
1175
|
(function(XRFeatureType) {
|
|
@@ -1188,44 +1321,6 @@
|
|
|
1188
1321
|
(function() {
|
|
1189
1322
|
XRTrackableFeature._uuid = 0;
|
|
1190
1323
|
})();
|
|
1191
|
-
/**
|
|
1192
|
-
* Enum for the types of hit test that can be performed.
|
|
1193
|
-
* Note: currently only supports plane.
|
|
1194
|
-
*/ var TrackableType;
|
|
1195
|
-
(function(TrackableType) {
|
|
1196
|
-
TrackableType[TrackableType[/** Tracked plane. */ "Plane"] = 0x1] = "Plane";
|
|
1197
|
-
TrackableType[TrackableType[/** All tracked objects. */ "All"] = 0x1] = "All";
|
|
1198
|
-
})(TrackableType || (TrackableType = {}));
|
|
1199
|
-
/**
|
|
1200
|
-
* XR hit result.
|
|
1201
|
-
* It is the detection result returned by using XR HitTest feature.
|
|
1202
|
-
*/ var XRHitResult = function XRHitResult() {
|
|
1203
|
-
/** The position of the hit point. */ this.point = new engine.Vector3();
|
|
1204
|
-
/** The normal of the hit point. */ this.normal = new engine.Vector3();
|
|
1205
|
-
};
|
|
1206
|
-
/******************************************************************************
|
|
1207
|
-
Copyright (c) Microsoft Corporation.
|
|
1208
|
-
|
|
1209
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
1210
|
-
purpose with or without fee is hereby granted.
|
|
1211
|
-
|
|
1212
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
1213
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
1214
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
1215
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
1216
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
1217
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
1218
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
1219
|
-
***************************************************************************** */ function __decorate(decorators, target, key, desc) {
|
|
1220
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1221
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1222
|
-
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;
|
|
1223
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1224
|
-
}
|
|
1225
|
-
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
1226
|
-
var e = new Error(message);
|
|
1227
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
1228
|
-
};
|
|
1229
1324
|
/**
|
|
1230
1325
|
* Enumerates modes of plane in XR.
|
|
1231
1326
|
*/ var XRPlaneMode;
|
|
@@ -1253,6 +1348,12 @@
|
|
|
1253
1348
|
_inherits(XRRequestPlane, XRRequestTracking1);
|
|
1254
1349
|
return XRRequestPlane;
|
|
1255
1350
|
}(XRRequestTracking);
|
|
1351
|
+
/**
|
|
1352
|
+
* The base class of XR tracked object.
|
|
1353
|
+
*/ var XRTracked = function XRTracked() {
|
|
1354
|
+
/** The pose of the trackable in XR space. */ this.pose = new XRPose();
|
|
1355
|
+
/** The tracking state of the trackable. */ this.state = XRTrackingState.NotTracking;
|
|
1356
|
+
};
|
|
1256
1357
|
/**
|
|
1257
1358
|
* The tracked plane in XR space.
|
|
1258
1359
|
*/ var XRTrackedPlane = /*#__PURE__*/ function(XRTracked1) {
|
|
@@ -1420,7 +1521,7 @@
|
|
|
1420
1521
|
], XRHitTest);
|
|
1421
1522
|
/**
|
|
1422
1523
|
* The anchor in XR space.
|
|
1423
|
-
*/ var XRAnchor = /*#__PURE__*/ function(XRTracked1) {
|
|
1524
|
+
*/ var XRAnchor$1 = /*#__PURE__*/ function(XRTracked1) {
|
|
1424
1525
|
var XRAnchor = function XRAnchor() {
|
|
1425
1526
|
return XRTracked1.apply(this, arguments);
|
|
1426
1527
|
};
|
|
@@ -1490,7 +1591,7 @@
|
|
|
1490
1591
|
this._removeAllRequestTrackings();
|
|
1491
1592
|
};
|
|
1492
1593
|
_proto._generateTracked = function _generateTracked() {
|
|
1493
|
-
var anchor = new XRAnchor();
|
|
1594
|
+
var anchor = new XRAnchor$1();
|
|
1494
1595
|
anchor.id = XRTrackableFeature._uuid++;
|
|
1495
1596
|
return anchor;
|
|
1496
1597
|
};
|
|
@@ -1583,6 +1684,256 @@
|
|
|
1583
1684
|
XRImageTracking = __decorate([
|
|
1584
1685
|
registerXRFeature(XRFeatureType.ImageTracking)
|
|
1585
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
|
+
}
|
|
1586
1937
|
|
|
1587
1938
|
function _is_native_reflect_construct() {
|
|
1588
1939
|
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
@@ -1748,6 +2099,15 @@
|
|
|
1748
2099
|
*/ MathUtil.degreeToRadian = function degreeToRadian(d) {
|
|
1749
2100
|
return d * MathUtil.degreeToRadFactor;
|
|
1750
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
|
+
};
|
|
1751
2111
|
return MathUtil;
|
|
1752
2112
|
}();
|
|
1753
2113
|
(function() {
|
|
@@ -6128,14 +6488,12 @@
|
|
|
6128
6488
|
switch(type){
|
|
6129
6489
|
case XRFeatureType.HitTest:
|
|
6130
6490
|
case XRFeatureType.PlaneTracking:
|
|
6131
|
-
|
|
6132
|
-
return !!window.XRPlane;
|
|
6491
|
+
return typeof XRPlane !== "undefined";
|
|
6133
6492
|
case XRFeatureType.AnchorTracking:
|
|
6134
|
-
|
|
6135
|
-
return !!window.XRAnchor;
|
|
6493
|
+
return typeof XRAnchor !== "undefined";
|
|
6136
6494
|
case XRFeatureType.ImageTracking:
|
|
6137
6495
|
// @ts-ignore
|
|
6138
|
-
return
|
|
6496
|
+
return typeof XRImageTrackingResult !== "undefined";
|
|
6139
6497
|
}
|
|
6140
6498
|
};
|
|
6141
6499
|
_proto.createPlatformFeature = function createPlatformFeature(type) {
|