repo: janusweb action: commit revision: path_from: revision_from: e500275b25bfd0e620232b766c098f1603266643: path_to: revision_to:
commit e500275b25bfd0e620232b766c098f1603266643 Author: James BaicoianuDate: Tue Jun 30 15:51:58 2020 -0700 Fixed AR controller XRInput handling diff --git a/scripts/janusxrplayer.js b/scripts/janusxrplayer.js
--- a/scripts/janusxrplayer.js
+++ b/scripts/janusxrplayer.js
@@ -63,10 +63,16 @@ elation.require(['engine.things.generic', 'janusweb.external.webxr-input-profile
if (!this.trackedobjects[id]) {
this.trackedobjects[id] = this.createObject('trackedplayer_hand', { device: input });
}
- let pose = xrFrame.getPose(input.gripSpace, xrReferenceFrame);
+ let pose = null,
+ raypose = null;
+ if (input.gripSpace) {
+ pose = xrFrame.getPose(input.gripSpace, xrReferenceFrame);
+ }
+ if (input.targetRaySpace) {
+ raypose = xrFrame.getPose(input.targetRaySpace, xrReferenceFrame);
+ }
+ this.trackedobjects[id].updatePose(pose, xrFrame, xrReferenceFrame, raypose);
if (pose) {
- let raypose = xrFrame.getPose(input.targetRaySpace, xrReferenceFrame);
- this.trackedobjects[id].updatePose(pose, xrFrame, xrReferenceFrame, raypose);
this.trackedobjects[id].visible = true;
} else {
this.trackedobjects[id].visible = false;
@@ -116,8 +122,10 @@ elation.require(['engine.things.generic', 'janusweb.external.webxr-input-profile
*/
},
this.updatePose = function(pose, xrFrame, xrReferenceFrame) {
- this.position.copy(pose.transform.position);
- this.orientation.copy(pose.transform.orientation);
+ if (pose) {
+ this.position.copy(pose.transform.position);
+ this.orientation.copy(pose.transform.orientation);
+ }
}
}, elation.engine.things.janusbase);
@@ -313,10 +321,10 @@ elation.require(['engine.things.generic', 'janusweb.external.webxr-input-profile
if (this.motionController) {
this.updateMotionControllerModel(this.motionController);
}
- if (this.pointer && raypose) {
- this.pointer.pos.copy(raypose.transform.position);
- this.pointer.orientation.copy(raypose.transform.orientation);
- }
+ }
+ if (this.pointer && raypose) {
+ this.pointer.pos.copy(raypose.transform.position);
+ this.pointer.orientation.copy(raypose.transform.orientation);
}
},
createButtons() {
-----END OF PAGE-----