diff --git a/src/Editor/Asset/MeshLoader.cpp b/src/Editor/Asset/MeshLoader.cpp index f748e4f..340e37d 100644 --- a/src/Editor/Asset/MeshLoader.cpp +++ b/src/Editor/Asset/MeshLoader.cpp @@ -261,6 +261,7 @@ void MeshLoader::loadGlobalMeshes(const aiScene* scene, const Arrayid = id; globalMeshes[meshIndex]->referencedMaterial = materials[mesh->mMaterialIndex]; globalMeshes[meshIndex]->meshlets = std::move(meshlets); + globalMeshes[meshIndex]->indices = std::move(indices); globalMeshes[meshIndex]->vertexCount = mesh->mNumVertices; globalMeshes[meshIndex]->indexBuffer = std::move(indexBuffer); } diff --git a/src/Engine/Graphics/Buffer.cpp b/src/Engine/Graphics/Buffer.cpp index 5fab085..6232045 100644 --- a/src/Engine/Graphics/Buffer.cpp +++ b/src/Engine/Graphics/Buffer.cpp @@ -82,6 +82,7 @@ IndexBuffer::IndexBuffer(QueueFamilyMapping mapping, uint64 size, Gfx::SeIndexTy break; case SE_INDEX_TYPE_UINT32: numIndices = size / sizeof(uint32); + break; default: break; } diff --git a/src/Engine/Graphics/Mesh.cpp b/src/Engine/Graphics/Mesh.cpp index edcd265..5967307 100644 --- a/src/Engine/Graphics/Mesh.cpp +++ b/src/Engine/Graphics/Mesh.cpp @@ -16,6 +16,7 @@ void Mesh::save(ArchiveBuffer& buffer) const { Serialization::save(buffer, vertexData->getTypeName()); Serialization::save(buffer, vertexCount); + Serialization::save(buffer, indices); Serialization::save(buffer, meshlets); Serialization::save(buffer, referencedMaterial->getAssetIdentifier()); vertexData->serializeMesh(id, vertexCount, buffer); @@ -27,6 +28,14 @@ void Mesh::load(ArchiveBuffer& buffer) Serialization::load(buffer, typeName); Serialization::load(buffer, vertexCount); vertexData = VertexData::findByTypeName(typeName); + Serialization::load(buffer, indices); + indexBuffer = buffer.getGraphics()->createIndexBuffer(IndexBufferCreateInfo{ + .sourceData = { + .size = sizeof(uint32) * indices.size(), + .data = (uint8*)indices.data(), + }, + .indexType = Gfx::SeIndexType::SE_INDEX_TYPE_UINT32, + }); Serialization::load(buffer, meshlets); std::string refId; Serialization::load(buffer, refId); diff --git a/src/Engine/Graphics/Mesh.h b/src/Engine/Graphics/Mesh.h index 26816f0..36034b7 100644 --- a/src/Engine/Graphics/Mesh.h +++ b/src/Engine/Graphics/Mesh.h @@ -16,6 +16,7 @@ public: uint64 vertexCount; Gfx::OIndexBuffer indexBuffer; PMaterialInstanceAsset referencedMaterial; + Array indices; Array meshlets; void save(ArchiveBuffer& buffer) const; void load(ArchiveBuffer& buffer);