@galacean/engine-xr-webxr 2.0.0-alpha.5 → 2.0.0-alpha.51
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 +81 -106
- 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 +30 -18
- package/dist/main.js.map +1 -1
- package/dist/module.js +30 -18
- package/dist/module.js.map +1 -1
- package/package.json +7 -5
- package/types/Util.d.ts +1 -1
- package/types/WebXRDevice.d.ts +3 -1
- package/types/WebXRFrame.d.ts +2 -0
- package/types/WebXRSession.d.ts +11 -3
- package/types/feature/WebXRAnchorTracking.d.ts +4 -0
- package/types/feature/WebXRFeature.d.ts +8 -1
- package/types/feature/WebXRImageTracking.d.ts +4 -0
- package/types/feature/WebXRPlaneTracking.d.ts +4 -0
- package/types/feature/WebXRTrackableFeature.d.ts +14 -1
- package/types/index.d.ts +1 -0
package/dist/browser.js
CHANGED
|
@@ -189,19 +189,15 @@
|
|
|
189
189
|
var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
|
|
190
190
|
var preCamera = xrCamera._camera;
|
|
191
191
|
if (preCamera !== camera) {
|
|
192
|
-
// @ts-ignore
|
|
193
192
|
preCamera && (preCamera._cameraType = engine.CameraType.Normal);
|
|
194
193
|
switch(type){
|
|
195
194
|
case XRTrackedInputDevice.Camera:
|
|
196
|
-
// @ts-ignore
|
|
197
195
|
camera._cameraType = engine.CameraType.XRCenterCamera;
|
|
198
196
|
break;
|
|
199
197
|
case XRTrackedInputDevice.LeftCamera:
|
|
200
|
-
// @ts-ignore
|
|
201
198
|
camera._cameraType = engine.CameraType.XRLeftCamera;
|
|
202
199
|
break;
|
|
203
200
|
case XRTrackedInputDevice.RightCamera:
|
|
204
|
-
// @ts-ignore
|
|
205
201
|
camera._cameraType = engine.CameraType.XRRightCamera;
|
|
206
202
|
break;
|
|
207
203
|
}
|
|
@@ -215,7 +211,6 @@
|
|
|
215
211
|
*/ _proto.detachCamera = function detachCamera(type) {
|
|
216
212
|
var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
|
|
217
213
|
var preCamera = xrCamera._camera;
|
|
218
|
-
// @ts-ignore
|
|
219
214
|
preCamera && (preCamera._cameraType = engine.CameraType.Normal);
|
|
220
215
|
xrCamera._camera = null;
|
|
221
216
|
return preCamera;
|
|
@@ -283,7 +278,7 @@
|
|
|
283
278
|
{
|
|
284
279
|
key: "fixedFoveation",
|
|
285
280
|
get: /**
|
|
286
|
-
*
|
|
281
|
+
* Fixed foveation, or `undefined` if unsupported by the active session.
|
|
287
282
|
*/ function get() {
|
|
288
283
|
var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
|
|
289
284
|
if (platformSession) {
|
|
@@ -402,13 +397,13 @@
|
|
|
402
397
|
function XRInputManager(_xrManager, _engine) {
|
|
403
398
|
this._xrManager = _xrManager;
|
|
404
399
|
this._engine = _engine;
|
|
400
|
+
this.onTrackedDeviceChanged = new engine.Signal();
|
|
405
401
|
this./** @internal */ _cameras = [];
|
|
406
402
|
this./** @internal */ _controllers = [];
|
|
407
403
|
this._added = [];
|
|
408
404
|
this._removed = [];
|
|
409
405
|
this._trackedDevices = [];
|
|
410
406
|
this._statusSnapshot = [];
|
|
411
|
-
this._listeners = new engine.SafeLoopArray();
|
|
412
407
|
var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
|
|
413
408
|
for(var i = 0; i < 6; i++){
|
|
414
409
|
switch(i){
|
|
@@ -435,22 +430,6 @@
|
|
|
435
430
|
return this._trackedDevices[type];
|
|
436
431
|
};
|
|
437
432
|
/**
|
|
438
|
-
* Add a listener for tracked device changes.
|
|
439
|
-
* @param listener - The listener to add
|
|
440
|
-
*/ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
|
|
441
|
-
this._listeners.push({
|
|
442
|
-
fn: listener
|
|
443
|
-
});
|
|
444
|
-
};
|
|
445
|
-
/**
|
|
446
|
-
* Remove a listener of tracked device changes.
|
|
447
|
-
* @param listener - The listener to remove
|
|
448
|
-
*/ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
|
|
449
|
-
this._listeners.findAndRemove(function(value) {
|
|
450
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
451
|
-
});
|
|
452
|
-
};
|
|
453
|
-
/**
|
|
454
433
|
* @internal
|
|
455
434
|
*/ _proto._onUpdate = function _onUpdate() {
|
|
456
435
|
var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
|
|
@@ -462,7 +441,7 @@
|
|
|
462
441
|
controller.down = controller.up = 0;
|
|
463
442
|
}
|
|
464
443
|
// Handle events and update tracked devices
|
|
465
|
-
var
|
|
444
|
+
var platformSession = this._xrManager.sessionManager._platformSession;
|
|
466
445
|
var platformEvents = platformSession.events;
|
|
467
446
|
for(var i1 = 0, n1 = platformEvents.length; i1 < n1; i1++){
|
|
468
447
|
this._handleEvent(platformEvents[i1]);
|
|
@@ -486,19 +465,13 @@
|
|
|
486
465
|
}
|
|
487
466
|
// Dispatch change event
|
|
488
467
|
if (added.length > 0 || removed.length > 0) {
|
|
489
|
-
|
|
490
|
-
for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){
|
|
491
|
-
var listener = listeners[i3];
|
|
492
|
-
!listener.destroyed && listener.fn(added, removed);
|
|
493
|
-
}
|
|
468
|
+
this.onTrackedDeviceChanged.invoke(added, removed);
|
|
494
469
|
}
|
|
495
470
|
};
|
|
496
471
|
/**
|
|
497
472
|
* @internal
|
|
498
473
|
*/ _proto._onDestroy = function _onDestroy() {
|
|
499
|
-
this.
|
|
500
|
-
return value.destroyed = true;
|
|
501
|
-
});
|
|
474
|
+
this.onTrackedDeviceChanged.removeAll();
|
|
502
475
|
};
|
|
503
476
|
_proto._handleEvent = function _handleEvent(event) {
|
|
504
477
|
var input = this._trackedDevices[event.input];
|
|
@@ -574,6 +547,18 @@
|
|
|
574
547
|
}
|
|
575
548
|
return new PointerEvent(type, eventInitDict);
|
|
576
549
|
};
|
|
550
|
+
/**
|
|
551
|
+
* Add a listener for tracked device changes.
|
|
552
|
+
* @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
|
|
553
|
+
*/ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
|
|
554
|
+
this.onTrackedDeviceChanged.on(listener);
|
|
555
|
+
};
|
|
556
|
+
/**
|
|
557
|
+
* Remove a listener of tracked device changes.
|
|
558
|
+
* @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
|
|
559
|
+
*/ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
|
|
560
|
+
this.onTrackedDeviceChanged.off(listener);
|
|
561
|
+
};
|
|
577
562
|
return XRInputManager;
|
|
578
563
|
}();
|
|
579
564
|
/**
|
|
@@ -590,10 +575,9 @@
|
|
|
590
575
|
function XRSessionManager(_xrManager, _engine) {
|
|
591
576
|
this._xrManager = _xrManager;
|
|
592
577
|
this._engine = _engine;
|
|
578
|
+
this.onStateChanged = new engine.Signal();
|
|
593
579
|
this._mode = XRSessionMode.None;
|
|
594
580
|
this._state = XRSessionState.None;
|
|
595
|
-
this._listeners = new engine.SafeLoopArray();
|
|
596
|
-
// @ts-ignore
|
|
597
581
|
this._rhi = _engine._hardwareRenderer;
|
|
598
582
|
this._raf = requestAnimationFrame.bind(window);
|
|
599
583
|
this._caf = cancelAnimationFrame.bind(window);
|
|
@@ -643,30 +627,10 @@
|
|
|
643
627
|
}
|
|
644
628
|
};
|
|
645
629
|
/**
|
|
646
|
-
* Add a listening function for session state changes.
|
|
647
|
-
* @param listener - The listening function
|
|
648
|
-
*/ _proto.addStateChangedListener = function addStateChangedListener(listener) {
|
|
649
|
-
this._listeners.push({
|
|
650
|
-
fn: listener
|
|
651
|
-
});
|
|
652
|
-
};
|
|
653
|
-
/**
|
|
654
|
-
* Remove a listening function of session state changes.
|
|
655
|
-
* @param listener - The listening function
|
|
656
|
-
*/ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
|
|
657
|
-
this._listeners.findAndRemove(function(value) {
|
|
658
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
659
|
-
});
|
|
660
|
-
};
|
|
661
|
-
/**
|
|
662
630
|
* @internal
|
|
663
631
|
*/ _proto._setState = function _setState(value) {
|
|
664
632
|
this._state = value;
|
|
665
|
-
|
|
666
|
-
for(var i = 0, n = listeners.length; i < n; i++){
|
|
667
|
-
var listener = listeners[i];
|
|
668
|
-
!listener.destroyed && listener.fn(value);
|
|
669
|
-
}
|
|
633
|
+
this.onStateChanged.invoke(value);
|
|
670
634
|
};
|
|
671
635
|
/**
|
|
672
636
|
* @internal
|
|
@@ -742,11 +706,21 @@
|
|
|
742
706
|
/**
|
|
743
707
|
* @internal
|
|
744
708
|
*/ _proto._onDestroy = function _onDestroy() {
|
|
745
|
-
this.
|
|
746
|
-
return value.destroyed = true;
|
|
747
|
-
});
|
|
709
|
+
this.onStateChanged.removeAll();
|
|
748
710
|
this._raf = this._caf = null;
|
|
749
711
|
};
|
|
712
|
+
/**
|
|
713
|
+
* Add a listening function for session state changes.
|
|
714
|
+
* @deprecated Use `onStateChanged.on(listener)` instead.
|
|
715
|
+
*/ _proto.addStateChangedListener = function addStateChangedListener(listener) {
|
|
716
|
+
this.onStateChanged.on(listener);
|
|
717
|
+
};
|
|
718
|
+
/**
|
|
719
|
+
* Remove a listening function of session state changes.
|
|
720
|
+
* @deprecated Use `onStateChanged.off(listener)` instead.
|
|
721
|
+
*/ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
|
|
722
|
+
this.onStateChanged.off(listener);
|
|
723
|
+
};
|
|
750
724
|
_create_class$1(XRSessionManager, [
|
|
751
725
|
{
|
|
752
726
|
key: "mode",
|
|
@@ -767,7 +741,7 @@
|
|
|
767
741
|
{
|
|
768
742
|
key: "supportedFrameRate",
|
|
769
743
|
get: /**
|
|
770
|
-
*
|
|
744
|
+
* Supported frame rates, or `undefined` if unsupported. Only available in-session.
|
|
771
745
|
*/ function get() {
|
|
772
746
|
return this._platformSession.supportedFrameRates;
|
|
773
747
|
}
|
|
@@ -775,7 +749,7 @@
|
|
|
775
749
|
{
|
|
776
750
|
key: "frameRate",
|
|
777
751
|
get: /**
|
|
778
|
-
*
|
|
752
|
+
* Current frame rate, or `undefined` if unsupported. Only available in-session.
|
|
779
753
|
*/ function get() {
|
|
780
754
|
return this._platformSession.frameRate;
|
|
781
755
|
}
|
|
@@ -1057,28 +1031,12 @@
|
|
|
1057
1031
|
_inherits(XRTrackableFeature, XRFeature);
|
|
1058
1032
|
function XRTrackableFeature() {
|
|
1059
1033
|
var _this;
|
|
1060
|
-
_this = XRFeature.apply(this, arguments) || this, _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {}
|
|
1034
|
+
_this = XRFeature.apply(this, arguments) || this, /** Signal emitted when tracked objects change. */ _this.onChanged = new engine.Signal(), _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {};
|
|
1061
1035
|
return _this;
|
|
1062
1036
|
}
|
|
1063
1037
|
var _proto = XRTrackableFeature.prototype;
|
|
1064
|
-
/**
|
|
1065
|
-
* Add a listening function for tracked object changes.
|
|
1066
|
-
* @param listener - The listening function
|
|
1067
|
-
*/ _proto.addChangedListener = function addChangedListener(listener) {
|
|
1068
|
-
this._listeners.push({
|
|
1069
|
-
fn: listener
|
|
1070
|
-
});
|
|
1071
|
-
};
|
|
1072
|
-
/**
|
|
1073
|
-
* Remove a listening function of tracked object changes.
|
|
1074
|
-
* @param listener - The listening function
|
|
1075
|
-
*/ _proto.removeChangedListener = function removeChangedListener(listener) {
|
|
1076
|
-
this._listeners.findAndRemove(function(value) {
|
|
1077
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
1078
|
-
});
|
|
1079
|
-
};
|
|
1080
1038
|
_proto._onUpdate = function _onUpdate() {
|
|
1081
|
-
var
|
|
1039
|
+
var platformSession = this._xrManager.sessionManager._platformSession;
|
|
1082
1040
|
var platformFrame = platformSession.frame;
|
|
1083
1041
|
var _this = this, platformFeature = _this._platformFeature, requestTrackings = _this._requestTrackings, statusSnapshot = _this._statusSnapshot, allTracked = _this._tracked, added = _this._added, updated = _this._updated, removed = _this._removed;
|
|
1084
1042
|
if (!platformFrame || !requestTrackings.length) {
|
|
@@ -1132,11 +1090,7 @@
|
|
|
1132
1090
|
requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
|
|
1133
1091
|
}
|
|
1134
1092
|
if (added.length > 0 || updated.length > 0 || removed.length > 0) {
|
|
1135
|
-
|
|
1136
|
-
for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){
|
|
1137
|
-
var listener = listeners[i2];
|
|
1138
|
-
!listener.destroyed && listener.fn(added, updated, removed);
|
|
1139
|
-
}
|
|
1093
|
+
this.onChanged.invoke(added, updated, removed);
|
|
1140
1094
|
}
|
|
1141
1095
|
};
|
|
1142
1096
|
_proto._onSessionStop = function _onSessionStop() {
|
|
@@ -1145,9 +1099,7 @@
|
|
|
1145
1099
|
_proto._onSessionExit = function _onSessionExit() {
|
|
1146
1100
|
// prettier-ignore
|
|
1147
1101
|
this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;
|
|
1148
|
-
this.
|
|
1149
|
-
return value.destroyed = true;
|
|
1150
|
-
});
|
|
1102
|
+
this.onChanged.removeAll();
|
|
1151
1103
|
};
|
|
1152
1104
|
_proto._addRequestTracking = function _addRequestTracking(requestTracking) {
|
|
1153
1105
|
var _this = this, platformFeature = _this._platformFeature;
|
|
@@ -1174,6 +1126,18 @@
|
|
|
1174
1126
|
platformFeature.onDelRequestTracking(requestTrackings[i]);
|
|
1175
1127
|
}
|
|
1176
1128
|
};
|
|
1129
|
+
/**
|
|
1130
|
+
* Add a listening function for tracked object changes.
|
|
1131
|
+
* @deprecated Use `onChanged.on(listener)` instead.
|
|
1132
|
+
*/ _proto.addChangedListener = function addChangedListener(listener) {
|
|
1133
|
+
this.onChanged.on(listener);
|
|
1134
|
+
};
|
|
1135
|
+
/**
|
|
1136
|
+
* Remove a listening function of tracked object changes.
|
|
1137
|
+
* @deprecated Use `onChanged.off(listener)` instead.
|
|
1138
|
+
*/ _proto.removeChangedListener = function removeChangedListener(listener) {
|
|
1139
|
+
this.onChanged.off(listener);
|
|
1140
|
+
};
|
|
1177
1141
|
return XRTrackableFeature;
|
|
1178
1142
|
}(XRFeature);
|
|
1179
1143
|
XRTrackableFeature._uuid = 0;
|
|
@@ -1607,8 +1571,7 @@
|
|
|
1607
1571
|
var _proto = XRReferenceImageLoader.prototype;
|
|
1608
1572
|
_proto.load = function load(item, resourceManager) {
|
|
1609
1573
|
return new engine.AssetPromise(function(resolve, reject) {
|
|
1610
|
-
resourceManager
|
|
1611
|
-
._request(item.url, _extends({}, item, {
|
|
1574
|
+
resourceManager._request(item.url, _extends({}, item, {
|
|
1612
1575
|
type: "arraybuffer"
|
|
1613
1576
|
})).then(function(data) {
|
|
1614
1577
|
engine.decode(data, resourceManager.engine).then(function(referenceImage) {
|
|
@@ -2136,13 +2099,16 @@
|
|
|
2136
2099
|
* Converts the vector into a unit vector.
|
|
2137
2100
|
* @param a - The vector to normalize
|
|
2138
2101
|
* @param out - The normalized vector
|
|
2102
|
+
* @returns True if the vector has a unit form, otherwise false and `out` is left untouched
|
|
2139
2103
|
*/ Vector3.normalize = function normalize(a, out) {
|
|
2140
2104
|
var _x = a._x, _y = a._y, _z = a._z;
|
|
2141
2105
|
var len = Math.sqrt(_x * _x + _y * _y + _z * _z);
|
|
2142
|
-
if (len > MathUtil.zeroTolerance) {
|
|
2143
|
-
|
|
2144
|
-
out.set(_x *
|
|
2106
|
+
if (len > MathUtil.zeroTolerance && Number.isFinite(len)) {
|
|
2107
|
+
var inv = 1 / len;
|
|
2108
|
+
out.set(_x * inv, _y * inv, _z * inv);
|
|
2109
|
+
return true;
|
|
2145
2110
|
}
|
|
2111
|
+
return false;
|
|
2146
2112
|
};
|
|
2147
2113
|
/**
|
|
2148
2114
|
* Scale a vector by the given value.
|
|
@@ -2288,8 +2254,6 @@
|
|
|
2288
2254
|
new Vector3();
|
|
2289
2255
|
new Vector3();
|
|
2290
2256
|
new Vector3();
|
|
2291
|
-
new Vector3();
|
|
2292
|
-
new Vector3();
|
|
2293
2257
|
/**
|
|
2294
2258
|
* Represents a 3x3 mathematical matrix.
|
|
2295
2259
|
*/ var Matrix3x3 = /*#__PURE__*/ function() {
|
|
@@ -2674,6 +2638,7 @@
|
|
|
2674
2638
|
* Calculate the inverse of the specified matrix.
|
|
2675
2639
|
* @param a - The matrix whose inverse is to be calculated
|
|
2676
2640
|
* @param out - The inverse of the specified matrix
|
|
2641
|
+
* @returns Null if the matrix is singular; otherwise undefined
|
|
2677
2642
|
*/ Matrix3x3.invert = function invert(a, out) {
|
|
2678
2643
|
var ae = a.elements;
|
|
2679
2644
|
var oe = out.elements;
|
|
@@ -4143,6 +4108,7 @@
|
|
|
4143
4108
|
* Calculate the inverse of the specified matrix.
|
|
4144
4109
|
* @param a - The matrix whose inverse is to be calculated
|
|
4145
4110
|
* @param out - The inverse of the specified matrix
|
|
4111
|
+
* @returns Null if the matrix is singular; otherwise undefined
|
|
4146
4112
|
*/ Matrix.invert = function invert(a, out) {
|
|
4147
4113
|
var ae = a.elements;
|
|
4148
4114
|
var oe = out.elements;
|
|
@@ -4449,7 +4415,7 @@
|
|
|
4449
4415
|
this._updateCamera(inputs);
|
|
4450
4416
|
};
|
|
4451
4417
|
_proto._updateController = function _updateController(inputs) {
|
|
4452
|
-
var
|
|
4418
|
+
var frame = this._platformFrame;
|
|
4453
4419
|
var _this__session = this._session, session = _this__session._platformSession, referenceSpace = _this__session._platformReferenceSpace;
|
|
4454
4420
|
var inputSources = session.inputSources;
|
|
4455
4421
|
for(var i = 0, n = inputSources.length; i < n; i++){
|
|
@@ -4461,31 +4427,33 @@
|
|
|
4461
4427
|
case "tracked-pointer":
|
|
4462
4428
|
var gripSpace = inputSource.gripSpace, targetRaySpace = inputSource.targetRaySpace;
|
|
4463
4429
|
if (gripSpace) {
|
|
4464
|
-
var
|
|
4465
|
-
if (
|
|
4430
|
+
var pose = frame.getPose(gripSpace, referenceSpace);
|
|
4431
|
+
if (pose) {
|
|
4432
|
+
var transform = pose.transform;
|
|
4466
4433
|
var gripPose = input.gripPose;
|
|
4467
4434
|
gripPose.matrix.copyFromArray(transform.matrix);
|
|
4468
4435
|
gripPose.position.copyFrom(transform.position);
|
|
4469
4436
|
gripPose.rotation.copyFrom(transform.orientation);
|
|
4470
4437
|
}
|
|
4471
|
-
input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
4438
|
+
input.trackingState = !pose || pose.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
4472
4439
|
}
|
|
4473
4440
|
if (targetRaySpace) {
|
|
4474
|
-
var
|
|
4475
|
-
if (
|
|
4441
|
+
var pose1 = frame.getPose(targetRaySpace, referenceSpace);
|
|
4442
|
+
if (pose1) {
|
|
4443
|
+
var transform1 = pose1.transform;
|
|
4476
4444
|
var targetRayPose = input.targetRayPose;
|
|
4477
4445
|
targetRayPose.matrix.copyFromArray(transform1.matrix);
|
|
4478
4446
|
targetRayPose.position.copyFrom(transform1.position);
|
|
4479
4447
|
targetRayPose.rotation.copyFrom(transform1.orientation);
|
|
4480
|
-
input.trackingState = emulatedPosition1 ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
4481
4448
|
}
|
|
4449
|
+
input.trackingState = !pose1 || pose1.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
4482
4450
|
}
|
|
4483
4451
|
break;
|
|
4484
4452
|
}
|
|
4485
4453
|
}
|
|
4486
4454
|
};
|
|
4487
4455
|
_proto._updateCamera = function _updateCamera(inputs) {
|
|
4488
|
-
var
|
|
4456
|
+
var frame = this._platformFrame;
|
|
4489
4457
|
var _this__session = this._session, referenceSpace = _this__session._platformReferenceSpace, layer = _this__session._platformLayer, framebufferWidth = _this__session.framebufferWidth, framebufferHeight = _this__session.framebufferHeight;
|
|
4490
4458
|
var viewerPose = frame.getViewerPose(referenceSpace);
|
|
4491
4459
|
if (viewerPose) {
|
|
@@ -4760,6 +4728,8 @@
|
|
|
4760
4728
|
case XRFeatureType.ImageTracking:
|
|
4761
4729
|
// @ts-ignore
|
|
4762
4730
|
return typeof XRImageTrackingResult !== "undefined";
|
|
4731
|
+
default:
|
|
4732
|
+
return false;
|
|
4763
4733
|
}
|
|
4764
4734
|
};
|
|
4765
4735
|
_proto.createPlatformFeature = function createPlatformFeature(type) {
|
|
@@ -4789,11 +4759,12 @@
|
|
|
4789
4759
|
var attributes = gl.getContextAttributes();
|
|
4790
4760
|
if (!attributes) {
|
|
4791
4761
|
reject(Error("GetContextAttributes Error!"));
|
|
4762
|
+
return;
|
|
4792
4763
|
}
|
|
4793
4764
|
gl.makeXRCompatible().then(function() {
|
|
4794
4765
|
var scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
|
|
4795
4766
|
var layer;
|
|
4796
|
-
if (session.renderState.layers === undefined ||
|
|
4767
|
+
if (session.renderState.layers === undefined || !rhi.isWebGL2) {
|
|
4797
4768
|
var layerInit = {
|
|
4798
4769
|
antialias: session.renderState.layers === undefined ? attributes.antialias : true,
|
|
4799
4770
|
alpha: true,
|
|
@@ -4951,6 +4922,7 @@
|
|
|
4951
4922
|
_proto._updateTrackedAnchor = function _updateTrackedAnchor(frame, space, requestTracking) {
|
|
4952
4923
|
var xrAnchor = requestTracking.xrAnchor;
|
|
4953
4924
|
var xrPose = frame.getPose(xrAnchor.anchorSpace, space);
|
|
4925
|
+
if (!xrPose) return true;
|
|
4954
4926
|
var transform = xrPose.transform;
|
|
4955
4927
|
var pose = requestTracking.tracked[0].pose;
|
|
4956
4928
|
pose.matrix.copyFromArray(transform.matrix);
|
|
@@ -5010,8 +4982,7 @@
|
|
|
5010
4982
|
tracked.referenceImage = requestTrackingImage.image;
|
|
5011
4983
|
}
|
|
5012
4984
|
if (trackingResult.trackingState === "tracked") {
|
|
5013
|
-
this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);
|
|
5014
|
-
tracked.state = XRTrackingState.Tracking;
|
|
4985
|
+
tracked.state = this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult) ? XRTrackingState.Tracking : XRTrackingState.TrackingLost;
|
|
5015
4986
|
} else {
|
|
5016
4987
|
tracked.state = XRTrackingState.TrackingLost;
|
|
5017
4988
|
}
|
|
@@ -5082,11 +5053,14 @@
|
|
|
5082
5053
|
};
|
|
5083
5054
|
_proto._updateTrackedImage = function _updateTrackedImage(frame, space, trackedImage, trackingResult) {
|
|
5084
5055
|
var pose = trackedImage.pose;
|
|
5085
|
-
var
|
|
5056
|
+
var xrPose = frame.getPose(trackingResult.imageSpace, space);
|
|
5057
|
+
if (!xrPose) return false;
|
|
5058
|
+
var transform = xrPose.transform;
|
|
5086
5059
|
pose.matrix.copyFromArray(transform.matrix);
|
|
5087
5060
|
pose.rotation.copyFrom(transform.orientation);
|
|
5088
5061
|
pose.position.copyFrom(transform.position);
|
|
5089
5062
|
trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;
|
|
5063
|
+
return true;
|
|
5090
5064
|
};
|
|
5091
5065
|
return WebXRImageTracking;
|
|
5092
5066
|
}(WebXRTrackableFeature);
|
|
@@ -5146,7 +5120,8 @@
|
|
|
5146
5120
|
options.optionalFeatures.push("plane-detection");
|
|
5147
5121
|
};
|
|
5148
5122
|
_proto._updatePlane = function _updatePlane(frame, space, trackedPlane) {
|
|
5149
|
-
var pose = trackedPlane.pose, polygon = trackedPlane.polygon
|
|
5123
|
+
var pose = trackedPlane.pose, polygon = trackedPlane.polygon;
|
|
5124
|
+
var xrPlane = trackedPlane.xrPlane;
|
|
5150
5125
|
var planePose = frame.getPose(xrPlane.planeSpace, space);
|
|
5151
5126
|
if (!planePose) return;
|
|
5152
5127
|
var transform = planePose.transform, emulatedPosition = planePose.emulatedPosition;
|