Updated mesh loader

Former-commit-id: 04c174544912a8c3c48e3fde7934cdc4edc19e07
This commit is contained in:
Lynix 2014-05-28 01:08:08 +02:00
parent fa5b1ab000
commit c8ae34f20b
1 changed files with 10 additions and 18 deletions

View File

@ -11,7 +11,7 @@
namespace namespace
{ {
nzTernary Check(NzInputStream& stream, const NzModelParameters& parameters) nzTernary CheckStatic(NzInputStream& stream, const NzModelParameters& parameters)
{ {
NazaraUnused(stream); NazaraUnused(stream);
NazaraUnused(parameters); NazaraUnused(parameters);
@ -19,7 +19,7 @@ namespace
return nzTernary_Unknown; return nzTernary_Unknown;
} }
bool Load(NzModel* model, NzInputStream& stream, const NzModelParameters& parameters) bool LoadStatic(NzModel* model, NzInputStream& stream, const NzModelParameters& parameters)
{ {
NazaraUnused(parameters); NazaraUnused(parameters);
@ -31,6 +31,12 @@ namespace
return false; return false;
} }
if (mesh->IsAnimable())
{
NazaraError("Can't load static mesh into animated model");
return false;
}
// Nous ne pouvons plus avoir recours au smart pointeur à partir d'ici si nous voulons être exception-safe // Nous ne pouvons plus avoir recours au smart pointeur à partir d'ici si nous voulons être exception-safe
NzMesh* meshPtr = mesh.get(); NzMesh* meshPtr = mesh.get();
@ -38,20 +44,6 @@ namespace
model->SetMesh(meshPtr); model->SetMesh(meshPtr);
mesh.release(); mesh.release();
if (parameters.loadAnimation && meshPtr->IsAnimable())
{
NzString animationPath = meshPtr->GetAnimation();
if (!animationPath.IsEmpty())
{
std::unique_ptr<NzAnimation> animation(new NzAnimation);
animation->SetPersistent(false);
if (animation->LoadFromFile(animationPath, parameters.animation) && model->SetAnimation(animation.get()))
animation.release();
else
NazaraWarning("Failed to load animation");
}
}
if (parameters.loadMaterials) if (parameters.loadMaterials)
{ {
unsigned int matCount = model->GetMaterialCount(); unsigned int matCount = model->GetMaterialCount();
@ -81,10 +73,10 @@ namespace
void NzLoaders_Mesh_Register() void NzLoaders_Mesh_Register()
{ {
NzModelLoader::RegisterLoader(NzMeshLoader::IsExtensionSupported, Check, Load); NzModelLoader::RegisterLoader(NzMeshLoader::IsExtensionSupported, CheckStatic, LoadStatic);
} }
void NzLoaders_Mesh_Unregister() void NzLoaders_Mesh_Unregister()
{ {
NzModelLoader::UnregisterLoader(NzMeshLoader::IsExtensionSupported, Check, Load); NzModelLoader::UnregisterLoader(NzMeshLoader::IsExtensionSupported, CheckStatic, LoadStatic);
} }