From 095a44e9b15aed61f458ff37d3fcec465bad8b70 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 28 Jul 2014 12:25:59 +0200 Subject: [PATCH] Improved MD5 loaders code Fixed missing return Former-commit-id: b5fb298ab8b147bbfda07ffb2090d248156b96c7 --- src/Nazara/Utility/Loaders/MD5Anim/Loader.cpp | 9 ++++++++- src/Nazara/Utility/Loaders/MD5Mesh/Loader.cpp | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Nazara/Utility/Loaders/MD5Anim/Loader.cpp b/src/Nazara/Utility/Loaders/MD5Anim/Loader.cpp index 6558029d1..7035c3de8 100644 --- a/src/Nazara/Utility/Loaders/MD5Anim/Loader.cpp +++ b/src/Nazara/Utility/Loaders/MD5Anim/Loader.cpp @@ -15,12 +15,15 @@ namespace nzTernary Check(NzInputStream& stream, const NzAnimationParams& parameters) { + NazaraUnused(parameters); + NzMD5AnimParser parser(stream); return parser.Check(); } bool Load(NzAnimation* animation, NzInputStream& stream, const NzAnimationParams& parameters) { + ///TODO: Utiliser les paramètres NzMD5AnimParser parser(stream); if (!parser.Parse()) @@ -49,7 +52,9 @@ namespace NzSequenceJoint* sequenceJoints = animation->GetSequenceJoints(); // Pour que le squelette soit correctement aligné, il faut appliquer un quaternion "de correction" aux joints à la base du squelette - NzQuaternionf rotationQuat = NzEulerAnglesf(-90.f, 90.f, 0.f); + NzQuaternionf rotationQuat = NzQuaternionf::RotationBetween(NzVector3f::UnitX(), NzVector3f::Forward()) * + NzQuaternionf::RotationBetween(NzVector3f::UnitZ(), NzVector3f::Up()); + for (unsigned int i = 0; i < jointCount; ++i) { int parent = joints[i].parent; @@ -71,6 +76,8 @@ namespace sequenceJoint.scale.Set(1.f); } } + + return true; } } diff --git a/src/Nazara/Utility/Loaders/MD5Mesh/Loader.cpp b/src/Nazara/Utility/Loaders/MD5Mesh/Loader.cpp index ae3e22977..8b0a88802 100644 --- a/src/Nazara/Utility/Loaders/MD5Mesh/Loader.cpp +++ b/src/Nazara/Utility/Loaders/MD5Mesh/Loader.cpp @@ -36,7 +36,9 @@ namespace } // Pour que le squelette soit correctement aligné, il faut appliquer un quaternion "de correction" aux joints à la base du squelette - NzQuaternionf rotationQuat = NzEulerAnglesf(-90.f, 180.f, 0.f); + NzQuaternionf rotationQuat = NzQuaternionf::RotationBetween(NzVector3f::UnitX(), NzVector3f::Forward()) * + NzQuaternionf::RotationBetween(NzVector3f::UnitZ(), NzVector3f::Up()); + NzString baseDir = stream.GetDirectory(); // Le hellknight de Doom 3 fait ~120 unités, et il est dit qu'il fait trois mètres