mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
Merge pull request #5830 from ZappoMan/entityScriptsReload
add reload all support for entity scripts
This commit is contained in:
commit
da74d4b1e1
5 changed files with 19 additions and 0 deletions
|
@ -4347,6 +4347,8 @@ void Application::stopScript(const QString &scriptName, bool restart) {
|
|||
}
|
||||
|
||||
void Application::reloadAllScripts() {
|
||||
DependencyManager::get<ScriptCache>()->clearCache();
|
||||
getEntities()->reloadEntityScripts();
|
||||
stopAllScripts(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -93,6 +93,15 @@ void EntityTreeRenderer::clear() {
|
|||
OctreeRenderer::clear();
|
||||
}
|
||||
|
||||
void EntityTreeRenderer::reloadEntityScripts() {
|
||||
_entitiesScriptEngine->unloadAllEntityScripts();
|
||||
foreach(auto entity, _entitiesInScene) {
|
||||
if (!entity->getScript().isEmpty()) {
|
||||
_entitiesScriptEngine->loadEntityScript(entity->getEntityItemID(), entity->getScript(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EntityTreeRenderer::init() {
|
||||
OctreeRenderer::init();
|
||||
EntityTreePointer entityTree = std::static_pointer_cast<EntityTree>(_tree);
|
||||
|
|
|
@ -62,6 +62,9 @@ public:
|
|||
/// clears the tree
|
||||
virtual void clear();
|
||||
|
||||
/// reloads the entity scripts, calling unload and preload
|
||||
void reloadEntityScripts();
|
||||
|
||||
/// if a renderable entity item needs a model, we will allocate it for them
|
||||
Q_INVOKABLE Model* allocateModel(const QString& url, const QString& collisionUrl);
|
||||
|
||||
|
|
|
@ -27,6 +27,10 @@ ScriptCache::ScriptCache(QObject* parent) {
|
|||
// nothing to do here...
|
||||
}
|
||||
|
||||
void ScriptCache::clearCache() {
|
||||
_scriptCache.clear();
|
||||
}
|
||||
|
||||
QString ScriptCache::getScript(const QUrl& unnormalizedURL, ScriptUser* scriptUser, bool& isPending, bool reload) {
|
||||
QUrl url = ResourceManager::normalizeURL(unnormalizedURL);
|
||||
QString scriptContents;
|
||||
|
|
|
@ -28,6 +28,7 @@ class ScriptCache : public QObject, public Dependency {
|
|||
SINGLETON_DEPENDENCY
|
||||
|
||||
public:
|
||||
void clearCache();
|
||||
void getScriptContents(const QString& scriptOrURL, contentAvailableCallback contentAvailable, bool forceDownload = false);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue