History

split entity script engines into two

HifiExperiments committed 6 years ago

Commit 2a1857e1 parent c9c8e5f5 files · +176 −112Browse files

Showing the changes to libraries/entities/src/EntityScriptingInterface.cpp (1 of 5 files). Show all

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+23−11
@@ -1045,18 +1045,26 @@ QSizeF EntityScriptingInterface::textSize(const QUuid& id, const QString& text) · 1044 unmodified lines
10451045 return EntityTree::textSize(id, text);
10461046 }
10471047
1048−void EntityScriptingInterface::setEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {
1048+void EntityScriptingInterface::setPersistentEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {
10491049 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1050− _entitiesScriptEngine = engine;
1050+ _persistentEntitiesScriptEngine = engine;
1051+}
1052+
1053+void EntityScriptingInterface::setNonPersistentEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {
1054+ std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1055+ _nonPersistentEntitiesScriptEngine = engine;
10511056 }
10521057
10531058 void EntityScriptingInterface::callEntityMethod(const QUuid& id, const QString& method, const QStringList& params) {
10541059 PROFILE_RANGE(script_entities, __FUNCTION__);
1055−
1056− std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1057− if (_entitiesScriptEngine) {
1058− EntityItemID entityID{ id };
1059− _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params);
1060+
1061+ auto entity = getEntityTree()->findEntityByEntityItemID(id);
1062+ if (entity) {
1063+ std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1064+ auto& scriptEngine = (entity->isLocalEntity() || entity->isMyAvatarEntity()) ? _persistentEntitiesScriptEngine : _nonPersistentEntitiesScriptEngine;
1065+ if (scriptEngine) {
1066+ scriptEngine->callEntityScriptMethod(id, method, params);
1067+ }
10601068 }
10611069 }
10621070
@@ -1098,9 +1106,13 @@ void EntityScriptingInterface::handleEntityScriptCallMethodPacket(QSharedPointer · 35 unmodified lines
10981106 params << paramString;
10991107 }
11001108
1101− std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1102− if (_entitiesScriptEngine) {
1103− _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
1109+ auto entity = getEntityTree()->findEntityByEntityItemID(entityID);
1110+ if (entity) {
1111+ std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1112+ auto& scriptEngine = (entity->isLocalEntity() || entity->isMyAvatarEntity()) ? _persistentEntitiesScriptEngine : _nonPersistentEntitiesScriptEngine;
1113+ if (scriptEngine) {
1114+ scriptEngine->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
1115+ }
11041116 }
11051117 }
11061118 }
@@ -1331,7 +1343,7 @@ bool EntityPropertyMetadataRequest::script(EntityItemID entityID, QScriptValue h · 224 unmodified lines
13311343 if (entitiesScriptEngine) {
13321344 request->setFuture(entitiesScriptEngine->getLocalEntityScriptDetails(entityID));
13331345 }
1334− });
1346+ }, entityID);
13351347 if (!request->isStarted()) {
13361348 request->deleteLater();
13371349 callScopedHandlerObject(handler, _engine->makeError("Entities Scripting Provider unavailable", "InternalError"), QScriptValue());

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t