mirror of
https://github.com/overte-org/overte.git
synced 2025-04-17 21:39:15 +02:00
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
//
|
|
// Radio.js
|
|
// examples
|
|
//
|
|
// Created by Clément Brisset on 8/20/14.
|
|
// Copyright 2014 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 position = { x:1, y: 1, z: 10 };
|
|
var rotation = Quat.fromPitchYawRollDegrees(0, 0, 0);
|
|
var scale = 1.0;
|
|
|
|
var modelURL = "https://s3-us-west-1.amazonaws.com/highfidelity-public/models/entities/radio/Speakers2Finished.fbx";
|
|
var soundURL = "https://s3-us-west-1.amazonaws.com/highfidelity-public/sounds/FamilyStereo.raw";
|
|
|
|
var AudioRotationOffset = Quat.fromPitchYawRollDegrees(0, -90, 0);
|
|
var audioOptions = new AudioInjectionOptions();
|
|
audioOptions.volume = 0.7;
|
|
audioOptions.position = position;
|
|
audioOptions.orientation = Quat.multiply(AudioRotationOffset, rotation);
|
|
audioOptions.loop = true;
|
|
audioOptions.isStereo = true;
|
|
var injector = null;
|
|
|
|
var sound = new Sound(soundURL);
|
|
|
|
var entity = null;
|
|
var properties = null;
|
|
|
|
function update() {
|
|
if (entity === null) {
|
|
if (sound.downloaded) {
|
|
print("Sound file downloaded");
|
|
entity = Entities.addEntity({
|
|
type: "Model",
|
|
position: position,
|
|
rotation: rotation,
|
|
radius: scale / 2.0,
|
|
modelURL: modelURL
|
|
});
|
|
properties = Entities.getEntityProperties(entity);
|
|
|
|
injector = Audio.playSound(sound, audioOptions);
|
|
}
|
|
} else {
|
|
var newProperties = Entities.getEntityProperties(entity);
|
|
if (newProperties.type === "Model") {
|
|
if (newProperties.position != properties.position) {
|
|
audioOptions.position = newProperties.position;
|
|
}
|
|
if (newProperties.orientation != properties.orientation) {
|
|
audioOptions.orientation = newProperties.orientation;
|
|
}
|
|
|
|
properties = newProperties;
|
|
} else {
|
|
entity = null;
|
|
Script.update.disconnect(update);
|
|
Script.scriptEnding.connect(scriptEnding);
|
|
scriptEnding();
|
|
}
|
|
}
|
|
}
|
|
|
|
function scriptEnding() {
|
|
if (entity != null) {
|
|
Entities.deleteEntity(entity);
|
|
}
|
|
if (injector != null) {
|
|
injector.stop();
|
|
}
|
|
}
|
|
|
|
Script.update.connect(update);
|
|
Script.scriptEnding.connect(scriptEnding);
|
|
|