@galacean/engine-xr 2.0.0-alpha.5 → 2.0.0-alpha.50
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 +51 -88
- 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 +51 -88
- package/dist/main.js.map +1 -1
- package/dist/module.js +52 -89
- package/dist/module.js.map +1 -1
- package/package.json +6 -5
- package/types/XRManagerExtended.d.ts +75 -5
- package/types/feature/XRFeature.d.ts +38 -0
- package/types/feature/camera/XRCameraManager.d.ts +29 -4
- package/types/feature/trackable/XRRequestTracking.d.ts +11 -1
- package/types/feature/trackable/XRTrackableFeature.d.ts +12 -10
- package/types/input/XRCamera.d.ts +3 -1
- package/types/input/XRInput.d.ts +4 -0
- package/types/input/XRInputManager.d.ts +26 -5
- package/types/session/XRSessionManager.d.ts +47 -8
package/dist/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect,
|
|
1
|
+
import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect, Signal, XRManager, Ray, Plane, Vector2, decoder, AssetPromise, resourceLoader, decode, Loader } from '@galacean/engine';
|
|
2
2
|
|
|
3
3
|
function _is_native_reflect_construct() {
|
|
4
4
|
// Since Reflect.construct can't be properly polyfilled, some
|
|
@@ -118,19 +118,15 @@ function _instanceof(left, right) {
|
|
|
118
118
|
var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
|
|
119
119
|
var preCamera = xrCamera._camera;
|
|
120
120
|
if (preCamera !== camera) {
|
|
121
|
-
// @ts-ignore
|
|
122
121
|
preCamera && (preCamera._cameraType = CameraType.Normal);
|
|
123
122
|
switch(type){
|
|
124
123
|
case XRTrackedInputDevice.Camera:
|
|
125
|
-
// @ts-ignore
|
|
126
124
|
camera._cameraType = CameraType.XRCenterCamera;
|
|
127
125
|
break;
|
|
128
126
|
case XRTrackedInputDevice.LeftCamera:
|
|
129
|
-
// @ts-ignore
|
|
130
127
|
camera._cameraType = CameraType.XRLeftCamera;
|
|
131
128
|
break;
|
|
132
129
|
case XRTrackedInputDevice.RightCamera:
|
|
133
|
-
// @ts-ignore
|
|
134
130
|
camera._cameraType = CameraType.XRRightCamera;
|
|
135
131
|
break;
|
|
136
132
|
}
|
|
@@ -144,7 +140,6 @@ function _instanceof(left, right) {
|
|
|
144
140
|
*/ _proto.detachCamera = function detachCamera(type) {
|
|
145
141
|
var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);
|
|
146
142
|
var preCamera = xrCamera._camera;
|
|
147
|
-
// @ts-ignore
|
|
148
143
|
preCamera && (preCamera._cameraType = CameraType.Normal);
|
|
149
144
|
xrCamera._camera = null;
|
|
150
145
|
return preCamera;
|
|
@@ -213,7 +208,7 @@ function _instanceof(left, right) {
|
|
|
213
208
|
{
|
|
214
209
|
key: "fixedFoveation",
|
|
215
210
|
get: /**
|
|
216
|
-
*
|
|
211
|
+
* Fixed foveation, or `undefined` if unsupported by the active session.
|
|
217
212
|
*/ function get() {
|
|
218
213
|
var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;
|
|
219
214
|
if (platformSession) {
|
|
@@ -341,13 +336,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
341
336
|
function XRInputManager(_xrManager, _engine) {
|
|
342
337
|
this._xrManager = _xrManager;
|
|
343
338
|
this._engine = _engine;
|
|
339
|
+
this.onTrackedDeviceChanged = new Signal();
|
|
344
340
|
this./** @internal */ _cameras = [];
|
|
345
341
|
this./** @internal */ _controllers = [];
|
|
346
342
|
this._added = [];
|
|
347
343
|
this._removed = [];
|
|
348
344
|
this._trackedDevices = [];
|
|
349
345
|
this._statusSnapshot = [];
|
|
350
|
-
this._listeners = new SafeLoopArray();
|
|
351
346
|
var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;
|
|
352
347
|
for(var i = 0; i < 6; i++){
|
|
353
348
|
switch(i){
|
|
@@ -374,22 +369,6 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
374
369
|
return this._trackedDevices[type];
|
|
375
370
|
};
|
|
376
371
|
/**
|
|
377
|
-
* Add a listener for tracked device changes.
|
|
378
|
-
* @param listener - The listener to add
|
|
379
|
-
*/ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
|
|
380
|
-
this._listeners.push({
|
|
381
|
-
fn: listener
|
|
382
|
-
});
|
|
383
|
-
};
|
|
384
|
-
/**
|
|
385
|
-
* Remove a listener of tracked device changes.
|
|
386
|
-
* @param listener - The listener to remove
|
|
387
|
-
*/ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
|
|
388
|
-
this._listeners.findAndRemove(function(value) {
|
|
389
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
390
|
-
});
|
|
391
|
-
};
|
|
392
|
-
/**
|
|
393
372
|
* @internal
|
|
394
373
|
*/ _proto._onUpdate = function _onUpdate() {
|
|
395
374
|
var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;
|
|
@@ -401,7 +380,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
401
380
|
controller.down = controller.up = 0;
|
|
402
381
|
}
|
|
403
382
|
// Handle events and update tracked devices
|
|
404
|
-
var
|
|
383
|
+
var platformSession = this._xrManager.sessionManager._platformSession;
|
|
405
384
|
var platformEvents = platformSession.events;
|
|
406
385
|
for(var i1 = 0, n1 = platformEvents.length; i1 < n1; i1++){
|
|
407
386
|
this._handleEvent(platformEvents[i1]);
|
|
@@ -425,19 +404,13 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
425
404
|
}
|
|
426
405
|
// Dispatch change event
|
|
427
406
|
if (added.length > 0 || removed.length > 0) {
|
|
428
|
-
|
|
429
|
-
for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){
|
|
430
|
-
var listener = listeners[i3];
|
|
431
|
-
!listener.destroyed && listener.fn(added, removed);
|
|
432
|
-
}
|
|
407
|
+
this.onTrackedDeviceChanged.invoke(added, removed);
|
|
433
408
|
}
|
|
434
409
|
};
|
|
435
410
|
/**
|
|
436
411
|
* @internal
|
|
437
412
|
*/ _proto._onDestroy = function _onDestroy() {
|
|
438
|
-
this.
|
|
439
|
-
return value.destroyed = true;
|
|
440
|
-
});
|
|
413
|
+
this.onTrackedDeviceChanged.removeAll();
|
|
441
414
|
};
|
|
442
415
|
_proto._handleEvent = function _handleEvent(event) {
|
|
443
416
|
var input = this._trackedDevices[event.input];
|
|
@@ -513,6 +486,18 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
513
486
|
}
|
|
514
487
|
return new PointerEvent(type, eventInitDict);
|
|
515
488
|
};
|
|
489
|
+
/**
|
|
490
|
+
* Add a listener for tracked device changes.
|
|
491
|
+
* @deprecated Use `onTrackedDeviceChanged.on(listener)` instead.
|
|
492
|
+
*/ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {
|
|
493
|
+
this.onTrackedDeviceChanged.on(listener);
|
|
494
|
+
};
|
|
495
|
+
/**
|
|
496
|
+
* Remove a listener of tracked device changes.
|
|
497
|
+
* @deprecated Use `onTrackedDeviceChanged.off(listener)` instead.
|
|
498
|
+
*/ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {
|
|
499
|
+
this.onTrackedDeviceChanged.off(listener);
|
|
500
|
+
};
|
|
516
501
|
return XRInputManager;
|
|
517
502
|
}();
|
|
518
503
|
|
|
@@ -531,10 +516,9 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
531
516
|
function XRSessionManager(_xrManager, _engine) {
|
|
532
517
|
this._xrManager = _xrManager;
|
|
533
518
|
this._engine = _engine;
|
|
519
|
+
this.onStateChanged = new Signal();
|
|
534
520
|
this._mode = XRSessionMode.None;
|
|
535
521
|
this._state = XRSessionState.None;
|
|
536
|
-
this._listeners = new SafeLoopArray();
|
|
537
|
-
// @ts-ignore
|
|
538
522
|
this._rhi = _engine._hardwareRenderer;
|
|
539
523
|
this._raf = requestAnimationFrame.bind(window);
|
|
540
524
|
this._caf = cancelAnimationFrame.bind(window);
|
|
@@ -584,30 +568,10 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
584
568
|
}
|
|
585
569
|
};
|
|
586
570
|
/**
|
|
587
|
-
* Add a listening function for session state changes.
|
|
588
|
-
* @param listener - The listening function
|
|
589
|
-
*/ _proto.addStateChangedListener = function addStateChangedListener(listener) {
|
|
590
|
-
this._listeners.push({
|
|
591
|
-
fn: listener
|
|
592
|
-
});
|
|
593
|
-
};
|
|
594
|
-
/**
|
|
595
|
-
* Remove a listening function of session state changes.
|
|
596
|
-
* @param listener - The listening function
|
|
597
|
-
*/ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
|
|
598
|
-
this._listeners.findAndRemove(function(value) {
|
|
599
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
600
|
-
});
|
|
601
|
-
};
|
|
602
|
-
/**
|
|
603
571
|
* @internal
|
|
604
572
|
*/ _proto._setState = function _setState(value) {
|
|
605
573
|
this._state = value;
|
|
606
|
-
|
|
607
|
-
for(var i = 0, n = listeners.length; i < n; i++){
|
|
608
|
-
var listener = listeners[i];
|
|
609
|
-
!listener.destroyed && listener.fn(value);
|
|
610
|
-
}
|
|
574
|
+
this.onStateChanged.invoke(value);
|
|
611
575
|
};
|
|
612
576
|
/**
|
|
613
577
|
* @internal
|
|
@@ -683,11 +647,21 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
683
647
|
/**
|
|
684
648
|
* @internal
|
|
685
649
|
*/ _proto._onDestroy = function _onDestroy() {
|
|
686
|
-
this.
|
|
687
|
-
return value.destroyed = true;
|
|
688
|
-
});
|
|
650
|
+
this.onStateChanged.removeAll();
|
|
689
651
|
this._raf = this._caf = null;
|
|
690
652
|
};
|
|
653
|
+
/**
|
|
654
|
+
* Add a listening function for session state changes.
|
|
655
|
+
* @deprecated Use `onStateChanged.on(listener)` instead.
|
|
656
|
+
*/ _proto.addStateChangedListener = function addStateChangedListener(listener) {
|
|
657
|
+
this.onStateChanged.on(listener);
|
|
658
|
+
};
|
|
659
|
+
/**
|
|
660
|
+
* Remove a listening function of session state changes.
|
|
661
|
+
* @deprecated Use `onStateChanged.off(listener)` instead.
|
|
662
|
+
*/ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {
|
|
663
|
+
this.onStateChanged.off(listener);
|
|
664
|
+
};
|
|
691
665
|
_create_class(XRSessionManager, [
|
|
692
666
|
{
|
|
693
667
|
key: "mode",
|
|
@@ -708,7 +682,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
708
682
|
{
|
|
709
683
|
key: "supportedFrameRate",
|
|
710
684
|
get: /**
|
|
711
|
-
*
|
|
685
|
+
* Supported frame rates, or `undefined` if unsupported. Only available in-session.
|
|
712
686
|
*/ function get() {
|
|
713
687
|
return this._platformSession.supportedFrameRates;
|
|
714
688
|
}
|
|
@@ -716,7 +690,7 @@ var XRTargetRayMode = /*#__PURE__*/ function(XRTargetRayMode) {
|
|
|
716
690
|
{
|
|
717
691
|
key: "frameRate",
|
|
718
692
|
get: /**
|
|
719
|
-
*
|
|
693
|
+
* Current frame rate, or `undefined` if unsupported. Only available in-session.
|
|
720
694
|
*/ function get() {
|
|
721
695
|
return this._platformSession.frameRate;
|
|
722
696
|
}
|
|
@@ -1003,28 +977,12 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
|
|
|
1003
977
|
_inherits(XRTrackableFeature, XRFeature);
|
|
1004
978
|
function XRTrackableFeature() {
|
|
1005
979
|
var _this;
|
|
1006
|
-
_this = XRFeature.apply(this, arguments) || this, _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {}
|
|
980
|
+
_this = XRFeature.apply(this, arguments) || this, /** Signal emitted when tracked objects change. */ _this.onChanged = new Signal(), _this._requestTrackings = [], _this._tracked = [], _this._added = [], _this._updated = [], _this._removed = [], _this._statusSnapshot = {};
|
|
1007
981
|
return _this;
|
|
1008
982
|
}
|
|
1009
983
|
var _proto = XRTrackableFeature.prototype;
|
|
1010
|
-
/**
|
|
1011
|
-
* Add a listening function for tracked object changes.
|
|
1012
|
-
* @param listener - The listening function
|
|
1013
|
-
*/ _proto.addChangedListener = function addChangedListener(listener) {
|
|
1014
|
-
this._listeners.push({
|
|
1015
|
-
fn: listener
|
|
1016
|
-
});
|
|
1017
|
-
};
|
|
1018
|
-
/**
|
|
1019
|
-
* Remove a listening function of tracked object changes.
|
|
1020
|
-
* @param listener - The listening function
|
|
1021
|
-
*/ _proto.removeChangedListener = function removeChangedListener(listener) {
|
|
1022
|
-
this._listeners.findAndRemove(function(value) {
|
|
1023
|
-
return value.fn === listener ? value.destroyed = true : false;
|
|
1024
|
-
});
|
|
1025
|
-
};
|
|
1026
984
|
_proto._onUpdate = function _onUpdate() {
|
|
1027
|
-
var
|
|
985
|
+
var platformSession = this._xrManager.sessionManager._platformSession;
|
|
1028
986
|
var platformFrame = platformSession.frame;
|
|
1029
987
|
var _this = this, platformFeature = _this._platformFeature, requestTrackings = _this._requestTrackings, statusSnapshot = _this._statusSnapshot, allTracked = _this._tracked, added = _this._added, updated = _this._updated, removed = _this._removed;
|
|
1030
988
|
if (!platformFrame || !requestTrackings.length) {
|
|
@@ -1078,11 +1036,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
|
|
|
1078
1036
|
requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);
|
|
1079
1037
|
}
|
|
1080
1038
|
if (added.length > 0 || updated.length > 0 || removed.length > 0) {
|
|
1081
|
-
|
|
1082
|
-
for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){
|
|
1083
|
-
var listener = listeners[i2];
|
|
1084
|
-
!listener.destroyed && listener.fn(added, updated, removed);
|
|
1085
|
-
}
|
|
1039
|
+
this.onChanged.invoke(added, updated, removed);
|
|
1086
1040
|
}
|
|
1087
1041
|
};
|
|
1088
1042
|
_proto._onSessionStop = function _onSessionStop() {
|
|
@@ -1091,9 +1045,7 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
|
|
|
1091
1045
|
_proto._onSessionExit = function _onSessionExit() {
|
|
1092
1046
|
// prettier-ignore
|
|
1093
1047
|
this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;
|
|
1094
|
-
this.
|
|
1095
|
-
return value.destroyed = true;
|
|
1096
|
-
});
|
|
1048
|
+
this.onChanged.removeAll();
|
|
1097
1049
|
};
|
|
1098
1050
|
_proto._addRequestTracking = function _addRequestTracking(requestTracking) {
|
|
1099
1051
|
var _this = this, platformFeature = _this._platformFeature;
|
|
@@ -1120,6 +1072,18 @@ var XRRequestTrackingState = /*#__PURE__*/ function(XRRequestTrackingState) {
|
|
|
1120
1072
|
platformFeature.onDelRequestTracking(requestTrackings[i]);
|
|
1121
1073
|
}
|
|
1122
1074
|
};
|
|
1075
|
+
/**
|
|
1076
|
+
* Add a listening function for tracked object changes.
|
|
1077
|
+
* @deprecated Use `onChanged.on(listener)` instead.
|
|
1078
|
+
*/ _proto.addChangedListener = function addChangedListener(listener) {
|
|
1079
|
+
this.onChanged.on(listener);
|
|
1080
|
+
};
|
|
1081
|
+
/**
|
|
1082
|
+
* Remove a listening function of tracked object changes.
|
|
1083
|
+
* @deprecated Use `onChanged.off(listener)` instead.
|
|
1084
|
+
*/ _proto.removeChangedListener = function removeChangedListener(listener) {
|
|
1085
|
+
this.onChanged.off(listener);
|
|
1086
|
+
};
|
|
1123
1087
|
return XRTrackableFeature;
|
|
1124
1088
|
}(XRFeature);
|
|
1125
1089
|
XRTrackableFeature._uuid = 0;
|
|
@@ -1578,8 +1542,7 @@ var XRReferenceImageLoader = /*#__PURE__*/ function(Loader) {
|
|
|
1578
1542
|
var _proto = XRReferenceImageLoader.prototype;
|
|
1579
1543
|
_proto.load = function load(item, resourceManager) {
|
|
1580
1544
|
return new AssetPromise(function(resolve, reject) {
|
|
1581
|
-
resourceManager
|
|
1582
|
-
._request(item.url, _extends({}, item, {
|
|
1545
|
+
resourceManager._request(item.url, _extends({}, item, {
|
|
1583
1546
|
type: "arraybuffer"
|
|
1584
1547
|
})).then(function(data) {
|
|
1585
1548
|
decode(data, resourceManager.engine).then(function(referenceImage) {
|