diff --git a/engine/includes/adapters/handlers/defaultfilehandler.h b/engine/includes/adapters/handlers/defaultfilehandler.h index 33451039e..51944b0a2 100644 --- a/engine/includes/adapters/handlers/defaultfilehandler.h +++ b/engine/includes/adapters/handlers/defaultfilehandler.h @@ -19,12 +19,8 @@ class DefaultFileHandler : public FileHandler { protected: void listFilesRecursive(StringList &list, const std::filesystem::path &path) { - try { - for(const auto &entry : std::filesystem::recursive_directory_iterator(path)) { - list.push_back(TString(entry.path().string()).replace('\\', '/')); - } - } catch (const std::filesystem::filesystem_error &ex) { - aError() << "Error:" << ex.what(); + for(const auto &entry : std::filesystem::recursive_directory_iterator(path)) { + list.push_back(TString(entry.path().string()).replace('\\', '/')); } } diff --git a/engine/includes/editor/assetmanager.h b/engine/includes/editor/assetmanager.h index 3b5e077d0..a334e2927 100644 --- a/engine/includes/editor/assetmanager.h +++ b/engine/includes/editor/assetmanager.h @@ -122,6 +122,8 @@ protected slots: QTimer *m_timer; + bool m_force; + protected: void dumpBundle(); diff --git a/engine/src/editor/assetmanager.cpp b/engine/src/editor/assetmanager.cpp index 1c98d0f4b..dcbef7230 100644 --- a/engine/src/editor/assetmanager.cpp +++ b/engine/src/editor/assetmanager.cpp @@ -47,7 +47,8 @@ AssetManager::AssetManager() : m_assetProvider(new BaseAssetProvider), m_indices(Engine::resourceSystem()->indices()), m_projectManager(ProjectSettings::instance()), - m_timer(new QTimer(this)) { + m_timer(new QTimer(this)), + m_force(false) { connect(m_timer, SIGNAL(timeout()), this, SLOT(onPerform())); } @@ -118,30 +119,30 @@ void AssetManager::checkImportSettings(AssetConverterSettings *settings) { } void AssetManager::rescan() { - bool force = false; + m_force = false; TString target = m_projectManager->targetPath(); if(target.isEmpty()) { - force |= !Engine::reloadBundle(); - force |= m_projectManager->projectSdk() != SDK_VERSION; + m_force |= !Engine::reloadBundle(); + m_force |= m_projectManager->projectSdk() != SDK_VERSION; m_assetProvider->init(); } else { - force = true; + m_force = true; } - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/materials").data(),force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/textures").data(), force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/meshes").data(), force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/pipelines").data(),force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/fonts").data(), force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/materials").data(),m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/textures").data(), m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/meshes").data(), m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/pipelines").data(),m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/engine/fonts").data(), m_force); #ifndef BUILDER - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/materials").data(),force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/gizmos").data(), force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/meshes").data(), force); - m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/textures").data(), force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/materials").data(),m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/gizmos").data(), m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/meshes").data(), m_force); + m_assetProvider->onDirectoryChangedForce((m_projectManager->resourcePath() + "/editor/textures").data(), m_force); #endif - m_assetProvider->onDirectoryChangedForce(m_projectManager->contentPath().data(), force); + m_assetProvider->onDirectoryChangedForce(m_projectManager->contentPath().data(), m_force); emit directoryChanged(m_projectManager->contentPath().data()); @@ -492,6 +493,7 @@ void AssetManager::onPerform() { result = true; if(!it->buildProject()) { + m_force = false; m_timer->stop(); emit importFinished(); } @@ -521,6 +523,7 @@ void AssetManager::onPerform() { return; } + m_force = false; m_timer->stop(); emit importFinished(); } diff --git a/engine/src/systems/resourcesystem.cpp b/engine/src/systems/resourcesystem.cpp index 867eb0e74..a4ba20a8f 100644 --- a/engine/src/systems/resourcesystem.cpp +++ b/engine/src/systems/resourcesystem.cpp @@ -101,7 +101,7 @@ void ResourceSystem::setResource(Resource *object, const TString &uuid) { Resource *ResourceSystem::loadResource(const TString &path) { PROFILE_FUNCTION(); - if(!path.isEmpty()) { + if(!path.isEmpty() && !m_indexMap.empty()) { TString uuid = path; Resource *object = resource(uuid); @@ -131,7 +131,7 @@ Resource *ResourceSystem::loadResource(const TString &path) { } Resource *ResourceSystem::loadResourceAsync(const TString &path) { - if(!path.isEmpty()) { + if(!path.isEmpty() && !m_indexMap.empty()) { ResourceInfo info; auto indexIt = m_indexMap.find(path); diff --git a/modules/editor/particletools/converter/effectbuilder.cpp b/modules/editor/particletools/converter/effectbuilder.cpp index c54b6c945..c4f754535 100644 --- a/modules/editor/particletools/converter/effectbuilder.cpp +++ b/modules/editor/particletools/converter/effectbuilder.cpp @@ -79,20 +79,20 @@ AssetConverter::ReturnCode EffectBuilder::convertFile(AssetConverterSettings *se Variant variant = m_graph.object(); - uint32_t uuid = 0; + if(settings->info().id == 0) { + settings->info().id = Engine::generateUUID(); + } VariantList objects = variant.value(); for(auto &it : objects) { VariantList o = it.value(); if(o.size() >= 5) { auto i = o.begin(); i++; - uuid = static_cast((*i).toInt()); + *i = settings->info().id; break; } } - settings->info().id = uuid; - return settings->saveBinary(variant, settings->absoluteDestination()); } diff --git a/modules/editor/particletools/converter/effectgraph.cpp b/modules/editor/particletools/converter/effectgraph.cpp index 481fc4884..fd84e648c 100644 --- a/modules/editor/particletools/converter/effectgraph.cpp +++ b/modules/editor/particletools/converter/effectgraph.cpp @@ -171,7 +171,7 @@ Variant EffectGraph::object() const { VariantList object; object.push_back(VisualEffect::metaClass()->name()); // type - object.push_back(Engine::generateUUID()); // id + object.push_back(0); // id object.push_back(0); // parent object.push_back(""); // name