Skip to content

Commit 6e19914

Browse files
authored
Merge pull request #75 from De-Panther/samsung_internet_hit_test_bug_fix
Ugly hack for Samsung Internet Hit-Test bug
2 parents a2bbbab + d13dafc commit 6e19914

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

Build/webxr.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@
353353
this.viewerHitTestSource.cancel();
354354
this.viewerHitTestSource = null;
355355
} else {
356+
this.xrSession.requestReferenceSpace('local').then((refSpace) => {
357+
this.xrSession.localRefSpace = refSpace;
358+
});
356359
this.xrSession.requestReferenceSpace('viewer').then((refSpace) => {
357360
this.viewerSpace = refSpace;
358361
this.xrSession.requestHitTestSource({space: this.viewerSpace}).then((hitTestSource) => {
@@ -709,10 +712,11 @@
709712
xrData.viewerHitTestPose.frame = xrData.frameNumber;
710713
let viewerHitTestResults = frame.getHitTestResults(this.viewerHitTestSource);
711714
if (viewerHitTestResults.length > 0) {
712-
let hitTestPose = viewerHitTestResults[0].getPose(session.refSpace);
715+
let hitTestPose = viewerHitTestResults[0].getPose(session.localRefSpace);
713716
xrData.viewerHitTestPose.available = 1;
714717
xrData.viewerHitTestPose.position[0] = hitTestPose.transform.position.x;
715-
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y;
718+
let hitTestPoseBase = viewerHitTestResults[0].getPose(session.refSpace); // Ugly hack for y position on Samsung Internet
719+
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y + Math.abs(hitTestPose.transform.position.y - hitTestPoseBase.transform.position.y);
716720
xrData.viewerHitTestPose.position[2] = -hitTestPose.transform.position.z;
717721
xrData.viewerHitTestPose.rotation[0] = -hitTestPose.transform.orientation.x;
718722
xrData.viewerHitTestPose.rotation[1] = -hitTestPose.transform.orientation.y;

Packages/webxr/Hidden~/WebGLTemplates/WebXR/webxr.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@
353353
this.viewerHitTestSource.cancel();
354354
this.viewerHitTestSource = null;
355355
} else {
356+
this.xrSession.requestReferenceSpace('local').then((refSpace) => {
357+
this.xrSession.localRefSpace = refSpace;
358+
});
356359
this.xrSession.requestReferenceSpace('viewer').then((refSpace) => {
357360
this.viewerSpace = refSpace;
358361
this.xrSession.requestHitTestSource({space: this.viewerSpace}).then((hitTestSource) => {
@@ -709,10 +712,11 @@
709712
xrData.viewerHitTestPose.frame = xrData.frameNumber;
710713
let viewerHitTestResults = frame.getHitTestResults(this.viewerHitTestSource);
711714
if (viewerHitTestResults.length > 0) {
712-
let hitTestPose = viewerHitTestResults[0].getPose(session.refSpace);
715+
let hitTestPose = viewerHitTestResults[0].getPose(session.localRefSpace);
713716
xrData.viewerHitTestPose.available = 1;
714717
xrData.viewerHitTestPose.position[0] = hitTestPose.transform.position.x;
715-
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y;
718+
let hitTestPoseBase = viewerHitTestResults[0].getPose(session.refSpace); // Ugly hack for y position on Samsung Internet
719+
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y + Math.abs(hitTestPose.transform.position.y - hitTestPoseBase.transform.position.y);
716720
xrData.viewerHitTestPose.position[2] = -hitTestPose.transform.position.z;
717721
xrData.viewerHitTestPose.rotation[0] = -hitTestPose.transform.orientation.x;
718722
xrData.viewerHitTestPose.rotation[1] = -hitTestPose.transform.orientation.y;

Packages/webxr/Hidden~/WebGLTemplates/WebXRFullView/webxr.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@
353353
this.viewerHitTestSource.cancel();
354354
this.viewerHitTestSource = null;
355355
} else {
356+
this.xrSession.requestReferenceSpace('local').then((refSpace) => {
357+
this.xrSession.localRefSpace = refSpace;
358+
});
356359
this.xrSession.requestReferenceSpace('viewer').then((refSpace) => {
357360
this.viewerSpace = refSpace;
358361
this.xrSession.requestHitTestSource({space: this.viewerSpace}).then((hitTestSource) => {
@@ -709,10 +712,11 @@
709712
xrData.viewerHitTestPose.frame = xrData.frameNumber;
710713
let viewerHitTestResults = frame.getHitTestResults(this.viewerHitTestSource);
711714
if (viewerHitTestResults.length > 0) {
712-
let hitTestPose = viewerHitTestResults[0].getPose(session.refSpace);
715+
let hitTestPose = viewerHitTestResults[0].getPose(session.localRefSpace);
713716
xrData.viewerHitTestPose.available = 1;
714717
xrData.viewerHitTestPose.position[0] = hitTestPose.transform.position.x;
715-
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y;
718+
let hitTestPoseBase = viewerHitTestResults[0].getPose(session.refSpace); // Ugly hack for y position on Samsung Internet
719+
xrData.viewerHitTestPose.position[1] = hitTestPose.transform.position.y + Math.abs(hitTestPose.transform.position.y - hitTestPoseBase.transform.position.y);
716720
xrData.viewerHitTestPose.position[2] = -hitTestPose.transform.position.z;
717721
xrData.viewerHitTestPose.rotation[0] = -hitTestPose.transform.orientation.x;
718722
xrData.viewerHitTestPose.rotation[1] = -hitTestPose.transform.orientation.y;

0 commit comments

Comments
 (0)