mirror of
https://github.com/overte-org/overte.git
synced 2025-07-28 22:20:25 +02:00
Merge pull request #7333 from PhilipRosedale/testSound
playTestSound.js - better clip for testing/showing audio
This commit is contained in:
commit
e577658315
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