2020-05-05 01:51:13 +02:00
|
|
|
#include "Mesh.h"
|
2023-11-06 14:47:21 +01:00
|
|
|
#include "Asset/AssetRegistry.h"
|
2024-06-09 12:20:04 +02:00
|
|
|
#include "Graphics/Graphics.h"
|
|
|
|
|
|
2020-06-02 11:46:18 +02:00
|
|
|
|
|
|
|
|
using namespace Seele;
|
|
|
|
|
|
2024-06-09 12:20:04 +02:00
|
|
|
Mesh::Mesh() {}
|
2020-06-02 11:46:18 +02:00
|
|
|
|
2024-06-09 12:20:04 +02:00
|
|
|
Mesh::~Mesh() {}
|
2023-11-01 13:38:49 +01:00
|
|
|
|
2024-06-09 12:20:04 +02:00
|
|
|
void Mesh::save(ArchiveBuffer& buffer) const {
|
2024-04-23 23:21:30 +02:00
|
|
|
Serialization::save(buffer, transform);
|
2023-11-01 13:38:49 +01:00
|
|
|
Serialization::save(buffer, vertexData->getTypeName());
|
|
|
|
|
Serialization::save(buffer, vertexCount);
|
2023-11-10 22:01:58 +01:00
|
|
|
Serialization::save(buffer, indices);
|
2023-11-01 13:38:49 +01:00
|
|
|
Serialization::save(buffer, meshlets);
|
2024-05-01 14:10:52 +02:00
|
|
|
Serialization::save(buffer, referencedMaterial->getFolderPath());
|
|
|
|
|
Serialization::save(buffer, referencedMaterial->getName());
|
2023-11-01 13:38:49 +01:00
|
|
|
vertexData->serializeMesh(id, vertexCount, buffer);
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-09 12:20:04 +02:00
|
|
|
void Mesh::load(ArchiveBuffer& buffer) {
|
2023-11-01 13:38:49 +01:00
|
|
|
std::string typeName;
|
2024-04-23 23:21:30 +02:00
|
|
|
Serialization::load(buffer, transform);
|
2023-11-01 13:38:49 +01:00
|
|
|
Serialization::load(buffer, typeName);
|
|
|
|
|
Serialization::load(buffer, vertexCount);
|
|
|
|
|
vertexData = VertexData::findByTypeName(typeName);
|
2023-11-10 22:01:58 +01:00
|
|
|
Serialization::load(buffer, indices);
|
2023-11-01 13:38:49 +01:00
|
|
|
Serialization::load(buffer, meshlets);
|
2024-05-01 14:10:52 +02:00
|
|
|
std::string refFolder;
|
|
|
|
|
Serialization::load(buffer, refFolder);
|
2023-11-06 14:47:21 +01:00
|
|
|
std::string refId;
|
|
|
|
|
Serialization::load(buffer, refId);
|
2024-05-01 14:10:52 +02:00
|
|
|
referencedMaterial = AssetRegistry::findMaterialInstance(refFolder, refId);
|
2023-11-01 13:38:49 +01:00
|
|
|
id = vertexData->allocateVertexData(vertexCount);
|
2023-11-26 11:27:39 +01:00
|
|
|
vertexData->loadMesh(id, indices, meshlets);
|
2023-11-01 13:38:49 +01:00
|
|
|
vertexData->deserializeMesh(id, buffer);
|
|
|
|
|
}
|