From 35c498bf21b792117c3f445c6ee52245f30993a5 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Sat, 20 May 2023 21:34:34 +0200 Subject: [PATCH] Core/ResourceLoader: Use stream path extension if possible to dismiss loaders --- include/Nazara/Core/ResourceLoader.inl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Core/ResourceLoader.inl b/include/Nazara/Core/ResourceLoader.inl index e4f218fc2..4bac401f7 100644 --- a/include/Nazara/Core/ResourceLoader.inl +++ b/include/Nazara/Core/ResourceLoader.inl @@ -199,6 +199,9 @@ namespace Nz NazaraAssert(stream.GetCursorPos() < stream.GetSize(), "No data to load"); NazaraAssert(parameters.IsValid(), "Invalid parameters"); + // Retrieve extension from stream (if any) + std::string ext = ToLower(PathToString(stream.GetPath().extension())); + UInt64 streamPos = stream.GetCursorPos(); bool found = false; for (auto& loaderPtr : m_loaders) @@ -208,6 +211,9 @@ namespace Nz if (loader.parameterFilter && !loader.parameterFilter(parameters)) continue; + if (loader.extensionSupport && !ext.empty() && !loader.extensionSupport(ext)) + continue; + stream.SetCursorPos(streamPos); // Load resource @@ -216,9 +222,10 @@ namespace Nz { ResourceLoadingError error = result.GetError(); if (error != ResourceLoadingError::Unrecognized) + { NazaraError("failed to load resource: loader failed"); - else found = true; + } continue; }