History

Merge branch 'master' of github.com:highfidelity/hifi into model-scripting-1

Seth Alves committed 9 years ago

Commit 16c3eb62 parents bbad6a0 21c5e7b25 files · +685 −234Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 25 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+10−13
@@ -543,16 +543,6 @@ void ScriptEngine::init() { · 542 unmodified lines
543543
544544 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
545545 entityScriptingInterface->init();
546− connect(entityScriptingInterface.data(), &EntityScriptingInterface::deletingEntity, this, [this](const EntityItemID& entityID) {
547− if (_entityScripts.contains(entityID)) {
548− if (isEntityScriptRunning(entityID)) {
549− qCWarning(scriptengine) << "deletingEntity while entity script is still running!" << entityID;
550− }
551− _entityScripts.remove(entityID);
552− emit entityScriptDetailsUpdated();
553− }
554− });
555−
556546
557547 // register various meta-types
558548 registerMetaTypes(this);
@@ -1850,7 +1840,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 1291 unmodified lines
18501840 processDeferredEntityLoads(entityScript, entityID);
18511841 }
18521842
1853−void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) {
1843+void ScriptEngine::unloadEntityScript(const EntityItemID& entityID, bool shouldRemoveFromMap) {
18541844 if (QThread::currentThread() != thread()) {
18551845 #ifdef THREAD_DEBUGGING
18561846 qCDebug(scriptengine) << "*** WARNING *** ScriptEngine::unloadEntityScript() called on wrong thread [" << QThread::currentThread() << "], invoking on correct thread [" << thread() << "] "
@@ -1858,7 +1848,8 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 1 unmodified line
18581848 #endif
18591849
18601850 QMetaObject::invokeMethod(this, "unloadEntityScript",
1861− Q_ARG(const EntityItemID&, entityID));
1851+ Q_ARG(const EntityItemID&, entityID),
1852+ Q_ARG(bool, shouldRemoveFromMap));
18621853 return;
18631854 }
18641855 #ifdef THREAD_DEBUGGING
@@ -1873,7 +1864,12 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 8 unmodified lines
18731864 } else {
18741865 qCDebug(scriptengine) << "unload called while !running" << entityID << oldDetails.status;
18751866 }
1876− if (oldDetails.status != EntityScriptStatus::UNLOADED) {
1867+
1868+ if (shouldRemoveFromMap) {
1869+ // this was a deleted entity, we've been asked to remove it from the map
1870+ _entityScripts.remove(entityID);
1871+ emit entityScriptDetailsUpdated();
1872+ } else if (oldDetails.status != EntityScriptStatus::UNLOADED) {
18771873 EntityScriptDetails newDetails;
18781874 newDetails.status = EntityScriptStatus::UNLOADED;
18791875 newDetails.lastModified = QDateTime::currentMSecsSinceEpoch();
@@ -1881,6 +1877,7 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 1 unmodified line
18811877 newDetails.scriptText = oldDetails.scriptText;
18821878 setEntityScriptDetails(entityID, newDetails);
18831879 }
1880+
18841881 stopAllTimersForEntityScript(entityID);
18851882 {
18861883 // FIXME: shouldn't have to do this here, but currently something seems to be firing unloads moments after firing initial load requests