History

Fix reload mechanic for entity server scripts

Clement committed 7 years ago

Commit 283dabc1 parent 75c1bdb3 files · +10 −10Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 3 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+8−8
@@ -112,7 +112,6 @@ void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<Rec · 111 unmodified lines
112112
113113 if (_entityViewer.getTree() && !_shuttingDown) {
114114 qCDebug(entity_script_server) << "Reloading: " << entityID;
115− _entitiesScriptEngine->unloadEntityScript(entityID);
116115 checkAndCallPreload(entityID, true);
117116 }
118117 }
@@ -184,7 +183,6 @@ void EntityScriptServer::updateEntityPPS() { · 65 unmodified lines
184183 pps = std::min(_maxEntityPPS, pps);
185184 }
186185 _entityEditSender.setPacketsPerSecond(pps);
187− qDebug() << QString("Updating entity PPS to: %1 @ %2 PPS per script = %3 PPS").arg(numRunningScripts).arg(_entityPPSPerScript).arg(pps);
188186 }
189187
190188 void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
@@ -525,23 +523,25 @@ void EntityScriptServer::deletingEntity(const EntityItemID& entityID) { · 334 unmodified lines
525523
526524 void EntityScriptServer::entityServerScriptChanging(const EntityItemID& entityID, bool reload) {
527525 if (_entityViewer.getTree() && !_shuttingDown) {
528− _entitiesScriptEngine->unloadEntityScript(entityID, true);
529526 checkAndCallPreload(entityID, reload);
530527 }
531528 }
532529
533−void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, bool reload) {
530+void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, bool forceRedownload) {
534531 if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {
535532
536533 EntityItemPointer entity = _entityViewer.getTree()->findEntityByEntityItemID(entityID);
537534 EntityScriptDetails details;
538− bool notRunning = !_entitiesScriptEngine->getEntityScriptDetails(entityID, details);
539− if (entity && (reload || notRunning || details.scriptText != entity->getServerScripts())) {
535+ bool isRunning = _entitiesScriptEngine->getEntityScriptDetails(entityID, details);
536+ if (entity && (forceRedownload || !isRunning || details.scriptText != entity->getServerScripts())) {
537+ if (isRunning) {
538+ _entitiesScriptEngine->unloadEntityScript(entityID, true);
539+ }
540+
540541 QString scriptUrl = entity->getServerScripts();
541542 if (!scriptUrl.isEmpty()) {
542543 scriptUrl = DependencyManager::get<ResourceManager>()->normalizeURL(scriptUrl);
543− qCDebug(entity_script_server) << "Loading entity server script" << scriptUrl << "for" << entityID;
544− _entitiesScriptEngine->loadEntityScript(entityID, scriptUrl, reload);
544+ _entitiesScriptEngine->loadEntityScript(entityID, scriptUrl, forceRedownload);
545545 }
546546 }
547547 }