@galacean/engine-xr-webxr 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/main.js CHANGED
@@ -582,13 +582,16 @@ function _create_class(Constructor, protoProps, staticProps) {
582
582
  * Converts the vector into a unit vector.
583
583
  * @param a - The vector to normalize
584
584
  * @param out - The normalized vector
585
+ * @returns True if the vector has a unit form, otherwise false and `out` is left untouched
585
586
  */ Vector3.normalize = function normalize(a, out) {
586
587
  var _x = a._x, _y = a._y, _z = a._z;
587
588
  var len = Math.sqrt(_x * _x + _y * _y + _z * _z);
588
- if (len > MathUtil.zeroTolerance) {
589
- len = 1 / len;
590
- out.set(_x * len, _y * len, _z * len);
589
+ if (len > MathUtil.zeroTolerance && Number.isFinite(len)) {
590
+ var inv = 1 / len;
591
+ out.set(_x * inv, _y * inv, _z * inv);
592
+ return true;
591
593
  }
594
+ return false;
592
595
  };
593
596
  /**
594
597
  * Scale a vector by the given value.
@@ -734,8 +737,6 @@ new Vector3();
734
737
  new Vector3();
735
738
  new Vector3();
736
739
  new Vector3();
737
- new Vector3();
738
- new Vector3();
739
740
  /**
740
741
  * Represents a 3x3 mathematical matrix.
741
742
  */ var Matrix3x3 = /*#__PURE__*/ function() {
@@ -1120,6 +1121,7 @@ new Vector3();
1120
1121
  * Calculate the inverse of the specified matrix.
1121
1122
  * @param a - The matrix whose inverse is to be calculated
1122
1123
  * @param out - The inverse of the specified matrix
1124
+ * @returns Null if the matrix is singular; otherwise undefined
1123
1125
  */ Matrix3x3.invert = function invert(a, out) {
1124
1126
  var ae = a.elements;
1125
1127
  var oe = out.elements;
@@ -2589,6 +2591,7 @@ new Vector3();
2589
2591
  * Calculate the inverse of the specified matrix.
2590
2592
  * @param a - The matrix whose inverse is to be calculated
2591
2593
  * @param out - The inverse of the specified matrix
2594
+ * @returns Null if the matrix is singular; otherwise undefined
2592
2595
  */ Matrix.invert = function invert(a, out) {
2593
2596
  var ae = a.elements;
2594
2597
  var oe = out.elements;
@@ -2895,7 +2898,7 @@ var WebXRFrame = /*#__PURE__*/ function() {
2895
2898
  this._updateCamera(inputs);
2896
2899
  };
2897
2900
  _proto._updateController = function _updateController(inputs) {
2898
- var _this = this, frame = _this._platformFrame;
2901
+ var frame = this._platformFrame;
2899
2902
  var _this__session = this._session, session = _this__session._platformSession, referenceSpace = _this__session._platformReferenceSpace;
2900
2903
  var inputSources = session.inputSources;
2901
2904
  for(var i = 0, n = inputSources.length; i < n; i++){
@@ -2907,31 +2910,33 @@ var WebXRFrame = /*#__PURE__*/ function() {
2907
2910
  case "tracked-pointer":
2908
2911
  var gripSpace = inputSource.gripSpace, targetRaySpace = inputSource.targetRaySpace;
2909
2912
  if (gripSpace) {
2910
- var _frame_getPose = frame.getPose(gripSpace, referenceSpace), transform = _frame_getPose.transform, emulatedPosition = _frame_getPose.emulatedPosition;
2911
- if (transform) {
2913
+ var pose = frame.getPose(gripSpace, referenceSpace);
2914
+ if (pose) {
2915
+ var transform = pose.transform;
2912
2916
  var gripPose = input.gripPose;
2913
2917
  gripPose.matrix.copyFromArray(transform.matrix);
2914
2918
  gripPose.position.copyFrom(transform.position);
2915
2919
  gripPose.rotation.copyFrom(transform.orientation);
2916
2920
  }
2917
- input.trackingState = emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2921
+ input.trackingState = !pose || pose.emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2918
2922
  }
2919
2923
  if (targetRaySpace) {
2920
- var _frame_getPose1 = frame.getPose(targetRaySpace, referenceSpace), transform1 = _frame_getPose1.transform, emulatedPosition1 = _frame_getPose1.emulatedPosition;
2921
- if (transform1) {
2924
+ var pose1 = frame.getPose(targetRaySpace, referenceSpace);
2925
+ if (pose1) {
2926
+ var transform1 = pose1.transform;
2922
2927
  var targetRayPose = input.targetRayPose;
2923
2928
  targetRayPose.matrix.copyFromArray(transform1.matrix);
2924
2929
  targetRayPose.position.copyFrom(transform1.position);
2925
2930
  targetRayPose.rotation.copyFrom(transform1.orientation);
2926
- input.trackingState = emulatedPosition1 ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2927
2931
  }
2932
+ input.trackingState = !pose1 || pose1.emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2928
2933
  }
2929
2934
  break;
2930
2935
  }
2931
2936
  }
2932
2937
  };
2933
2938
  _proto._updateCamera = function _updateCamera(inputs) {
2934
- var _this = this, frame = _this._platformFrame;
2939
+ var frame = this._platformFrame;
2935
2940
  var _this__session = this._session, referenceSpace = _this__session._platformReferenceSpace, layer = _this__session._platformLayer, framebufferWidth = _this__session.framebufferWidth, framebufferHeight = _this__session.framebufferHeight;
2936
2941
  var viewerPose = frame.getViewerPose(referenceSpace);
2937
2942
  if (viewerPose) {
@@ -3206,6 +3211,8 @@ var WebXRDevice = /*#__PURE__*/ function() {
3206
3211
  case engineXr.XRFeatureType.ImageTracking:
3207
3212
  // @ts-ignore
3208
3213
  return typeof XRImageTrackingResult !== "undefined";
3214
+ default:
3215
+ return false;
3209
3216
  }
3210
3217
  };
3211
3218
  _proto.createPlatformFeature = function createPlatformFeature(type) {
@@ -3235,11 +3242,12 @@ var WebXRDevice = /*#__PURE__*/ function() {
3235
3242
  var attributes = gl.getContextAttributes();
3236
3243
  if (!attributes) {
3237
3244
  reject(Error("GetContextAttributes Error!"));
3245
+ return;
3238
3246
  }
3239
3247
  gl.makeXRCompatible().then(function() {
3240
3248
  var scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
3241
3249
  var layer;
3242
- if (session.renderState.layers === undefined || !!!rhi.isWebGL2) {
3250
+ if (session.renderState.layers === undefined || !rhi.isWebGL2) {
3243
3251
  var layerInit = {
3244
3252
  antialias: session.renderState.layers === undefined ? attributes.antialias : true,
3245
3253
  alpha: true,
@@ -3397,6 +3405,7 @@ var WebXRAnchorTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3397
3405
  _proto._updateTrackedAnchor = function _updateTrackedAnchor(frame, space, requestTracking) {
3398
3406
  var xrAnchor = requestTracking.xrAnchor;
3399
3407
  var xrPose = frame.getPose(xrAnchor.anchorSpace, space);
3408
+ if (!xrPose) return true;
3400
3409
  var transform = xrPose.transform;
3401
3410
  var pose = requestTracking.tracked[0].pose;
3402
3411
  pose.matrix.copyFromArray(transform.matrix);
@@ -3456,8 +3465,7 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3456
3465
  tracked.referenceImage = requestTrackingImage.image;
3457
3466
  }
3458
3467
  if (trackingResult.trackingState === "tracked") {
3459
- this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);
3460
- tracked.state = engineXr.XRTrackingState.Tracking;
3468
+ tracked.state = this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult) ? engineXr.XRTrackingState.Tracking : engineXr.XRTrackingState.TrackingLost;
3461
3469
  } else {
3462
3470
  tracked.state = engineXr.XRTrackingState.TrackingLost;
3463
3471
  }
@@ -3528,11 +3536,14 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3528
3536
  };
3529
3537
  _proto._updateTrackedImage = function _updateTrackedImage(frame, space, trackedImage, trackingResult) {
3530
3538
  var pose = trackedImage.pose;
3531
- var transform = frame.getPose(trackingResult.imageSpace, space).transform;
3539
+ var xrPose = frame.getPose(trackingResult.imageSpace, space);
3540
+ if (!xrPose) return false;
3541
+ var transform = xrPose.transform;
3532
3542
  pose.matrix.copyFromArray(transform.matrix);
3533
3543
  pose.rotation.copyFrom(transform.orientation);
3534
3544
  pose.position.copyFrom(transform.position);
3535
3545
  trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;
3546
+ return true;
3536
3547
  };
3537
3548
  return WebXRImageTracking;
3538
3549
  }(WebXRTrackableFeature);
@@ -3592,7 +3603,8 @@ var WebXRPlaneTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3592
3603
  options.optionalFeatures.push("plane-detection");
3593
3604
  };
3594
3605
  _proto._updatePlane = function _updatePlane(frame, space, trackedPlane) {
3595
- var pose = trackedPlane.pose, polygon = trackedPlane.polygon, xrPlane = trackedPlane.xrPlane;
3606
+ var pose = trackedPlane.pose, polygon = trackedPlane.polygon;
3607
+ var xrPlane = trackedPlane.xrPlane;
3596
3608
  var planePose = frame.getPose(xrPlane.planeSpace, space);
3597
3609
  if (!planePose) return;
3598
3610
  var transform = planePose.transform, emulatedPosition = planePose.emulatedPosition;