diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 0362561fff..aef926bb10 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -12,7 +12,9 @@ #include "Sound.h" -Sound::Sound(const QUrl& sampleURL) { +Sound::Sound(const QUrl& sampleURL, QObject* parent) : + QObject(parent) +{ // assume we have a QApplication or QCoreApplication instance and use the // QNetworkAccess manager to grab the raw audio file at the given URL diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index e9a6e856ba..dea15674e0 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -16,7 +16,7 @@ class QNetworkReply; class Sound : public QObject { Q_OBJECT public: - Sound(const QUrl& sampleURL); + Sound(const QUrl& sampleURL, QObject* parent = 0); const QByteArray& getByteArray() { return _byteArray; } private: diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index eec0c22359..30eb046bf5 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -20,12 +20,20 @@ #include #include +#include + #include "ScriptEngine.h" int ScriptEngine::_scriptNumber = 1; VoxelsScriptingInterface ScriptEngine::_voxelsScriptingInterface; ParticlesScriptingInterface ScriptEngine::_particlesScriptingInterface; +static QScriptValue soundConstructor(QScriptContext* context, QScriptEngine* engine) { + QUrl soundURL = QUrl(context->argument(0).toString()); + QScriptValue soundScriptValue = engine->newQObject(new Sound(soundURL), QScriptEngine::ScriptOwnership); + + return soundScriptValue; +} ScriptEngine::ScriptEngine(const QString& scriptContents, bool wantMenuItems, const char* scriptMenuName, AbstractMenuInterface* menu, @@ -101,6 +109,10 @@ void ScriptEngine::run() { QScriptValue particleScripterValue = engine.newQObject(&_particlesScriptingInterface); engine.globalObject().setProperty("Particles", particleScripterValue); + QScriptValue soundConstructorValue = engine.newFunction(soundConstructor); + QScriptValue soundMetaObject = engine.newQMetaObject(&Sound::staticMetaObject, soundConstructorValue); + engine.globalObject().setProperty("Sound", soundMetaObject); + if (_controllerScriptingInterface) { QScriptValue controllerScripterValue = engine.newQObject(_controllerScriptingInterface); engine.globalObject().setProperty("Controller", controllerScripterValue);