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