Fixed ResourceLoader bad stream pos after recover
Former-commit-id: d7c7bb33e055ca44ca5690294b504d6ccb644dde
This commit is contained in:
parent
4fbe508960
commit
64601a72e7
|
|
@ -31,7 +31,7 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
|
||||||
NzFile file(path, NzFile::ReadOnly);
|
NzFile file(path, NzFile::ReadOnly);
|
||||||
if (!file.IsOpen())
|
if (!file.IsOpen())
|
||||||
{
|
{
|
||||||
NazaraError("Failed to open file");
|
NazaraError("Failed to open \"" + path + '"');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,6 +42,8 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
|
||||||
int cmp = NzString::Compare(loaderExt, ext);
|
int cmp = NzString::Compare(loaderExt, ext);
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
{
|
{
|
||||||
|
file.SetCursorPos(0);
|
||||||
|
|
||||||
if (!std::get<1>(*loader)(file, parameters))
|
if (!std::get<1>(*loader)(file, parameters))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -52,8 +54,6 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
NazaraWarning("Loader failed");
|
NazaraWarning("Loader failed");
|
||||||
|
|
||||||
file.SetCursorPos(0);
|
|
||||||
}
|
}
|
||||||
else if (cmp < 0) // S'il est encore possible que l'extension se situe après
|
else if (cmp < 0) // S'il est encore possible que l'extension se situe après
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -95,11 +95,13 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
|
||||||
nzUInt64 streamPos = stream.GetCursorPos();
|
nzUInt64 streamPos = stream.GetCursorPos();
|
||||||
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
|
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
|
||||||
{
|
{
|
||||||
|
stream.SetCursorPos(streamPos);
|
||||||
|
|
||||||
// Le loader supporte-t-il les données ?
|
// Le loader supporte-t-il les données ?
|
||||||
if (!std::get<1>(*loader)(stream, parameters))
|
if (!std::get<1>(*loader)(stream, parameters))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// On repositionne le stream au début
|
// On repositionne le stream à son ancienne position
|
||||||
stream.SetCursorPos(streamPos);
|
stream.SetCursorPos(streamPos);
|
||||||
|
|
||||||
// Chargement de la ressource
|
// Chargement de la ressource
|
||||||
|
|
@ -107,7 +109,6 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
NazaraWarning("Loader failed");
|
NazaraWarning("Loader failed");
|
||||||
stream.SetCursorPos(streamPos); // On repositionne au début
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NazaraError("Failed to load file: no loader");
|
NazaraError("Failed to load file: no loader");
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
#include <Nazara/Core/Config.hpp>
|
#include <Nazara/Core/Config.hpp>
|
||||||
#include <Nazara/Core/Error.hpp>
|
#include <Nazara/Core/Error.hpp>
|
||||||
#include <Nazara/Core/ResourceListener.hpp>
|
#include <Nazara/Core/ResourceListener.hpp>
|
||||||
|
#include <Nazara/Utility/VertexDeclaration.hpp>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue