From e3a34f6db0c835c0bf1f24c13eb6bf7aee054386 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 4 Dec 2014 12:17:31 -0800 Subject: [PATCH 1/3] Add multi-speed control to gamepad.js --- examples/gamepad.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/examples/gamepad.js b/examples/gamepad.js index a2f1034e26..0012103c4e 100644 --- a/examples/gamepad.js +++ b/examples/gamepad.js @@ -16,6 +16,8 @@ var AXIS_STRAFE = Joysticks.AXIS_LEFT_X; var AXIS_FORWARD = Joysticks.AXIS_LEFT_Y; var AXIS_ROTATE = Joysticks.AXIS_RIGHT_X; +var BUTTON_SPRINT = Joysticks.BUTTON_LEFT_STICK; + var BUTTON_TURN_AROUND = Joysticks.BUTTON_RIGHT_STICK; var BUTTON_FLY_UP = Joysticks.BUTTON_RIGHT_SHOULDER; @@ -31,7 +33,8 @@ var BUTTON_WARP_RIGHT = Joysticks.BUTTON_DPAD_RIGHT; var WARP_DISTANCE = 1; // Walk speed in m/s -var MOVE_SPEED = 2; +var MOVE_SPEED = 0.5; +var MOVE_SPRINT_SPEED = 2; // Amount to rotate in radians var ROTATE_INCREMENT = Math.PI / 8; @@ -49,6 +52,7 @@ var flyUpButtonState = false; // Current move direction, axis aligned - that is, looking down and moving forward // will not move you into the ground, but instead will keep you on the horizontal plane. var moveDirection = { x: 0, y: 0, z: 0 }; +var sprintButtonState = false; var warpActive = false; var warpPosition = { x: 0, y: 0, z: 0 }; @@ -173,6 +177,8 @@ function reportButtonValue(button, newValue, oldValue) { MyAvatar.orientation = Quat.multiply( Quat.fromPitchYawRollRadians(0, Math.PI, 0), MyAvatar.orientation); } + } else if (button == BUTTON_SPRINT) { + sprintButtonState = newValue; } else if (newValue) { var direction = null; @@ -209,9 +215,10 @@ function update(dt) { var move = copyVec3(moveDirection); move.y = 0; if (Vec3.length(move) > 0) { + speed = sprintButtonState ? MOVE_SPRINT_SPEED : MOVE_SPEED; velocity = Vec3.multiplyQbyV(Camera.getOrientation(), move); velocity.y = 0; - velocity = Vec3.multiply(Vec3.normalize(velocity), MOVE_SPEED); + velocity = Vec3.multiply(Vec3.normalize(velocity), speed); } if (moveDirection.y != 0) { From 500b8a49d1969d4ab412af7164e008b903f02b57 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 4 Dec 2014 14:17:24 -0800 Subject: [PATCH 2/3] Add button to gamepad.js to toggle mirror mode --- examples/gamepad.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/examples/gamepad.js b/examples/gamepad.js index 0012103c4e..d8a7e33fe3 100644 --- a/examples/gamepad.js +++ b/examples/gamepad.js @@ -18,6 +18,8 @@ var AXIS_ROTATE = Joysticks.AXIS_RIGHT_X; var BUTTON_SPRINT = Joysticks.BUTTON_LEFT_STICK; +var BUTTON_TOGGLE_MIRROR = Joysticks.BUTTON_FACE_LEFT; + var BUTTON_TURN_AROUND = Joysticks.BUTTON_RIGHT_STICK; var BUTTON_FLY_UP = Joysticks.BUTTON_RIGHT_SHOULDER; @@ -49,6 +51,10 @@ var WARP_PICK_MAX_DISTANCE = 100; var flyDownButtonState = false; var flyUpButtonState = false; +// When toggling to mirror mode, this stores the mode the user was previously in +// so it can be toggled back to. +var toggledFromCameraMode = 'first person'; + // Current move direction, axis aligned - that is, looking down and moving forward // will not move you into the ground, but instead will keep you on the horizontal plane. var moveDirection = { x: 0, y: 0, z: 0 }; @@ -179,6 +185,16 @@ function reportButtonValue(button, newValue, oldValue) { } } else if (button == BUTTON_SPRINT) { sprintButtonState = newValue; + } else if (button == BUTTON_TOGGLE_MIRROR) { + if (newValue) { + var currentMode = Camera.mode; + if (currentMode == "mirror") { + Camera.mode = toggledFromCameraMode; + } else { + toggledFromCameraMode = currentMode; + Camera.mode = "mirror"; + } + } } else if (newValue) { var direction = null; From 3bbee640fbf4f78327ef1df7f6faf10c7c32ac66 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 4 Dec 2014 14:48:03 -0800 Subject: [PATCH 3/3] Make gamepad mirror button toggle --- examples/gamepad.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/gamepad.js b/examples/gamepad.js index d8a7e33fe3..e9033995d3 100644 --- a/examples/gamepad.js +++ b/examples/gamepad.js @@ -188,12 +188,12 @@ function reportButtonValue(button, newValue, oldValue) { } else if (button == BUTTON_TOGGLE_MIRROR) { if (newValue) { var currentMode = Camera.mode; - if (currentMode == "mirror") { - Camera.mode = toggledFromCameraMode; - } else { + if (currentMode != "mirror") { toggledFromCameraMode = currentMode; - Camera.mode = "mirror"; } + Camera.mode = "mirror"; + } else { + Camera.mode = toggledFromCameraMode; } } else if (newValue) { var direction = null;