History

Merge branch 'master' into pr/669

Kalila L committed 6 years ago

Commit 853c8052 parents ab46b1f f7f8ea1364 files · +329330 −11746Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 364 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+30−0
@@ -108,6 +108,8 @@ int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature · 107 unmodified lines
108108
109109 int scriptEnginePointerMetaID = qRegisterMetaType<ScriptEnginePointer>();
110110
111+Q_DECLARE_METATYPE(ExternalResource::Bucket);
112+
111113 static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
112114 // assemble the message by concatenating our arguments
113115 QString message = "";
@@ -705,6 +707,14 @@ void avatarDataFromScriptValue(const QScriptValue& object, ScriptAvatarData*& ou · 591 unmodified lines
705707 out = nullptr;
706708 }
707709
710+QScriptValue externalResourceBucketToScriptValue(QScriptEngine* engine, ExternalResource::Bucket const& in) {
711+ return QScriptValue((int)in);
712+}
713+
714+void externalResourceBucketFromScriptValue(const QScriptValue& object, ExternalResource::Bucket& out) {
715+ out = static_cast<ExternalResource::Bucket>(object.toInt32());
716+}
717+
708718 void ScriptEngine::resetModuleCache(bool deleteScriptCache) {
709719 if (QThread::currentThread() != thread()) {
710720 executeOnScriptThread([=]() { resetModuleCache(deleteScriptCache); });
@@ -812,6 +822,9 @@ void ScriptEngine::init() { · 101 unmodified lines
812822 resetModuleCache();
813823 }
814824
825+ qScriptRegisterMetaType(this, externalResourceBucketToScriptValue, externalResourceBucketFromScriptValue);
826+ registerEnum("Script.ExternalPaths", QMetaEnum::fromType<ExternalResource::Bucket>());
827+
815828 registerGlobalObject("Audio", DependencyManager::get<AudioScriptingInterface>().data());
816829
817830 registerGlobalObject("Midi", DependencyManager::get<Midi>().data());
@@ -869,6 +882,19 @@ void ScriptEngine::init() { · 51 unmodified lines
869882 }));
870883 }
871884
885+void ScriptEngine::registerEnum(const QString& enumName, QMetaEnum newEnum) {
886+ if (!newEnum.isValid()) {
887+ qCCritical(scriptengine) << "registerEnum called on invalid enum with name " << enumName;
888+ return;
889+ }
890+
891+ for (int i = 0; i < newEnum.keyCount(); i++) {
892+ const char* keyName = newEnum.key(i);
893+ QString fullName = enumName + "." + keyName;
894+ registerValue(fullName, newEnum.keyToValue(keyName));
895+ }
896+}
897+
872898 void ScriptEngine::registerValue(const QString& valueName, QScriptValue value) {
873899 if (QThread::currentThread() != thread()) {
874900 #ifdef THREAD_DEBUGGING
@@ -2898,3 +2924,7 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS · 2023 unmodified lines
28982924 }
28992925 }
29002926 }
2927+
2928+QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString& path) {
2929+ return ExternalResource::getInstance()->getUrl(bucket, path);
2930+}