Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
66 lines
2.8 KiB
JavaScript
66 lines
2.8 KiB
JavaScript
"use strict";
|
|
// Creates some objects that each play a sound when they are hit (or when they hit something else).
|
|
//
|
|
// Created by Howard Stearns on June 3, 2015
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
|
|
var Camera, Vec3, Quat, Entities, Script; // Globals defined by HiFi, var'ed here to keep jslint happy.
|
|
var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/";
|
|
var SOUND_BUCKET = "http://public.highfidelity.io/sounds/Collisions-hitsandslaps/";
|
|
var MAX_ANGULAR_SPEED = Math.PI;
|
|
var N_EACH_OBJECTS = 3;
|
|
|
|
var ourToys = [];
|
|
function deleteAll() {
|
|
ourToys.forEach(Entities.deleteEntity);
|
|
}
|
|
function makeAll() {
|
|
var currentPosition = Vec3.sum(Camera.getPosition(), Vec3.multiply(4, Quat.getFront(Camera.getOrientation()))),
|
|
right = Vec3.multiply(0.6, Quat.getRight(Camera.getOrientation())),
|
|
currentDimensions,
|
|
data = [
|
|
["models/props/Dice/goldDie.fbx", HIFI_PUBLIC_BUCKET + "sounds/dice/diceCollide.wav"],
|
|
["models/props/Pool/ball_8.fbx", HIFI_PUBLIC_BUCKET + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"],
|
|
["eric/models/woodFloor.fbx", SOUND_BUCKET + "67LCollision05.wav"]
|
|
];
|
|
currentPosition = Vec3.sum(currentPosition, Vec3.multiply(-1 * data.length * N_EACH_OBJECTS / 2, right));
|
|
function makeOne(model, sound) {
|
|
var thisEntity;
|
|
function dropOnce() { // Once gravity is added, it will work if picked up and again dropped.
|
|
Entities.editEntity(thisEntity, {gravity: {x: 0, y: -9.8, z: 0}});
|
|
Script.removeEventHandler(thisEntity, 'clickDownOnEntity', dropOnce);
|
|
}
|
|
thisEntity = Entities.addEntity({
|
|
type: "Model",
|
|
modelURL: HIFI_PUBLIC_BUCKET + model,
|
|
collisionSoundURL: sound,
|
|
dynamic: true,
|
|
shapeType: "box",
|
|
restitution: 0.8,
|
|
dimensions: currentDimensions,
|
|
position: currentPosition,
|
|
angularVelocity: {
|
|
x: Math.random() * MAX_ANGULAR_SPEED,
|
|
y: Math.random() * MAX_ANGULAR_SPEED,
|
|
z: Math.random() * MAX_ANGULAR_SPEED
|
|
}
|
|
});
|
|
ourToys.push(thisEntity);
|
|
Script.addEventHandler(thisEntity, 'clickDownOnEntity', dropOnce);
|
|
currentDimensions = Vec3.multiply(currentDimensions, 2);
|
|
currentPosition = Vec3.sum(currentPosition, right);
|
|
}
|
|
function makeThree(modelSound) {
|
|
var i, model = modelSound[0], sound = modelSound[1];
|
|
currentDimensions = {x: 0.1, y: 0.1, z: 0.1};
|
|
for (i = 0; i < N_EACH_OBJECTS; i++) {
|
|
makeOne(model, sound);
|
|
}
|
|
}
|
|
data.forEach(makeThree);
|
|
}
|
|
makeAll();
|
|
Script.scriptEnding.connect(deleteAll);
|