diff --git a/include/Nazara/Audio.hpp b/include/Nazara/Audio.hpp index d98e83123..c5ff22166 100644 --- a/include/Nazara/Audio.hpp +++ b/include/Nazara/Audio.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 13 Mar 2013 at 23:20:31 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Audio module diff --git a/include/Nazara/Core.hpp b/include/Nazara/Core.hpp index 435fbd5a7..73cfcb931 100644 --- a/include/Nazara/Core.hpp +++ b/include/Nazara/Core.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 09 Jun 2013 at 11:23:10 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Core module @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include diff --git a/include/Nazara/Graphics.hpp b/include/Nazara/Graphics.hpp index 0b57acf76..81ec3a609 100644 --- a/include/Nazara/Graphics.hpp +++ b/include/Nazara/Graphics.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 21 Aug 2013 at 19:43:23 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Graphics module @@ -36,6 +36,15 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -44,6 +53,7 @@ #include #include #include +#include #include #include #include diff --git a/include/Nazara/Lua.hpp b/include/Nazara/Lua.hpp index 403488e90..bcea61d7c 100644 --- a/include/Nazara/Lua.hpp +++ b/include/Nazara/Lua.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 24 Apr 2013 at 11:49:37 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Lua scripting module diff --git a/include/Nazara/Math.hpp b/include/Nazara/Math.hpp index 1cd26a9b7..0b7e1ab45 100644 --- a/include/Nazara/Math.hpp +++ b/include/Nazara/Math.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 09 Jun 2013 at 11:23:10 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Mathematics module diff --git a/include/Nazara/Noise.hpp b/include/Nazara/Noise.hpp index bdd04afd3..d67ef4b85 100644 --- a/include/Nazara/Noise.hpp +++ b/include/Nazara/Noise.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 13 Mar 2013 at 23:20:31 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Noise module diff --git a/include/Nazara/Physics.hpp b/include/Nazara/Physics.hpp index d107c467b..905902bd7 100644 --- a/include/Nazara/Physics.hpp +++ b/include/Nazara/Physics.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 21 May 2013 at 13:57:27 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Physics module diff --git a/include/Nazara/Renderer.hpp b/include/Nazara/Renderer.hpp index 7b75d3715..32611d6e4 100644 --- a/include/Nazara/Renderer.hpp +++ b/include/Nazara/Renderer.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 21 Aug 2013 at 19:43:23 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Renderer module @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include diff --git a/include/Nazara/Utility.hpp b/include/Nazara/Utility.hpp index 64b83484f..3bb344a43 100644 --- a/include/Nazara/Utility.hpp +++ b/include/Nazara/Utility.hpp @@ -1,4 +1,4 @@ -// This file was automatically generated on 09 Jun 2013 at 11:23:10 +// This file was automatically generated on 20 Dec 2013 at 20:02:16 /* Nazara Engine - Window module diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index c025318f7..b8e9369fc 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -33,6 +33,9 @@ struct NAZARA_API NzMeshParams // Charger une version animée du mesh si possible ? bool animated = true; + // Faut-il centrer le mesh autour de l'origine ? + bool center = false; + // Faut-il optimiser les index buffers ? (Rendu plus rapide, mais le chargement dure plus longtemps) bool optimizeIndexBuffers = true; diff --git a/include/Nazara/Utility/StaticMesh.hpp b/include/Nazara/Utility/StaticMesh.hpp index f952aac10..d0846062d 100644 --- a/include/Nazara/Utility/StaticMesh.hpp +++ b/include/Nazara/Utility/StaticMesh.hpp @@ -22,6 +22,8 @@ class NAZARA_API NzStaticMesh final : public NzSubMesh, NzResourceListener NzStaticMesh(const NzMesh* parent); virtual ~NzStaticMesh(); + void Center(); + bool Create(NzVertexBuffer* vertexBuffer); void Destroy(); diff --git a/src/Nazara/Graphics/Loaders/OBJ/Loader.cpp b/src/Nazara/Graphics/Loaders/OBJ/Loader.cpp index eaf4e9ce4..249bb5737 100644 --- a/src/Nazara/Graphics/Loaders/OBJ/Loader.cpp +++ b/src/Nazara/Graphics/Loaders/OBJ/Loader.cpp @@ -63,7 +63,7 @@ namespace unsigned int faceCount = meshes[i].faces.size(); std::vector indices; - indices.reserve(faceCount*3); // Pire cas (si les faces sont des triangles) + indices.reserve(faceCount*3); // Pire cas si les faces sont des triangles // Bien plus rapide qu'un vector (pour la recherche) std::unordered_map>> vertices; @@ -167,6 +167,9 @@ namespace subMesh->SetMaterialIndex(meshes[i].material); subMesh->SetPrimitiveMode(nzPrimitiveMode_TriangleList); + if (parameters.mesh.center) + subMesh->Center(); + if (hasNormals && hasTexCoords) subMesh->GenerateTangents(); else if (hasTexCoords) diff --git a/src/Nazara/Utility/Loaders/MD2/Loader.cpp b/src/Nazara/Utility/Loaders/MD2/Loader.cpp index fbe051267..cca1a29ce 100644 --- a/src/Nazara/Utility/Loaders/MD2/Loader.cpp +++ b/src/Nazara/Utility/Loaders/MD2/Loader.cpp @@ -227,6 +227,10 @@ namespace subMesh->GenerateAABB(); subMesh->GenerateTangents(); subMesh->SetMaterialIndex(0); + + if (parameters.center) + subMesh->Center(); + mesh->AddSubMesh(subMesh.release()); return true; diff --git a/src/Nazara/Utility/Loaders/MD5Mesh/Parser.cpp b/src/Nazara/Utility/Loaders/MD5Mesh/Parser.cpp index b4970bee7..d3406e0f0 100644 --- a/src/Nazara/Utility/Loaders/MD5Mesh/Parser.cpp +++ b/src/Nazara/Utility/Loaders/MD5Mesh/Parser.cpp @@ -351,10 +351,14 @@ bool NzMD5MeshParser::Parse(NzMesh* mesh) // Material mesh->SetMaterial(i, baseDir + md5Mesh.shader); + subMesh->GenerateAABB(); subMesh->GenerateNormalsAndTangents(); subMesh->SetMaterialIndex(i); + if (m_parameters.center) + subMesh->Center(); + mesh->AddSubMesh(subMesh.get()); subMesh.release(); } diff --git a/src/Nazara/Utility/StaticMesh.cpp b/src/Nazara/Utility/StaticMesh.cpp index 0a21350b6..407e09067 100644 --- a/src/Nazara/Utility/StaticMesh.cpp +++ b/src/Nazara/Utility/StaticMesh.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -20,6 +21,20 @@ NzStaticMesh::~NzStaticMesh() Destroy(); } +void NzStaticMesh::Center() +{ + NzVector3f offset(m_aabb.x + m_aabb.width/2.f, m_aabb.y + m_aabb.height/2.f, m_aabb.z + m_aabb.depth/2.f); + + NzVertexMapper mapper(this); + unsigned int vertexCount = mapper.GetVertexCount(); + for (unsigned int i = 0; i < vertexCount; ++i) + mapper.SetPosition(i, mapper.GetPosition(i) - offset); + + m_aabb.x -= offset.x; + m_aabb.y -= offset.y; + m_aabb.z -= offset.z; +} + bool NzStaticMesh::Create(NzVertexBuffer* vertexBuffer) { Destroy();