From 0bd849d691e689c6b20b5a10b26df0d8e15df58c Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 26 May 2017 13:17:22 -0700 Subject: [PATCH] Fix avatar driving in gracefulControls --- script-archive/gracefulControls.js | 54 +++++++++++++++++++----------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/script-archive/gracefulControls.js b/script-archive/gracefulControls.js index fac1a0f137..371d83b146 100644 --- a/script-archive/gracefulControls.js +++ b/script-archive/gracefulControls.js @@ -35,6 +35,7 @@ var BRAKE_PARAMETERS = { MOUSE_SENSITIVITY: 0.5, } +var DRIVE_AVATAR_ENABLED = true; var UPDATE_RATE = 90; var USE_INTERVAL = true; @@ -50,7 +51,13 @@ var KEY_UP = "e"; var KEY_DOWN = "c"; var KEY_TOGGLE= "SPACE"; var KEY_DISABLE = "ESC"; -var CAPTURED_KEYS = [KEY_BRAKE, KEY_FORWARD, KEY_BACKWARD, KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_TOGGLE]; +var CAPTURED_KEYS; + +if (DRIVE_AVATAR_ENABLED) { + CAPTURED_KEYS = [KEY_TOGGLE, KEY_BRAKE, KEY_FORWARD, KEY_BACKWARD, KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN]; +} else { + CAPTURED_KEYS = [KEY_TOGGLE]; +} // Global Variables var keys = {}; @@ -143,28 +150,35 @@ function update(dt) { MyAvatar.headPitch = newPitch; pitchFromMouse -= pitchMove; - // If force isn't being applied in a direction, add drag; - if (targetVelocity.x == 0) { - targetVelocity.x -= (velocity.x * movementParameters.DRAG_COEFFICIENT * dt); - } - if (targetVelocity.z == 0) { - targetVelocity.z -= (velocity.z * movementParameters.DRAG_COEFFICIENT * dt); - } - velocity = Vec3.sum(velocity, targetVelocity); - var maxSpeed = movementParameters.MAX_SPEED; - velocity.x = Math.max(-maxSpeed, Math.min(maxSpeed, velocity.x)); - velocity.z = Math.max(-maxSpeed, Math.min(maxSpeed, velocity.z)); - var v = Vec3.multiplyQbyV(MyAvatar.headOrientation, velocity); + if (DRIVE_AVATAR_ENABLED) { + // If force isn't being applied in a direction, add drag; + var drag = Math.min(movementParameters.DRAG_COEFFICIENT * dt, 1.0); + if (targetVelocity.x == 0) { + targetVelocity.x -= (velocity.x * drag); + } + if (targetVelocity.z == 0) { + targetVelocity.z -= (velocity.z * drag); + } + velocity = Vec3.sum(velocity, targetVelocity); - if (targetVelocityVertical == 0) { - targetVelocityVertical -= (velocityVertical * movementParameters.DRAG_COEFFICIENT * dt); + var maxSpeed = movementParameters.MAX_SPEED; + velocity.x = Math.max(-maxSpeed, Math.min(maxSpeed, velocity.x)); + velocity.z = Math.max(-maxSpeed, Math.min(maxSpeed, velocity.z)); + var v = Vec3.multiplyQbyV(MyAvatar.headOrientation, velocity); + + if (targetVelocityVertical == 0) { + targetVelocityVertical -= (velocityVertical * movementParameters.DRAG_COEFFICIENT * dt); + } + velocityVertical += targetVelocityVertical; + velocityVertical = Math.max(-maxSpeed, Math.min(maxSpeed, velocityVertical)); + v.y += velocityVertical; + + MyAvatar.motorReferenceFrame = 'world'; + MyAvatar.motorVelocity = v; + MyAvatar.motorTimescale = 1; + Vec3.print('vel', v); } - velocityVertical += targetVelocityVertical; - velocityVertical = Math.max(-maxSpeed, Math.min(maxSpeed, velocityVertical)); - v.y += velocityVertical; - - MyAvatar.setVelocity(v); } function vecToString(vec) {