diff --git a/Source/Engine/Content/AssetsContainer.h b/Source/Engine/Content/AssetsContainer.h index aceba1f07..dd9b549b5 100644 --- a/Source/Engine/Content/AssetsContainer.h +++ b/Source/Engine/Content/AssetsContainer.h @@ -18,7 +18,7 @@ public: /// The asset id. /// Loaded asset of null. template - T* LoadAsync(const Guid& id) + T* Load(const Guid& id) { for (auto& e : *this) { @@ -26,8 +26,10 @@ public: return (T*)e.Get(); } auto asset = (T*)::LoadAsset(id, T::TypeInitializer); - if (asset) + if (asset && !asset->WaitForLoaded()) Add(asset); + else + asset = nullptr; return asset; } diff --git a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp index 197b53e13..6ae810d82 100644 --- a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp +++ b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp @@ -425,8 +425,8 @@ void ParticleEmitterGPUGenerator::ProcessGroupParticles(Box* box, Node* node, Va case 300: { // Load function asset - const auto function = Assets.LoadAsync((Guid)node->Values[0]); - if (!function || function->WaitForLoaded()) + const auto function = Assets.Load((Guid)node->Values[0]); + if (!function) { OnError(node, box, TEXT("Missing or invalid function.")); value = Value::Zero; @@ -439,7 +439,7 @@ void ParticleEmitterGPUGenerator::ProcessGroupParticles(Box* box, Node* node, Va { if (_callStack[i]->Type == GRAPH_NODE_MAKE_TYPE(14, 300)) { - const auto callFunc = Assets.LoadAsync((Guid)_callStack[i]->Values[0]); + const auto callFunc = Assets.Load((Guid)_callStack[i]->Values[0]); if (callFunc == function) { OnError(node, box, String::Format(TEXT("Recursive call to function '{0}'!"), function->ToString())); @@ -514,7 +514,7 @@ void ParticleEmitterGPUGenerator::ProcessGroupFunction(Box* box, Node* node, Val value = Value::Zero; break; } - const auto function = Assets.LoadAsync((Guid)functionCallNode->Values[0]); + const auto function = Assets.Load((Guid)functionCallNode->Values[0]); if (!_functions.TryGet(functionCallNode, graph) || !function) { OnError(node, box, TEXT("Missing calling function graph.")); diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp index 73b3058a3..c0f1ede7e 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp @@ -50,8 +50,8 @@ MaterialLayer* MaterialGenerator::GetLayer(const Guid& id, Node* caller) } // Load asset - Asset* asset = Assets.LoadAsync(id); - if (asset == nullptr || asset->WaitForLoaded(10 * 1000)) + Asset* asset = Assets.Load(id); + if (asset == nullptr) { OnError(caller, nullptr, TEXT("Failed to load material asset.")); return nullptr; diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Material.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Material.cpp index 4594446ec..c778c03ee 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Material.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Material.cpp @@ -285,8 +285,8 @@ void MaterialGenerator::ProcessGroupMaterial(Box* box, Node* node, Value& value) case 24: { // Load function asset - const auto function = Assets.LoadAsync((Guid)node->Values[0]); - if (!function || function->WaitForLoaded()) + const auto function = Assets.Load((Guid)node->Values[0]); + if (!function) { OnError(node, box, TEXT("Missing or invalid function.")); value = Value::Zero; @@ -299,7 +299,7 @@ void MaterialGenerator::ProcessGroupMaterial(Box* box, Node* node, Value& value) { if (_callStack[i]->Type == GRAPH_NODE_MAKE_TYPE(1, 24)) { - const auto callFunc = Assets.LoadAsync((Guid)_callStack[i]->Values[0]); + const auto callFunc = Assets.Load((Guid)_callStack[i]->Values[0]); if (callFunc == function) { OnError(node, box, String::Format(TEXT("Recursive call to function '{0}'!"), function->ToString())); @@ -808,7 +808,7 @@ void MaterialGenerator::ProcessGroupFunction(Box* box, Node* node, Value& value) value = Value::Zero; break; } - const auto function = Assets.LoadAsync((Guid)functionCallNode->Values[0]); + const auto function = Assets.Load((Guid)functionCallNode->Values[0]); if (!_functions.TryGet(functionCallNode, graph) || !function) { OnError(node, box, TEXT("Missing calling function graph.")); diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index b6616d159..688e46382 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -704,8 +704,8 @@ void ShaderGenerator::ProcessGroupTools(Box* box, Node* node, Value& value) case 16: { // Get the variable type - auto asset = Assets.LoadAsync((Guid)node->Values[0]); - if (!asset || asset->WaitForLoaded()) + auto asset = Assets.Load((Guid)node->Values[0]); + if (!asset) { OnError(node, box, TEXT("Failed to load Gameplay Global asset.")); value = Value::Zero;