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