mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
Sound toys script (in examples/soundToys.js)
This commit is contained in:
parent
0b52f85c60
commit
5727400b9a
1 changed files with 66 additions and 0 deletions
66
examples/example/soundToys.js
Normal file
66
examples/example/soundToys.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
"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,
|
||||
collisionsWillMove: 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);
|
Loading…
Reference in a new issue