Andrew Meadowsarchive remaining JS scriptsc0b446c10 years agoHistory
87 lines · 2.4 KB · JavaScript
RawDownload
////  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();});