//// reticleTest.js// examples/controllers//// Created by Brad Hefta-Gaub on 2015/12/15// Copyright 2015 High Fidelity, Inc.//// Distributed under the Apache License, Version 2.0.// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// function length(posA, posB) { var dx = posA.x - posB.x; var dy = posA.y - posB.y; var length = Math.sqrt((dx*dx) + (dy*dy)) return length;} var PITCH_DEADZONE = 1.0;var PITCH_MAX = 20.0;var YAW_DEADZONE = 1.0;var YAW_MAX = 20.0;var PITCH_SCALING = 10.0; var YAW_SCALING = 10.0; var EXPECTED_CHANGE = 50;var lastPos = Reticle.getPosition();function moveReticle(dY, dX) { var globalPos = Reticle.getPosition(); // some debugging to see if position is jumping around on us... var distanceSinceLastMove = length(lastPos, globalPos); if (distanceSinceLastMove > EXPECTED_CHANGE) { print("distanceSinceLastMove:" + distanceSinceLastMove + "----------------------------"); } if (Math.abs(dX) > EXPECTED_CHANGE) { print("UNEXPECTED dX:" + dX + "----------------------------"); dX = 0; } if (Math.abs(dY) > EXPECTED_CHANGE) { print("UNEXPECTED dY:" + dY + "----------------------------"); dY = 0; } globalPos.x += dX; globalPos.y += dY; Reticle.setPosition(globalPos); lastPos = globalPos;} var MAPPING_NAME = "com.highfidelity.testing.reticleWithHand";var mapping = Controller.newMapping(MAPPING_NAME); var lastHandPitch = 0;var lastHandYaw = 0; mapping.from(Controller.Standard.LeftHand).peek().to(function(pose) { var handEulers = Quat.safeEulerAngles(pose.rotation); //Vec3.print("handEulers:", handEulers); var handPitch = handEulers.y; var handYaw = handEulers.x; var changePitch = (handPitch - lastHandPitch) * PITCH_SCALING; var changeYaw = (handYaw - lastHandYaw) * YAW_SCALING; if (Math.abs(changePitch) > PITCH_MAX) { print("Pitch: " + changePitch); changePitch = 0; } if (Math.abs(changeYaw) > YAW_MAX) { print("Yaw: " + changeYaw); changeYaw = 0; } changePitch = Math.abs(changePitch) < PITCH_DEADZONE ? 0 : changePitch; changeYaw = Math.abs(changeYaw) < YAW_DEADZONE ? 0 : changeYaw; moveReticle(changePitch, changeYaw); lastHandPitch = handPitch; lastHandYaw = handYaw; });mapping.enable(); Script.scriptEnding.connect(function(){ mapping.disable();});
//
// reticleTest.js
// examples/controllers
//
// Created by Brad Hefta-Gaub on 2015/12/15
// Copyright 2015 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
function length(posA, posB) {
var dx = posA.x - posB.x;
var dy = posA.y - posB.y;
var length = Math.sqrt((dx*dx) + (dy*dy))
return length;
}
var PITCH_DEADZONE = 1.0;
var PITCH_MAX = 20.0;
var YAW_DEADZONE = 1.0;
var YAW_MAX = 20.0;
var PITCH_SCALING = 10.0;
var YAW_SCALING = 10.0;
var EXPECTED_CHANGE = 50;
var lastPos = Reticle.getPosition();
function moveReticle(dY, dX) {
var globalPos = Reticle.getPosition();
// some debugging to see if position is jumping around on us...
var distanceSinceLastMove = length(lastPos, globalPos);
if (distanceSinceLastMove > EXPECTED_CHANGE) {
print("distanceSinceLastMove:" + distanceSinceLastMove + "----------------------------");
}
if (Math.abs(dX) > EXPECTED_CHANGE) {
print("UNEXPECTED dX:" + dX + "----------------------------");
dX = 0;
}
if (Math.abs(dY) > EXPECTED_CHANGE) {
print("UNEXPECTED dY:" + dY + "----------------------------");
dY = 0;
}
globalPos.x += dX;
globalPos.y += dY;
Reticle.setPosition(globalPos);
lastPos = globalPos;
}
var MAPPING_NAME = "com.highfidelity.testing.reticleWithHand";
var mapping = Controller.newMapping(MAPPING_NAME);
var lastHandPitch = 0;
var lastHandYaw = 0;
mapping.from(Controller.Standard.LeftHand).peek().to(function(pose) {
var handEulers = Quat.safeEulerAngles(pose.rotation);
//Vec3.print("handEulers:", handEulers);
var handPitch = handEulers.y;
var handYaw = handEulers.x;
var changePitch = (handPitch - lastHandPitch) * PITCH_SCALING;
var changeYaw = (handYaw - lastHandYaw) * YAW_SCALING;
if (Math.abs(changePitch) > PITCH_MAX) {
print("Pitch: " + changePitch);
changePitch = 0;
}
if (Math.abs(changeYaw) > YAW_MAX) {
print("Yaw: " + changeYaw);
changeYaw = 0;
}
changePitch = Math.abs(changePitch) < PITCH_DEADZONE ? 0 : changePitch;
changeYaw = Math.abs(changeYaw) < YAW_DEADZONE ? 0 : changeYaw;
moveReticle(changePitch, changeYaw);
lastHandPitch = handPitch;
lastHandYaw = handYaw;
});
mapping.enable();
Script.scriptEnding.connect(function(){
mapping.disable();
});