Add assimp-based mesh import

This commit is contained in:
2026-03-26 02:53:34 +08:00
parent b414bc5326
commit cb05472205
103 changed files with 24502 additions and 25 deletions

View File

@@ -11,6 +11,12 @@ void Mesh::Release() {
m_vertexData.Clear();
m_indexData.Clear();
m_sections.Clear();
m_vertexCount = 0;
m_vertexStride = 0;
m_attributes = VertexAttribute::Position;
m_indexCount = 0;
m_use32BitIndex = false;
UpdateMemorySize();
SetInvalid();
}
@@ -21,9 +27,11 @@ void Mesh::SetVertexData(const void* data, size_t size, Core::uint32 vertexCount
m_attributes = attributes;
m_vertexData.Resize(size);
std::memcpy(m_vertexData.Data(), data, size);
m_memorySize += size;
if (size > 0 && data != nullptr) {
std::memcpy(m_vertexData.Data(), data, size);
}
UpdateMemorySize();
}
void Mesh::SetIndexData(const void* data, size_t size, Core::uint32 indexCount, bool use32Bit) {
@@ -31,13 +39,22 @@ void Mesh::SetIndexData(const void* data, size_t size, Core::uint32 indexCount,
m_use32BitIndex = use32Bit;
m_indexData.Resize(size);
std::memcpy(m_indexData.Data(), data, size);
m_memorySize += size;
if (size > 0 && data != nullptr) {
std::memcpy(m_indexData.Data(), data, size);
}
UpdateMemorySize();
}
void Mesh::AddSection(const MeshSection& section) {
m_sections.PushBack(section);
UpdateMemorySize();
}
void Mesh::UpdateMemorySize() {
m_memorySize = m_vertexData.Size() +
m_indexData.Size() +
m_sections.Size() * sizeof(MeshSection);
}
} // namespace Resources