@galacean/engine-xr-webxr 2.0.0-alpha.49 → 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
@@ -1121,6 +1121,7 @@ new Vector3();
1121
1121
  * Calculate the inverse of the specified matrix.
1122
1122
  * @param a - The matrix whose inverse is to be calculated
1123
1123
  * @param out - The inverse of the specified matrix
1124
+ * @returns Null if the matrix is singular; otherwise undefined
1124
1125
  */ Matrix3x3.invert = function invert(a, out) {
1125
1126
  var ae = a.elements;
1126
1127
  var oe = out.elements;
@@ -2590,6 +2591,7 @@ new Vector3();
2590
2591
  * Calculate the inverse of the specified matrix.
2591
2592
  * @param a - The matrix whose inverse is to be calculated
2592
2593
  * @param out - The inverse of the specified matrix
2594
+ * @returns Null if the matrix is singular; otherwise undefined
2593
2595
  */ Matrix.invert = function invert(a, out) {
2594
2596
  var ae = a.elements;
2595
2597
  var oe = out.elements;
@@ -2896,7 +2898,7 @@ var WebXRFrame = /*#__PURE__*/ function() {
2896
2898
  this._updateCamera(inputs);
2897
2899
  };
2898
2900
  _proto._updateController = function _updateController(inputs) {
2899
- var _this = this, frame = _this._platformFrame;
2901
+ var frame = this._platformFrame;
2900
2902
  var _this__session = this._session, session = _this__session._platformSession, referenceSpace = _this__session._platformReferenceSpace;
2901
2903
  var inputSources = session.inputSources;
2902
2904
  for(var i = 0, n = inputSources.length; i < n; i++){
@@ -2908,31 +2910,33 @@ var WebXRFrame = /*#__PURE__*/ function() {
2908
2910
  case "tracked-pointer":
2909
2911
  var gripSpace = inputSource.gripSpace, targetRaySpace = inputSource.targetRaySpace;
2910
2912
  if (gripSpace) {
2911
- var _frame_getPose = frame.getPose(gripSpace, referenceSpace), transform = _frame_getPose.transform, emulatedPosition = _frame_getPose.emulatedPosition;
2912
- if (transform) {
2913
+ var pose = frame.getPose(gripSpace, referenceSpace);
2914
+ if (pose) {
2915
+ var transform = pose.transform;
2913
2916
  var gripPose = input.gripPose;
2914
2917
  gripPose.matrix.copyFromArray(transform.matrix);
2915
2918
  gripPose.position.copyFrom(transform.position);
2916
2919
  gripPose.rotation.copyFrom(transform.orientation);
2917
2920
  }
2918
- input.trackingState = emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2921
+ input.trackingState = !pose || pose.emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2919
2922
  }
2920
2923
  if (targetRaySpace) {
2921
- var _frame_getPose1 = frame.getPose(targetRaySpace, referenceSpace), transform1 = _frame_getPose1.transform, emulatedPosition1 = _frame_getPose1.emulatedPosition;
2922
- if (transform1) {
2924
+ var pose1 = frame.getPose(targetRaySpace, referenceSpace);
2925
+ if (pose1) {
2926
+ var transform1 = pose1.transform;
2923
2927
  var targetRayPose = input.targetRayPose;
2924
2928
  targetRayPose.matrix.copyFromArray(transform1.matrix);
2925
2929
  targetRayPose.position.copyFrom(transform1.position);
2926
2930
  targetRayPose.rotation.copyFrom(transform1.orientation);
2927
- input.trackingState = emulatedPosition1 ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2928
2931
  }
2932
+ input.trackingState = !pose1 || pose1.emulatedPosition ? engineXr.XRTrackingState.TrackingLost : engineXr.XRTrackingState.Tracking;
2929
2933
  }
2930
2934
  break;
2931
2935
  }
2932
2936
  }
2933
2937
  };
2934
2938
  _proto._updateCamera = function _updateCamera(inputs) {
2935
- var _this = this, frame = _this._platformFrame;
2939
+ var frame = this._platformFrame;
2936
2940
  var _this__session = this._session, referenceSpace = _this__session._platformReferenceSpace, layer = _this__session._platformLayer, framebufferWidth = _this__session.framebufferWidth, framebufferHeight = _this__session.framebufferHeight;
2937
2941
  var viewerPose = frame.getViewerPose(referenceSpace);
2938
2942
  if (viewerPose) {
@@ -3207,6 +3211,8 @@ var WebXRDevice = /*#__PURE__*/ function() {
3207
3211
  case engineXr.XRFeatureType.ImageTracking:
3208
3212
  // @ts-ignore
3209
3213
  return typeof XRImageTrackingResult !== "undefined";
3214
+ default:
3215
+ return false;
3210
3216
  }
3211
3217
  };
3212
3218
  _proto.createPlatformFeature = function createPlatformFeature(type) {
@@ -3236,11 +3242,12 @@ var WebXRDevice = /*#__PURE__*/ function() {
3236
3242
  var attributes = gl.getContextAttributes();
3237
3243
  if (!attributes) {
3238
3244
  reject(Error("GetContextAttributes Error!"));
3245
+ return;
3239
3246
  }
3240
3247
  gl.makeXRCompatible().then(function() {
3241
3248
  var scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
3242
3249
  var layer;
3243
- if (session.renderState.layers === undefined || !!!rhi.isWebGL2) {
3250
+ if (session.renderState.layers === undefined || !rhi.isWebGL2) {
3244
3251
  var layerInit = {
3245
3252
  antialias: session.renderState.layers === undefined ? attributes.antialias : true,
3246
3253
  alpha: true,
@@ -3398,6 +3405,7 @@ var WebXRAnchorTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3398
3405
  _proto._updateTrackedAnchor = function _updateTrackedAnchor(frame, space, requestTracking) {
3399
3406
  var xrAnchor = requestTracking.xrAnchor;
3400
3407
  var xrPose = frame.getPose(xrAnchor.anchorSpace, space);
3408
+ if (!xrPose) return true;
3401
3409
  var transform = xrPose.transform;
3402
3410
  var pose = requestTracking.tracked[0].pose;
3403
3411
  pose.matrix.copyFromArray(transform.matrix);
@@ -3457,8 +3465,7 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3457
3465
  tracked.referenceImage = requestTrackingImage.image;
3458
3466
  }
3459
3467
  if (trackingResult.trackingState === "tracked") {
3460
- this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);
3461
- tracked.state = engineXr.XRTrackingState.Tracking;
3468
+ tracked.state = this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult) ? engineXr.XRTrackingState.Tracking : engineXr.XRTrackingState.TrackingLost;
3462
3469
  } else {
3463
3470
  tracked.state = engineXr.XRTrackingState.TrackingLost;
3464
3471
  }
@@ -3529,11 +3536,14 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3529
3536
  };
3530
3537
  _proto._updateTrackedImage = function _updateTrackedImage(frame, space, trackedImage, trackingResult) {
3531
3538
  var pose = trackedImage.pose;
3532
- 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;
3533
3542
  pose.matrix.copyFromArray(transform.matrix);
3534
3543
  pose.rotation.copyFrom(transform.orientation);
3535
3544
  pose.position.copyFrom(transform.position);
3536
3545
  trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;
3546
+ return true;
3537
3547
  };
3538
3548
  return WebXRImageTracking;
3539
3549
  }(WebXRTrackableFeature);
@@ -3593,7 +3603,8 @@ var WebXRPlaneTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
3593
3603
  options.optionalFeatures.push("plane-detection");
3594
3604
  };
3595
3605
  _proto._updatePlane = function _updatePlane(frame, space, trackedPlane) {
3596
- var pose = trackedPlane.pose, polygon = trackedPlane.polygon, xrPlane = trackedPlane.xrPlane;
3606
+ var pose = trackedPlane.pose, polygon = trackedPlane.polygon;
3607
+ var xrPlane = trackedPlane.xrPlane;
3597
3608
  var planePose = frame.getPose(xrPlane.planeSpace, space);
3598
3609
  if (!planePose) return;
3599
3610
  var transform = planePose.transform, emulatedPosition = planePose.emulatedPosition;