diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 2d13568664..239d9eb596 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -21,6 +21,14 @@ #include "AudioInjector.h" +QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in) { + return engine->newQObject(in); +} + +void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out) { + out = qobject_cast(object.toQObject()); +} + AudioInjector::AudioInjector(QObject* parent) : QObject(parent), _sound(NULL), diff --git a/libraries/audio/src/AudioInjector.h b/libraries/audio/src/AudioInjector.h index 68acd3b887..e53e2dbcad 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/audio/src/AudioInjector.h @@ -50,4 +50,7 @@ private: Q_DECLARE_METATYPE(AudioInjector*) +QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in); +void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out); + #endif // hifi_AudioInjector_h diff --git a/libraries/audio/src/AudioScriptingInterface.cpp b/libraries/audio/src/AudioScriptingInterface.cpp index bf2c16cc53..7605b5d6af 100644 --- a/libraries/audio/src/AudioScriptingInterface.cpp +++ b/libraries/audio/src/AudioScriptingInterface.cpp @@ -13,6 +13,7 @@ void registerAudioMetaTypes(QScriptEngine* engine) { qScriptRegisterMetaType(engine, injectorOptionsToScriptValue, injectorOptionsFromScriptValue); + qScriptRegisterMetaType(engine, soundToScriptValue, soundFromScriptValue); } AudioScriptingInterface& AudioScriptingInterface::getInstance() { @@ -23,7 +24,7 @@ AudioScriptingInterface& AudioScriptingInterface::getInstance() { AudioScriptingInterface::AudioScriptingInterface() : _localLoopbackInterface(NULL) { - qRegisterMetaType("AudioInjectorOptions"); + } void AudioScriptingInterface::stopAllInjectors() { @@ -41,12 +42,9 @@ void AudioScriptingInterface::stopAllInjectors() { } } -AudioInjector* AudioScriptingInterface::playSound(Sound* sound, const AudioInjectorOptions* injectorOptions) { +AudioInjector* AudioScriptingInterface::playSound(Sound* sound, AudioInjectorOptions& injectorOptions) { - if (sound->isStereo()) { - const_cast(injectorOptions)->stereo = true; - } - AudioInjector* injector = new AudioInjector(sound, *injectorOptions); + AudioInjector* injector = new AudioInjector(sound, injectorOptions); QThread* injectorThread = new QThread(); diff --git a/libraries/audio/src/AudioScriptingInterface.h b/libraries/audio/src/AudioScriptingInterface.h index a41ca645dd..efcb0172c3 100644 --- a/libraries/audio/src/AudioScriptingInterface.h +++ b/libraries/audio/src/AudioScriptingInterface.h @@ -32,7 +32,7 @@ public slots: static float getLoudness(AudioInjector* injector); - AudioInjector* playSound(Sound* sound, const AudioInjectorOptions* injectorOptions = NULL); + AudioInjector* playSound(Sound* sound, AudioInjectorOptions& injectorOptions); void stopInjector(AudioInjector* injector); bool isInjectorPlaying(AudioInjector* injector); diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 2266385425..bb134ad198 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -29,6 +29,15 @@ #include "AudioEditBuffer.h" #include "Sound.h" + +QScriptValue soundToScriptValue(QScriptEngine* engine, Sound* const &in) { + return engine->newQObject(in); +} + +void soundFromScriptValue(const QScriptValue &object, Sound* &out) { + out = qobject_cast(object.toQObject()); +} + // procedural audio version of Sound Sound::Sound(float volume, float frequency, float duration, float decay, QObject* parent) : QObject(parent), diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index b8fdc6b458..ade3ad324f 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -14,6 +14,7 @@ #include #include +#include class Sound : public QObject { Q_OBJECT @@ -44,4 +45,9 @@ private slots: void replyError(QNetworkReply::NetworkError code); }; +Q_DECLARE_METATYPE(Sound*) + +QScriptValue soundToScriptValue(QScriptEngine* engine, Sound* const &in); +void soundFromScriptValue(const QScriptValue &object, Sound* &out); + #endif // hifi_Sound_h diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 2b1acf7592..3f89cdf9ba 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -74,14 +74,6 @@ void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) { out = qobject_cast(object.toQObject()); } -QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in) { - return engine->newQObject(in); -} - -void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out) { - out = qobject_cast(object.toQObject()); -} - QScriptValue inputControllerToScriptValue(QScriptEngine *engine, AbstractInputController* const &in) { return engine->newQObject(in); }