double click to turn around

This commit is contained in:
Philip Rosedale 2014-10-24 20:21:57 -07:00
parent 87f688a299
commit 8158733a27

View file

@ -43,8 +43,10 @@ var movingWithHead = false;
var headStartPosition, headStartDeltaPitch, headStartFinalPitch, headStartRoll, headStartYaw; var headStartPosition, headStartDeltaPitch, headStartFinalPitch, headStartRoll, headStartYaw;
var deltaYaw = 0.0; var deltaYaw = 0.0;
var keyDownTime = 0.0; var keyDownTime = 0.0;
var timeSinceLastUp = 0.0;
var watchAvatar = false; var watchAvatar = false;
var oldMode; var oldMode;
var lastYawTurned = 0.0;
function saveCameraState() { function saveCameraState() {
oldMode = Camera.getMode(); oldMode = Camera.getMode();
@ -134,7 +136,7 @@ function finishWarp() {
} }
function update(deltaTime) { function update(deltaTime) {
timeSinceLastUp += deltaTime;
if (movingWithHead) { if (movingWithHead) {
keyDownTime += deltaTime; keyDownTime += deltaTime;
updateWarp(); updateWarp();
@ -156,22 +158,26 @@ Controller.keyPressEvent.connect(function(event) {
} }
}); });
var TIME_FOR_TURN_AROUND = 0.50;
var TIME_FOR_TURN = 0.25; var TIME_FOR_TURN = 0.25;
var DOUBLE_CLICK_TIME = 0.50;
var TURN_AROUND = 180.0; var TURN_AROUND = 180.0;
Controller.keyReleaseEvent.connect(function(event) { Controller.keyReleaseEvent.connect(function(event) {
if (event.text == "SPACE" && !event.isAutoRepeat) { if (event.text == "SPACE" && !event.isAutoRepeat) {
movingWithHead = false; movingWithHead = false;
if (keyDownTime < TIME_FOR_TURN_AROUND) { if (timeSinceLastUp < DOUBLE_CLICK_TIME) {
if (keyDownTime < TIME_FOR_TURN) { // Turn all the way around
var currentYaw = MyAvatar.getHeadFinalYaw(); var turnRemaining = TURN_AROUND - lastYawTurned;
MyAvatar.orientation = Quat.multiply(Quat.fromPitchYawRollDegrees(0, currentYaw, 0), MyAvatar.orientation); lastYawTurned = 0.0;
} else { MyAvatar.orientation = Quat.multiply(Quat.fromPitchYawRollDegrees(0, TURN_AROUND, 0), MyAvatar.orientation);
MyAvatar.orientation = Quat.multiply(Quat.fromPitchYawRollDegrees(0, TURN_AROUND, 0), MyAvatar.orientation); playSound();
} } else if (keyDownTime < TIME_FOR_TURN) {
var currentYaw = MyAvatar.getHeadFinalYaw();
lastYawTurned = currentYaw;
MyAvatar.orientation = Quat.multiply(Quat.fromPitchYawRollDegrees(0, currentYaw, 0), MyAvatar.orientation);
playSound(); playSound();
} }
timeSinceLastUp = 0.0;
finishWarp(); finishWarp();
if (watchAvatar) { if (watchAvatar) {
restoreCameraState(); restoreCameraState();