From b7f0be761cf4b066c44014a9db26cf63ecb5161d Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 16:27:09 -0700 Subject: [PATCH 1/3] gun buildings fall on creation, dice stops correctly --- examples/controllers/hydra/gun.js | 4 ++-- examples/dice.js | 2 +- libraries/physics/src/CharacterController.cpp | 10 +++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/controllers/hydra/gun.js b/examples/controllers/hydra/gun.js index 8bea5d623e..9a00e181f6 100644 --- a/examples/controllers/hydra/gun.js +++ b/examples/controllers/hydra/gun.js @@ -282,7 +282,7 @@ function makePlatform(gravity, scale, size) { z: pos.z - (separation * size / 2.0) + z * separation }, dimensions: dimensions, color: { red: Math.random() * 255, green: Math.random() * 255, blue: Math.random() * 255 }, - velocity: { x: 0, y: 0, z: 0 }, + velocity: { x: 0, y: 0.05, z: 0 }, gravity: { x: 0, y: gravity, z: 0 }, lifetime: TARGET_LIFE, damping: 0.1, @@ -297,7 +297,7 @@ function makePlatform(gravity, scale, size) { type: "Box", position: { x: pos.x, y: pos.y - separation / 2.0, z: pos.z }, dimensions: { x: 2.0 * separation * size, y: separation / 2.0, z: 2.0 * separation * size }, - color: { red: 128, green: 128, blue: 128 }, + color: { red: 100, green: 100, blue: 100 }, lifetime: TARGET_LIFE }); diff --git a/examples/dice.js b/examples/dice.js index 2aefcf90fe..823ad1cb9b 100644 --- a/examples/dice.js +++ b/examples/dice.js @@ -92,7 +92,7 @@ function mousePressEvent(event) { var clickedText = false; var clickedOverlay = Overlays.getOverlayAtPoint({x: event.x, y: event.y}); if (clickedOverlay == offButton) { - deleteDice(); + Script.stop(); } else if (clickedOverlay == diceButton) { var HOW_HARD = 2.0; var position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 09c6b5599f..808d984f72 100644 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -212,6 +212,9 @@ btVector3 CharacterController::perpindicularComponent(const btVector3& direction } const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f); +const float DEFAULT_GRAVITY = 3.5f; +const float TERMINAL_VELOCITY = 55.0f; +const float JUMP_SPEED = 2.5f; CharacterController::CharacterController(AvatarData* avatarData) { assert(avatarData); @@ -226,9 +229,9 @@ CharacterController::CharacterController(AvatarData* avatarData) { _velocityTimeInterval = 0.0f; _verticalVelocity = 0.0f; _verticalOffset = 0.0f; - _gravity = 5.0f; // slower than Earth's - _maxFallSpeed = 55.0f; // Terminal velocity of a sky diver in m/s. - _jumpSpeed = 5.0f; + _gravity = DEFAULT_GRAVITY; // slower than Earth's + _maxFallSpeed = TERMINAL_VELOCITY; // Terminal velocity of a sky diver in m/s. + _jumpSpeed = JUMP_SPEED; _isOnGround = false; _isJumping = false; _isHovering = true; @@ -343,6 +346,7 @@ bool CharacterController::recoverFromPenetration(btCollisionWorld* collisionWorl return penetration; } + void CharacterController::scanDown(btCollisionWorld* world) { // we test with downward raycast and if we don't find floor close enough then turn on "hover" btKinematicClosestNotMeRayResultCallback callback(_ghostObject); From 8114fdd1e2e9ef7732149f940b7a6ea179d8a200 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 21:51:50 -0700 Subject: [PATCH 2/3] move button locations, names some constants in avatar controller --- examples/dice.js | 21 ++++++++++++------- libraries/physics/src/CharacterController.cpp | 4 ++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/examples/dice.js b/examples/dice.js index 823ad1cb9b..d27de904d7 100644 --- a/examples/dice.js +++ b/examples/dice.js @@ -24,20 +24,24 @@ HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; var rollSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/dice/diceRoll.wav"); var screenSize = Controller.getViewportDimensions(); + +var BUTTON_SIZE = 32; +var PADDING = 3; + var offButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 96, - width: 32, - height: 32, + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y- (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); var diceButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 130, - width: 32, - height: 32, + x: screenSize.x / 2 + PADDING, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/die.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 @@ -48,6 +52,7 @@ var LIFETIME = 300; // NOTE: angularVelocity is in radians/sec var MAX_ANGULAR_SPEED = Math.PI; + function shootDice(position, velocity) { for (var i = 0; i < NUMBER_OF_DICE; i++) { dice.push(Entities.addEntity( diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 2657e28bd3..f8c8e31ece 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -212,9 +212,9 @@ btVector3 CharacterController::perpindicularComponent(const btVector3& direction } const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f); -const float DEFAULT_GRAVITY = 3.5f; +const float DEFAULT_GRAVITY = 5.0f; const float TERMINAL_VELOCITY = 55.0f; -const float JUMP_SPEED = 2.5f; +const float JUMP_SPEED = 5.0f; CharacterController::CharacterController(AvatarData* avatarData) { assert(avatarData); From 9642bd199d4943caa0742072f3294f893f0e96e4 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 22:12:06 -0700 Subject: [PATCH 3/3] Buttons at bottom --- examples/controllers/hydra/gun.js | 57 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/examples/controllers/hydra/gun.js b/examples/controllers/hydra/gun.js index 9a00e181f6..2fdf26bfeb 100644 --- a/examples/controllers/hydra/gun.js +++ b/examples/controllers/hydra/gun.js @@ -90,44 +90,49 @@ var score = 0; var bulletID = false; var targetID = false; -// Create a reticle image in center of screen +// Create overlay buttons and reticle + +var BUTTON_SIZE = 32; +var PADDING = 3; +var NUM_BUTTONS = 3; + var screenSize = Controller.getViewportDimensions(); +var startX = screenSize.x / 2 - (NUM_BUTTONS * (BUTTON_SIZE + PADDING)) / 2; var reticle = Overlays.addOverlay("image", { - x: screenSize.x / 2 - 16, - y: screenSize.y / 2 - 16, - width: 32, - height: 32, + x: screenSize.x / 2 - (BUTTON_SIZE / 2), + y: screenSize.y / 2 - (BUTTON_SIZE / 2), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/billiardsReticle.png", - color: { red: 255, green: 255, blue: 255}, alpha: 1 }); var offButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 96, - width: 32, - height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", - color: { red: 255, green: 255, blue: 255}, + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", + alpha: 1 + }); + +startX += BUTTON_SIZE + PADDING; +var platformButton = Overlays.addOverlay("image", { + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/city.png", alpha: 1 }); -var platformButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 130, - width: 32, - height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/city.png", - color: { red: 255, green: 255, blue: 255}, - alpha: 1 - }); +startX += BUTTON_SIZE + PADDING; var gridButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 164, - width: 32, - height: 32, + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/blocks.png", - color: { red: 255, green: 255, blue: 255}, alpha: 1 });