History

entity call params

James Pollack committed 11 years ago

Commit 751d51e1 parent f83c0e73 files · +34 −2Browse 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+31−0
@@ -1200,6 +1200,37 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS · 1199 unmodified lines
12001200 }
12011201 }
12021202
1203+void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const QStringList& params) {
1204+ if (QThread::currentThread() != thread()) {
1205+ #ifdef THREAD_DEBUGGING
1206+ qDebug() << "*** WARNING *** ScriptEngine::callEntityScriptMethod() called on wrong thread [" << QThread::currentThread() << "], invoking on correct thread [" << thread() << "] "
1207+ "entityID:" << entityID << "methodName:" << methodName;
1208+ #endif
1209+
1210+ QMetaObject::invokeMethod(this, "callEntityScriptMethod",
1211+ Q_ARG(const EntityItemID&, entityID),
1212+ Q_ARG(const QString&, methodName),
1213+ Q_ARG(const QStringList&, params));
1214+ return;
1215+ }
1216+ #ifdef THREAD_DEBUGGING
1217+ qDebug() << "ScriptEngine::callEntityScriptMethod() called on correct thread [" << thread() << "] "
1218+ "entityID:" << entityID << "methodName:" << methodName;
1219+ #endif
1220+
1221+ refreshFileScript(entityID);
1222+ if (_entityScripts.contains(entityID)) {
1223+ EntityScriptDetails details = _entityScripts[entityID];
1224+ QScriptValue entityScript = details.scriptObject; // previously loaded
1225+ if (entityScript.property(methodName).isFunction()) {
1226+ QScriptValueList args;
1227+ args << entityID.toScriptValue(this);
1228+ entityScript.property(methodName).call(entityScript, args);
1229+ }
1230+
1231+ }
1232+}
1233+
12031234 void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const MouseEvent& event) {
12041235 if (QThread::currentThread() != thread()) {
12051236 #ifdef THREAD_DEBUGGING