From 9c6be26290a71cf6a2a7e89baad75ea220c045cf Mon Sep 17 00:00:00 2001 From: Eric Levin Date: Fri, 15 May 2015 13:55:48 -0700 Subject: [PATCH] changed dice to use collisionSoundURL prop --- examples/dice.js | 180 +++++++++++++++++++++++++---------------------- 1 file changed, 94 insertions(+), 86 deletions(-) diff --git a/examples/dice.js b/examples/dice.js index f313e606b8..515019e740 100644 --- a/examples/dice.js +++ b/examples/dice.js @@ -12,17 +12,17 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var isDice = false; -var NUMBER_OF_DICE = 4; -var LIFETIME = 10000; // Dice will live for about 3 hours +var isDice = false; +var NUMBER_OF_DICE = 4; +var LIFETIME = 10000; // Dice will live for about 3 hours var dice = []; var DIE_SIZE = 0.20; -var madeSound = true; // Set false at start of throw to look for collision +var madeSound = true; // Set false at start of throw to look for collision HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +SoundCache.getSound("http://s3.amazonaws.com/hifi-public/sounds/dice/diceCollide.wav"); -var rollSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/dice/diceRoll.wav"); var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to create new objects." @@ -32,34 +32,46 @@ var BUTTON_SIZE = 32; var PADDING = 3; var offButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 - BUTTON_SIZE * 2 + PADDING, - 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 - }); + x: screenSize.x / 2 - BUTTON_SIZE * 2 + PADDING, + 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 deleteButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 - BUTTON_SIZE, - y: screenSize.y- (BUTTON_SIZE + PADDING), - width: BUTTON_SIZE, - height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", - color: { red: 255, green: 255, blue: 255}, - alpha: 1 - }); + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", + color: { + red: 255, + green: 255, + blue: 255 + }, + alpha: 1 +}); var diceButton = Overlays.addOverlay("image", { - 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 - }); + 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 +}); var GRAVITY = -3.5; @@ -68,74 +80,70 @@ var MAX_ANGULAR_SPEED = Math.PI; function shootDice(position, velocity) { - if (!Entities.canRez()) { - Window.alert(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - } else { - for (var i = 0; i < NUMBER_OF_DICE; i++) { - dice.push(Entities.addEntity( - { type: "Model", - modelURL: HIFI_PUBLIC_BUCKET + "models/props/Dice/goldDie.fbx", - position: position, - velocity: velocity, - rotation: Quat.fromPitchYawRollDegrees(Math.random() * 360, Math.random() * 360, Math.random() * 360), - angularVelocity: { x: Math.random() * MAX_ANGULAR_SPEED, - y: Math.random() * MAX_ANGULAR_SPEED, - z: Math.random() * MAX_ANGULAR_SPEED }, - lifetime: LIFETIME, - gravity: { x: 0, y: GRAVITY, z: 0 }, - shapeType: "box", - collisionsWillMove: true - })); - position = Vec3.sum(position, Vec3.multiply(DIE_SIZE, Vec3.normalize(Quat.getRight(Camera.getOrientation())))); - } + if (!Entities.canRez()) { + Window.alert(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + } else { + for (var i = 0; i < NUMBER_OF_DICE; i++) { + dice.push(Entities.addEntity( + { + type: "Model", + modelURL: HIFI_PUBLIC_BUCKET + "models/props/Dice/goldDie.fbx", + position: position, + velocity: velocity, + rotation: Quat.fromPitchYawRollDegrees(Math.random() * 360, Math.random() * 360, Math.random() * 360), + angularVelocity: { + x: Math.random() * MAX_ANGULAR_SPEED, + y: Math.random() * MAX_ANGULAR_SPEED, + z: Math.random() * MAX_ANGULAR_SPEED + }, + gravity: { + x: 0, + y: GRAVITY, + z: 0 + }, + lifetime: LIFETIME, + shapeType: "box", + collisionsWillMove: true, + collisionSoundURL: "http://s3.amazonaws.com/hifi-public/sounds/dice/diceCollide.wav" + })); + position = Vec3.sum(position, Vec3.multiply(DIE_SIZE, Vec3.normalize(Quat.getRight(Camera.getOrientation())))); } + } } function deleteDice() { - while(dice.length > 0) { - Entities.deleteEntity(dice.pop()); - } + while (dice.length > 0) { + Entities.deleteEntity(dice.pop()); + } } -function entityCollisionWithEntity(entity1, entity2, collision) { - if (!madeSound) { - // Is it one of our dice? - for (var i = 0; i < dice.length; i++) { - if (!dice[i].isKnownID) { - dice[i] = Entities.identifyEntity(dice[i]); - } - if ((entity1.id == dice[i].id) || (entity2.id == dice[i].id)) { - madeSound = true; - Audio.playSound(rollSound, { position: collision.contactPoint, localOnly: true }); - } - } - - } -} + 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 == deleteButton) { - deleteDice(); - } else if (clickedOverlay == diceButton) { - var HOW_HARD = 2.0; - var position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); - var velocity = Vec3.multiply(HOW_HARD, Quat.getFront(Camera.getOrientation())); - shootDice(position, velocity); - madeSound = false; - } + var clickedText = false; + var clickedOverlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (clickedOverlay == offButton) { + deleteDice(); + Script.stop(); + } else if (clickedOverlay == deleteButton) { + deleteDice(); + } else if (clickedOverlay == diceButton) { + var HOW_HARD = 2.0; + var position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); + var velocity = Vec3.multiply(HOW_HARD, Quat.getFront(Camera.getOrientation())); + shootDice(position, velocity); + madeSound = false; + } } function scriptEnding() { - Overlays.deleteOverlay(offButton); - Overlays.deleteOverlay(diceButton); - Overlays.deleteOverlay(deleteButton); + Overlays.deleteOverlay(offButton); + Overlays.deleteOverlay(diceButton); + Overlays.deleteOverlay(deleteButton); } -Entities.entityCollisionWithEntity.connect(entityCollisionWithEntity); Controller.mousePressEvent.connect(mousePressEvent); -Script.scriptEnding.connect(scriptEnding); +Script.scriptEnding.connect(scriptEnding); \ No newline at end of file