@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/module.js CHANGED
@@ -578,13 +578,16 @@ function _create_class(Constructor, protoProps, staticProps) {
578
578
  * Converts the vector into a unit vector.
579
579
  * @param a - The vector to normalize
580
580
  * @param out - The normalized vector
581
+ * @returns True if the vector has a unit form, otherwise false and `out` is left untouched
581
582
  */ Vector3.normalize = function normalize(a, out) {
582
583
  var _x = a._x, _y = a._y, _z = a._z;
583
584
  var len = Math.sqrt(_x * _x + _y * _y + _z * _z);
584
- if (len > MathUtil.zeroTolerance) {
585
- len = 1 / len;
586
- out.set(_x * len, _y * len, _z * len);
585
+ if (len > MathUtil.zeroTolerance && Number.isFinite(len)) {
586
+ var inv = 1 / len;
587
+ out.set(_x * inv, _y * inv, _z * inv);
588
+ return true;
587
589
  }
590
+ return false;
588
591
  };
589
592
  /**
590
593
  * Scale a vector by the given value.
@@ -730,8 +733,6 @@ new Vector3();
730
733
  new Vector3();
731
734
  new Vector3();
732
735
  new Vector3();
733
- new Vector3();
734
- new Vector3();
735
736
  /**
736
737
  * Represents a 3x3 mathematical matrix.
737
738
  */ var Matrix3x3 = /*#__PURE__*/ function() {
@@ -1116,6 +1117,7 @@ new Vector3();
1116
1117
  * Calculate the inverse of the specified matrix.
1117
1118
  * @param a - The matrix whose inverse is to be calculated
1118
1119
  * @param out - The inverse of the specified matrix
1120
+ * @returns Null if the matrix is singular; otherwise undefined
1119
1121
  */ Matrix3x3.invert = function invert(a, out) {
1120
1122
  var ae = a.elements;
1121
1123
  var oe = out.elements;
@@ -2585,6 +2587,7 @@ new Vector3();
2585
2587
  * Calculate the inverse of the specified matrix.
2586
2588
  * @param a - The matrix whose inverse is to be calculated
2587
2589
  * @param out - The inverse of the specified matrix
2590
+ * @returns Null if the matrix is singular; otherwise undefined
2588
2591
  */ Matrix.invert = function invert(a, out) {
2589
2592
  var ae = a.elements;
2590
2593
  var oe = out.elements;
@@ -2891,7 +2894,7 @@ var WebXRFrame = /*#__PURE__*/ function() {
2891
2894
  this._updateCamera(inputs);
2892
2895
  };
2893
2896
  _proto._updateController = function _updateController(inputs) {
2894
- var _this = this, frame = _this._platformFrame;
2897
+ var frame = this._platformFrame;
2895
2898
  var _this__session = this._session, session = _this__session._platformSession, referenceSpace = _this__session._platformReferenceSpace;
2896
2899
  var inputSources = session.inputSources;
2897
2900
  for(var i = 0, n = inputSources.length; i < n; i++){
@@ -2903,31 +2906,33 @@ var WebXRFrame = /*#__PURE__*/ function() {
2903
2906
  case "tracked-pointer":
2904
2907
  var gripSpace = inputSource.gripSpace, targetRaySpace = inputSource.targetRaySpace;
2905
2908
  if (gripSpace) {
2906
- var _frame_getPose = frame.getPose(gripSpace, referenceSpace), transform = _frame_getPose.transform, emulatedPosition = _frame_getPose.emulatedPosition;
2907
- if (transform) {
2909
+ var pose = frame.getPose(gripSpace, referenceSpace);
2910
+ if (pose) {
2911
+ var transform = pose.transform;
2908
2912
  var gripPose = input.gripPose;
2909
2913
  gripPose.matrix.copyFromArray(transform.matrix);
2910
2914
  gripPose.position.copyFrom(transform.position);
2911
2915
  gripPose.rotation.copyFrom(transform.orientation);
2912
2916
  }
2913
- input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
2917
+ input.trackingState = !pose || pose.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
2914
2918
  }
2915
2919
  if (targetRaySpace) {
2916
- var _frame_getPose1 = frame.getPose(targetRaySpace, referenceSpace), transform1 = _frame_getPose1.transform, emulatedPosition1 = _frame_getPose1.emulatedPosition;
2917
- if (transform1) {
2920
+ var pose1 = frame.getPose(targetRaySpace, referenceSpace);
2921
+ if (pose1) {
2922
+ var transform1 = pose1.transform;
2918
2923
  var targetRayPose = input.targetRayPose;
2919
2924
  targetRayPose.matrix.copyFromArray(transform1.matrix);
2920
2925
  targetRayPose.position.copyFrom(transform1.position);
2921
2926
  targetRayPose.rotation.copyFrom(transform1.orientation);
2922
- input.trackingState = emulatedPosition1 ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
2923
2927
  }
2928
+ input.trackingState = !pose1 || pose1.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
2924
2929
  }
2925
2930
  break;
2926
2931
  }
2927
2932
  }
2928
2933
  };
2929
2934
  _proto._updateCamera = function _updateCamera(inputs) {
2930
- var _this = this, frame = _this._platformFrame;
2935
+ var frame = this._platformFrame;
2931
2936
  var _this__session = this._session, referenceSpace = _this__session._platformReferenceSpace, layer = _this__session._platformLayer, framebufferWidth = _this__session.framebufferWidth, framebufferHeight = _this__session.framebufferHeight;
2932
2937
  var viewerPose = frame.getViewerPose(referenceSpace);
2933
2938
  if (viewerPose) {
@@ -3202,6 +3207,8 @@ var WebXRDevice = /*#__PURE__*/ function() {
3202
3207
  case XRFeatureType.ImageTracking:
3203
3208
  // @ts-ignore
3204
3209
  return typeof XRImageTrackingResult !== "undefined";
3210
+ default:
3211
+ return false;
3205
3212
  }
3206
3213
  };
3207
3214
  _proto.createPlatformFeature = function createPlatformFeature(type) {
@@ -3231,11 +3238,12 @@ var WebXRDevice = /*#__PURE__*/ function() {
3231
3238
  var attributes = gl.getContextAttributes();
3232
3239
  if (!attributes) {
3233
3240
  reject(Error("GetContextAttributes Error!"));
3241
+ return;
3234
3242
  }
3235
3243
  gl.makeXRCompatible().then(function() {
3236
3244
  var scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
3237
3245
  var layer;
3238
- if (session.renderState.layers === undefined || !!!rhi.isWebGL2) {
3246
+ if (session.renderState.layers === undefined || !rhi.isWebGL2) {
3239
3247
  var layerInit = {
3240
3248
  antialias: session.renderState.layers === undefined ? attributes.antialias : true,
3241
3249
  alpha: true,
@@ -3393,6 +3401,7 @@ var WebXRAnchorTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3393
3401
  _proto._updateTrackedAnchor = function _updateTrackedAnchor(frame, space, requestTracking) {
3394
3402
  var xrAnchor = requestTracking.xrAnchor;
3395
3403
  var xrPose = frame.getPose(xrAnchor.anchorSpace, space);
3404
+ if (!xrPose) return true;
3396
3405
  var transform = xrPose.transform;
3397
3406
  var pose = requestTracking.tracked[0].pose;
3398
3407
  pose.matrix.copyFromArray(transform.matrix);
@@ -3452,8 +3461,7 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3452
3461
  tracked.referenceImage = requestTrackingImage.image;
3453
3462
  }
3454
3463
  if (trackingResult.trackingState === "tracked") {
3455
- this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);
3456
- tracked.state = XRTrackingState.Tracking;
3464
+ tracked.state = this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult) ? XRTrackingState.Tracking : XRTrackingState.TrackingLost;
3457
3465
  } else {
3458
3466
  tracked.state = XRTrackingState.TrackingLost;
3459
3467
  }
@@ -3524,11 +3532,14 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3524
3532
  };
3525
3533
  _proto._updateTrackedImage = function _updateTrackedImage(frame, space, trackedImage, trackingResult) {
3526
3534
  var pose = trackedImage.pose;
3527
- var transform = frame.getPose(trackingResult.imageSpace, space).transform;
3535
+ var xrPose = frame.getPose(trackingResult.imageSpace, space);
3536
+ if (!xrPose) return false;
3537
+ var transform = xrPose.transform;
3528
3538
  pose.matrix.copyFromArray(transform.matrix);
3529
3539
  pose.rotation.copyFrom(transform.orientation);
3530
3540
  pose.position.copyFrom(transform.position);
3531
3541
  trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;
3542
+ return true;
3532
3543
  };
3533
3544
  return WebXRImageTracking;
3534
3545
  }(WebXRTrackableFeature);
@@ -3588,7 +3599,8 @@ var WebXRPlaneTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3588
3599
  options.optionalFeatures.push("plane-detection");
3589
3600
  };
3590
3601
  _proto._updatePlane = function _updatePlane(frame, space, trackedPlane) {
3591
- var pose = trackedPlane.pose, polygon = trackedPlane.polygon, xrPlane = trackedPlane.xrPlane;
3602
+ var pose = trackedPlane.pose, polygon = trackedPlane.polygon;
3603
+ var xrPlane = trackedPlane.xrPlane;
3592
3604
  var planePose = frame.getPose(xrPlane.planeSpace, space);
3593
3605
  if (!planePose) return;
3594
3606
  var transform = planePose.transform, emulatedPosition = planePose.emulatedPosition;