diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index 587fd38ee..be0d5ec27 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -57,6 +57,7 @@ namespace Nz class Mesh; struct Primitive; class PrimitiveList; + class StaticMesh; class SubMesh; using MeshVertex = VertexStruct_XYZ_Normal_UV_Tangent; @@ -132,6 +133,8 @@ namespace Nz Mesh& operator=(const Mesh&) = delete; Mesh& operator=(Mesh&&) = delete; + static inline std::shared_ptr Build(std::shared_ptr staticMesh); + 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()); static std::shared_ptr LoadFromStream(Stream& stream, const MeshParams& params = MeshParams()); diff --git a/include/Nazara/Utility/Mesh.inl b/include/Nazara/Utility/Mesh.inl index 0681e0850..daba241c6 100644 --- a/include/Nazara/Utility/Mesh.inl +++ b/include/Nazara/Utility/Mesh.inl @@ -4,16 +4,26 @@ #include #include +#include #include namespace Nz { - Mesh::Mesh() : + inline Mesh::Mesh() : m_materialData(1), m_aabbUpdated(false), m_isValid(false) { } + + inline std::shared_ptr Mesh::Build(std::shared_ptr staticMesh) + { + std::shared_ptr mesh = std::make_shared(); + mesh->CreateStatic(); + mesh->AddSubMesh(std::move(staticMesh)); + + return mesh; + } } #include