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
1045 return EntityTree::textSize(id, text);1045 return EntityTree::textSize(id, text);
1046}1046}
1047 1047
1048void EntityScriptingInterface::setEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {1048void EntityScriptingInterface::setPersistentEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {
1049 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);1049 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1050 _entitiesScriptEngine = engine;1050 _persistentEntitiesScriptEngine = engine;
1051}
1052
1053void EntityScriptingInterface::setNonPersistentEntitiesScriptEngine(QSharedPointer<EntitiesScriptEngineProvider> engine) {
1054 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1055 _nonPersistentEntitiesScriptEngine = engine;
1051}1056}
1052 1057
1053void EntityScriptingInterface::callEntityMethod(const QUuid& id, const QString& method, const QStringList& params) {1058void EntityScriptingInterface::callEntityMethod(const QUuid& id, const QString& method, const QStringList& params) {
1054 PROFILE_RANGE(script_entities, __FUNCTION__);1059 PROFILE_RANGE(script_entities, __FUNCTION__);
1055 1060
1056 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);1061 auto entity = getEntityTree()->findEntityByEntityItemID(id);
1057 if (_entitiesScriptEngine) {1062 if (entity) {
1058 EntityItemID entityID{ id };1063 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);
1059 _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params);1064 auto& scriptEngine = (entity->isLocalEntity() || entity->isMyAvatarEntity()) ? _persistentEntitiesScriptEngine : _nonPersistentEntitiesScriptEngine;
1065 if (scriptEngine) {
1066 scriptEngine->callEntityScriptMethod(id, method, params);
1067 }
1060 }1068 }
1061}1069}
1062 1070
@@ -1098,9 +1106,13 @@ void EntityScriptingInterface::handleEntityScriptCallMethodPacket(QSharedPointer · 35 unmodified lines
1098 params << paramString;1106 params << paramString;
1099 }1107 }
1100 1108
1101 std::lock_guard<std::recursive_mutex> lock(_entitiesScriptEngineLock);1109 auto entity = getEntityTree()->findEntityByEntityItemID(entityID);
1102 if (_entitiesScriptEngine) {1110 if (entity) {
1103 _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());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 }
1104 }1116 }
1105 }1117 }
1106}1118}
@@ -1331,7 +1343,7 @@ bool EntityPropertyMetadataRequest::script(EntityItemID entityID, QScriptValue h · 224 unmodified lines
1331 if (entitiesScriptEngine) {1343 if (entitiesScriptEngine) {
1332 request->setFuture(entitiesScriptEngine->getLocalEntityScriptDetails(entityID));1344 request->setFuture(entitiesScriptEngine->getLocalEntityScriptDetails(entityID));
1333 }1345 }
1334 });1346 }, entityID);
1335 if (!request->isStarted()) {1347 if (!request->isStarted()) {
1336 request->deleteLater();1348 request->deleteLater();
1337 callScopedHandlerObject(handler, _engine->makeError("Entities Scripting Provider unavailable", "InternalError"), QScriptValue());1349 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