//// playTestSound.js// examples//// Created by Philip Rosedale// Copyright 2014 High Fidelity, Inc.//// Creates an object in front of you that changes color and plays a light// at the start of a drum clip that loops. As you move away it will tell you in the// log how many meters you are from the source.//// Distributed under the Apache License, Version 2.0.// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//var sound = SoundCache.getSound("https://s3.amazonaws.com/hifi-public/sounds/Drums/deepdrum1.wav");var position = Vec3.sum(Vec3.sum(MyAvatar.position, { x: 0, y: 0.5, z: 0 }), Quat.getFront(MyAvatar.orientation));var time;var soundPlaying = null;var baseColor = { red: 100, green: 100, blue: 100 };var litColor = { red: 255, green: 100, blue: 0 };var lightTime = 250;var distance = 0.0;// Create object for visual referencevar box = Entities.addEntity({ type: "Box", dimensions: { x: 0.25, y: 0.5, z: 0.25 }, color: baseColor, position: position });function checkSound(deltaTime) { var started = false; if (!sound.downloaded) { return; } if (soundPlaying == null) { soundPlaying = Audio.playSound(sound, { position: position, volume: 1.0, loop: false } ); started = true; } else if (!soundPlaying.playing) { soundPlaying.restart(); started = true; } if (started) { Entities.editEntity(box, { color: litColor }); Entities.addEntity({ type: "Light", intensity: 5.0, falloffRadius: 10.0, dimensions: { x: 40, y: 40, z: 40 }, position: Vec3.sum(position, { x: 0, y: 1, z: 0 }), color: litColor, lifetime: lightTime / 1000 }); Script.setTimeout(resetColor, lightTime); } var currentDistance = Vec3.distance(MyAvatar.position, position); if (Math.abs(currentDistance - distance) > 1.0) { print("Distance from source: " + currentDistance); distance = currentDistance; }}function resetColor() { Entities.editEntity(box, { color: baseColor });}function scriptEnding() { Entities.deleteEntity(box); if (soundPlaying) { print("stop injector"); soundPlaying.stop(); }}// Connect a call back that happens every frameScript.scriptEnding.connect(scriptEnding);Script.update.connect(checkSound);
//
// playTestSound.js
// examples
//
// Created by Philip Rosedale
// Copyright 2014 High Fidelity, Inc.
//
// Creates an object in front of you that changes color and plays a light
// at the start of a drum clip that loops. As you move away it will tell you in the
// log how many meters you are from the source.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
var sound = SoundCache.getSound("https://s3.amazonaws.com/hifi-public/sounds/Drums/deepdrum1.wav");
var position = Vec3.sum(Vec3.sum(MyAvatar.position, { x: 0, y: 0.5, z: 0 }), Quat.getFront(MyAvatar.orientation));
var time;
var soundPlaying = null;
var baseColor = { red: 100, green: 100, blue: 100 };
var litColor = { red: 255, green: 100, blue: 0 };
var lightTime = 250;
var distance = 0.0;
// Create object for visual reference
var box = Entities.addEntity({
type: "Box",
dimensions: { x: 0.25, y: 0.5, z: 0.25 },
color: baseColor,
position: position
});
function checkSound(deltaTime) {
var started = false;
if (!sound.downloaded) {
return;
}
if (soundPlaying == null) {
soundPlaying = Audio.playSound(sound, {
position: position,
volume: 1.0,
loop: false } );
started = true;
} else if (!soundPlaying.playing) {
soundPlaying.restart();
started = true;
}
if (started) {
Entities.editEntity(box, { color: litColor });
Entities.addEntity({
type: "Light",
intensity: 5.0,
falloffRadius: 10.0,
dimensions: {
x: 40,
y: 40,
z: 40
},
position: Vec3.sum(position, { x: 0, y: 1, z: 0 }),
color: litColor,
lifetime: lightTime / 1000
});
Script.setTimeout(resetColor, lightTime);
}
var currentDistance = Vec3.distance(MyAvatar.position, position);
if (Math.abs(currentDistance - distance) > 1.0) {
print("Distance from source: " + currentDistance);
distance = currentDistance;
}
}
function resetColor() {
Entities.editEntity(box, { color: baseColor });
}
function scriptEnding() {
Entities.deleteEntity(box);
if (soundPlaying) {
print("stop injector");
soundPlaying.stop();
}
}
// Connect a call back that happens every frame
Script.scriptEnding.connect(scriptEnding);
Script.update.connect(checkSound);