changed dice to use collisionSoundURL prop

This commit is contained in:
Eric Levin 2015-05-15 13:55:48 -07:00
parent 650e8a54af
commit 9c6be26290

View file

@ -12,17 +12,17 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
var isDice = false; var isDice = false;
var NUMBER_OF_DICE = 4; var NUMBER_OF_DICE = 4;
var LIFETIME = 10000; // Dice will live for about 3 hours var LIFETIME = 10000; // Dice will live for about 3 hours
var dice = []; var dice = [];
var DIE_SIZE = 0.20; 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/"; 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." 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 PADDING = 3;
var offButton = Overlays.addOverlay("image", { var offButton = Overlays.addOverlay("image", {
x: screenSize.x / 2 - BUTTON_SIZE * 2 + PADDING, x: screenSize.x / 2 - BUTTON_SIZE * 2 + PADDING,
y: screenSize.y- (BUTTON_SIZE + PADDING), y: screenSize.y - (BUTTON_SIZE + PADDING),
width: BUTTON_SIZE, width: BUTTON_SIZE,
height: BUTTON_SIZE, height: BUTTON_SIZE,
imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", imageURL: HIFI_PUBLIC_BUCKET + "images/close.png",
color: { red: 255, green: 255, blue: 255}, color: {
alpha: 1 red: 255,
}); green: 255,
blue: 255
},
alpha: 1
});
var deleteButton = Overlays.addOverlay("image", { var deleteButton = Overlays.addOverlay("image", {
x: screenSize.x / 2 - BUTTON_SIZE, x: screenSize.x / 2 - BUTTON_SIZE,
y: screenSize.y- (BUTTON_SIZE + PADDING), y: screenSize.y - (BUTTON_SIZE + PADDING),
width: BUTTON_SIZE, width: BUTTON_SIZE,
height: BUTTON_SIZE, height: BUTTON_SIZE,
imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png",
color: { red: 255, green: 255, blue: 255}, color: {
alpha: 1 red: 255,
}); green: 255,
blue: 255
},
alpha: 1
});
var diceButton = Overlays.addOverlay("image", { var diceButton = Overlays.addOverlay("image", {
x: screenSize.x / 2 + PADDING, x: screenSize.x / 2 + PADDING,
y: screenSize.y - (BUTTON_SIZE + PADDING), y: screenSize.y - (BUTTON_SIZE + PADDING),
width: BUTTON_SIZE, width: BUTTON_SIZE,
height: BUTTON_SIZE, height: BUTTON_SIZE,
imageURL: HIFI_PUBLIC_BUCKET + "images/die.png", imageURL: HIFI_PUBLIC_BUCKET + "images/die.png",
color: { red: 255, green: 255, blue: 255}, color: {
alpha: 1 red: 255,
}); green: 255,
blue: 255
},
alpha: 1
});
var GRAVITY = -3.5; var GRAVITY = -3.5;
@ -68,74 +80,70 @@ var MAX_ANGULAR_SPEED = Math.PI;
function shootDice(position, velocity) { function shootDice(position, velocity) {
if (!Entities.canRez()) { if (!Entities.canRez()) {
Window.alert(INSUFFICIENT_PERMISSIONS_ERROR_MSG); Window.alert(INSUFFICIENT_PERMISSIONS_ERROR_MSG);
} else { } else {
for (var i = 0; i < NUMBER_OF_DICE; i++) { for (var i = 0; i < NUMBER_OF_DICE; i++) {
dice.push(Entities.addEntity( dice.push(Entities.addEntity(
{ type: "Model", {
modelURL: HIFI_PUBLIC_BUCKET + "models/props/Dice/goldDie.fbx", type: "Model",
position: position, modelURL: HIFI_PUBLIC_BUCKET + "models/props/Dice/goldDie.fbx",
velocity: velocity, position: position,
rotation: Quat.fromPitchYawRollDegrees(Math.random() * 360, Math.random() * 360, Math.random() * 360), velocity: velocity,
angularVelocity: { x: Math.random() * MAX_ANGULAR_SPEED, rotation: Quat.fromPitchYawRollDegrees(Math.random() * 360, Math.random() * 360, Math.random() * 360),
y: Math.random() * MAX_ANGULAR_SPEED, angularVelocity: {
z: Math.random() * MAX_ANGULAR_SPEED }, x: Math.random() * MAX_ANGULAR_SPEED,
lifetime: LIFETIME, y: Math.random() * MAX_ANGULAR_SPEED,
gravity: { x: 0, y: GRAVITY, z: 0 }, z: Math.random() * MAX_ANGULAR_SPEED
shapeType: "box", },
collisionsWillMove: true gravity: {
})); x: 0,
position = Vec3.sum(position, Vec3.multiply(DIE_SIZE, Vec3.normalize(Quat.getRight(Camera.getOrientation())))); 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() { function deleteDice() {
while(dice.length > 0) { while (dice.length > 0) {
Entities.deleteEntity(dice.pop()); 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) { function mousePressEvent(event) {
var clickedText = false; var clickedText = false;
var clickedOverlay = Overlays.getOverlayAtPoint({x: event.x, y: event.y}); var clickedOverlay = Overlays.getOverlayAtPoint({
if (clickedOverlay == offButton) { x: event.x,
deleteDice(); y: event.y
Script.stop(); });
} else if (clickedOverlay == deleteButton) { if (clickedOverlay == offButton) {
deleteDice(); deleteDice();
} else if (clickedOverlay == diceButton) { Script.stop();
var HOW_HARD = 2.0; } else if (clickedOverlay == deleteButton) {
var position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); deleteDice();
var velocity = Vec3.multiply(HOW_HARD, Quat.getFront(Camera.getOrientation())); } else if (clickedOverlay == diceButton) {
shootDice(position, velocity); var HOW_HARD = 2.0;
madeSound = false; 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() { function scriptEnding() {
Overlays.deleteOverlay(offButton); Overlays.deleteOverlay(offButton);
Overlays.deleteOverlay(diceButton); Overlays.deleteOverlay(diceButton);
Overlays.deleteOverlay(deleteButton); Overlays.deleteOverlay(deleteButton);
} }
Entities.entityCollisionWithEntity.connect(entityCollisionWithEntity);
Controller.mousePressEvent.connect(mousePressEvent); Controller.mousePressEvent.connect(mousePressEvent);
Script.scriptEnding.connect(scriptEnding); Script.scriptEnding.connect(scriptEnding);