History

Register metatype

David Rowe committed 6 years ago

Commit 2c844781 parent 89aa89e3 files · +19 −6Browse files

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

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+17−2
@@ -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 QString message = "";
113115 for (int i = 0; i < context->argumentCount(); i++) {
@@ -663,6 +665,17 @@ void avatarDataFromScriptValue(const QScriptValue& object, ScriptAvatarData*& ou · 549 unmodified lines
663665 out = nullptr;
664666 }
665667
668+QScriptValue externalResourceBucketToScriptValue(QScriptEngine* engine, ExternalResource::Bucket const& in) {
669+ //return engine->newQObject(in, QScriptEngine::ScriptOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
670+ return QScriptValue((int)in);
671+}
672+
673+void externalResourceBucketFromScriptValue(const QScriptValue& object, ExternalResource::Bucket& out) {
674+ // This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script
675+ assert(false);
676+ out = ExternalResource::Bucket::Assets;
677+}
678+
666679 void ScriptEngine::resetModuleCache(bool deleteScriptCache) {
667680 if (QThread::currentThread() != thread()) {
668681 executeOnScriptThread([=]() { resetModuleCache(deleteScriptCache); });
@@ -769,6 +782,8 @@ void ScriptEngine::init() { · 100 unmodified lines
769782 require.setProperty("resolve", resolve, READONLY_PROP_FLAGS);
770783 resetModuleCache();
771784 }
785+
786+ qScriptRegisterMetaType(this, externalResourceBucketToScriptValue, externalResourceBucketFromScriptValue);
772787 registerEnum("Script.ExternalPaths", QMetaEnum::fromType<ExternalResource::Bucket>());
773788
774789 registerGlobalObject("Audio", DependencyManager::get<AudioScriptingInterface>().data());
@@ -2871,6 +2886,6 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS · 2096 unmodified lines
28712886 }
28722887 }
28732888
2874−QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString &relative_path) {
2875− return ExternalResource::getInstance()->getUrl(bucket, relative_path);
2889+QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath) {
2890+ return ExternalResource::getInstance()->getUrl(bucket, relativePath);
28762891 }