Utility/Mesh: Add Build overloads

This commit is contained in:
SirLynix 2023-03-09 17:51:16 +01:00
parent 3edffa8399
commit b0b9c61558
3 changed files with 24 additions and 4 deletions

View File

@ -104,7 +104,7 @@ namespace Nz
void AddSubMesh(const std::string& identifier, std::shared_ptr<SubMesh> subMesh);
std::shared_ptr<SubMesh> 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<Mesh> Build(std::shared_ptr<StaticMesh> staticMesh);
static inline std::shared_ptr<Mesh> Build(const Primitive& primitive, const MeshParams& params = MeshParams());
static inline std::shared_ptr<Mesh> Build(const PrimitiveList& primitiveList, const MeshParams& params = MeshParams());
static std::shared_ptr<Mesh> LoadFromFile(const std::filesystem::path& filePath, const MeshParams& params = MeshParams());
static std::shared_ptr<Mesh> LoadFromMemory(const void* data, std::size_t size, const MeshParams& params = MeshParams());

View File

@ -24,6 +24,24 @@ namespace Nz
return mesh;
}
inline std::shared_ptr<Mesh> Build(const Primitive& primitive, const MeshParams& params)
{
std::shared_ptr<Mesh> mesh = std::make_shared<Mesh>();
mesh->CreateStatic();
mesh->BuildSubMesh(primitive, params);
return mesh;
}
inline std::shared_ptr<Mesh> Build(const PrimitiveList& primitiveList, const MeshParams& params)
{
std::shared_ptr<Mesh> mesh = std::make_shared<Mesh>();
mesh->CreateStatic();
mesh->BuildSubMeshes(primitiveList, params);
return mesh;
}
}
#include <Nazara/Utility/DebugOff.hpp>

View File

@ -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)