mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
new test sound script
This commit is contained in:
parent
4b20de264f
commit
9823ecffa7
1 changed files with 96 additions and 0 deletions
96
examples/playTestSound.js
Normal file
96
examples/playTestSound.js
Normal file
|
@ -0,0 +1,96 @@
|
|||
//
|
||||
// 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.isPlaying) {
|
||||
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);
|
||||
|
Loading…
Reference in a new issue