Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 3 files). Show all
Unified · Split
| @@ -1200,6 +1200,37 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS · 1199 unmodified lines | ||
| 1200 | 1200 | } |
| 1201 | 1201 | } |
| 1202 | 1202 | |
| 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 | + | |
| 1203 | 1234 | void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const MouseEvent& event) { |
| 1204 | 1235 | if (QThread::currentThread() != thread()) { |
| 1205 | 1236 | #ifdef THREAD_DEBUGGING |