#include "GeoMesh.h" using namespace Geometry; //---------------------------------------------------------------------------- Mesh::Mesh(): mVertexBuffer(0), mSubMeshCount(0), mSubMesh(0), mType(GEO_TRIANGLE_LIST) { } Mesh::~Mesh() { delete[] mSubMesh; delete mVertexBuffer; } void Mesh::Load(Serializer &s) { bool sharedVertexBuffer = false; //Clear Data delete[] mSubMesh; mSubMesh = 0; delete mVertexBuffer; mVertexBuffer = 0; mSubMeshCount = 0; s.ReadArray(&sharedVertexBuffer,1); if (sharedVertexBuffer) { mVertexBuffer = new VertexBuffer; mVertexBuffer->Load(s); } s.ReadArray(&mSubMeshCount,1); mSubMesh = new SubMesh[mSubMeshCount]; for(size_t i = 0; i < mSubMeshCount; ++i) { mSubMesh[i].Load(s); if (mSubMesh[i].mSharedVertexBuffer && sharedVertexBuffer) { mSubMesh[i].mVertexBuffer = mVertexBuffer; } } } void Mesh::Save(Serializer &s) { bool sharedVertexBuffer = (mVertexBuffer != 0); s.WriteArray(&sharedVertexBuffer, 1); if (sharedVertexBuffer) { mVertexBuffer->Save(s); } s.WriteArray(&mSubMeshCount,1); for(size_t i = 0; i < mSubMeshCount; ++i) { mSubMesh[i].Save(s); } }