From b0b9c615580516521e28da4a999af6c20e01756e Mon Sep 17 00:00:00 2001 From: SirLynix Date: Thu, 9 Mar 2023 17:51:16 +0100 Subject: [PATCH] Utility/Mesh: Add Build overloads --- include/Nazara/Utility/Mesh.hpp | 4 +++- include/Nazara/Utility/Mesh.inl | 18 ++++++++++++++++++ src/Nazara/Utility/Mesh.cpp | 6 +++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index 848fe0f5f..891901593 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -104,7 +104,7 @@ namespace Nz void AddSubMesh(const std::string& identifier, std::shared_ptr subMesh); std::shared_ptr BuildSubMesh(const Primitive& primitive, const MeshParams& params = MeshParams()); - void BuildSubMeshes(const PrimitiveList& list, const MeshParams& params = MeshParams()); + void BuildSubMeshes(const PrimitiveList& primitiveList, const MeshParams& params = MeshParams()); bool CreateSkeletal(std::size_t jointCount); bool CreateStatic(); @@ -156,6 +156,8 @@ namespace Nz Mesh& operator=(Mesh&&) = delete; static inline std::shared_ptr Build(std::shared_ptr staticMesh); + static inline std::shared_ptr Build(const Primitive& primitive, const MeshParams& params = MeshParams()); + static inline std::shared_ptr Build(const PrimitiveList& primitiveList, const MeshParams& params = MeshParams()); static std::shared_ptr LoadFromFile(const std::filesystem::path& filePath, const MeshParams& params = MeshParams()); static std::shared_ptr LoadFromMemory(const void* data, std::size_t size, const MeshParams& params = MeshParams()); diff --git a/include/Nazara/Utility/Mesh.inl b/include/Nazara/Utility/Mesh.inl index b77bf4d71..aec85b471 100644 --- a/include/Nazara/Utility/Mesh.inl +++ b/include/Nazara/Utility/Mesh.inl @@ -24,6 +24,24 @@ namespace Nz return mesh; } + + inline std::shared_ptr Build(const Primitive& primitive, const MeshParams& params) + { + std::shared_ptr mesh = std::make_shared(); + mesh->CreateStatic(); + mesh->BuildSubMesh(primitive, params); + + return mesh; + } + + inline std::shared_ptr Build(const PrimitiveList& primitiveList, const MeshParams& params) + { + std::shared_ptr mesh = std::make_shared(); + mesh->CreateStatic(); + mesh->BuildSubMeshes(primitiveList, params); + + return mesh; + } } #include diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index 4205713bc..7f44f1d86 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -249,10 +249,10 @@ namespace Nz return subMesh; } - void Mesh::BuildSubMeshes(const PrimitiveList& list, const MeshParams& params) + void Mesh::BuildSubMeshes(const PrimitiveList& primitiveList, const MeshParams& params) { - for (std::size_t i = 0; i < list.GetSize(); ++i) - BuildSubMesh(list.GetPrimitive(i), params); + for (std::size_t i = 0; i < primitiveList.GetSize(); ++i) + BuildSubMesh(primitiveList.GetPrimitive(i), params); } bool Mesh::CreateSkeletal(std::size_t jointCount)