From da740e8a88c08bdd295dab4b1d3c505e780d807d Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 8 Sep 2014 15:31:53 -0700 Subject: [PATCH 1/2] First cut at radio.js --- examples/radio.js | 79 ++++++++++++++++++++++ libraries/audio/src/AudioInjectorOptions.h | 2 + 2 files changed, 81 insertions(+) create mode 100644 examples/radio.js diff --git a/examples/radio.js b/examples/radio.js new file mode 100644 index 0000000000..51233f5bb4 --- /dev/null +++ b/examples/radio.js @@ -0,0 +1,79 @@ +// +// 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: 20 }; +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) { + + } + + + + + + } 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); + diff --git a/libraries/audio/src/AudioInjectorOptions.h b/libraries/audio/src/AudioInjectorOptions.h index e1beb3e689..66e8f1550b 100644 --- a/libraries/audio/src/AudioInjectorOptions.h +++ b/libraries/audio/src/AudioInjectorOptions.h @@ -24,9 +24,11 @@ class AudioInjectorOptions : public QObject { Q_OBJECT + Q_PROPERTY(glm::quat orientation READ getOrientation WRITE setOrientation) Q_PROPERTY(glm::vec3 position READ getPosition WRITE setPosition) Q_PROPERTY(float volume READ getVolume WRITE setVolume) Q_PROPERTY(bool loop READ getLoop WRITE setLoop) + Q_PROPERTY(bool isStereo READ isStereo WRITE setIsStereo) public: AudioInjectorOptions(QObject* parent = 0); AudioInjectorOptions(const AudioInjectorOptions& other); From 9bed37c86c0f8d9f57852caa40c76e7916b679db Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 15 Sep 2014 16:05:26 -0700 Subject: [PATCH 2/2] Update position of audio --- examples/radio.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/radio.js b/examples/radio.js index 51233f5bb4..6ffc7deb84 100644 --- a/examples/radio.js +++ b/examples/radio.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var position = { x:1, y: 1, z: 20 }; +var position = { x:1, y: 1, z: 10 }; var rotation = Quat.fromPitchYawRollDegrees(0, 0, 0); var scale = 1.0; @@ -20,8 +20,8 @@ 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.orientation = Quat.multiply(AudioRotationOffset, rotation); +audioOptions.loop = true; audioOptions.isStereo = true; var injector = null; @@ -49,13 +49,13 @@ function update() { 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);