#include "GeoSubMesh.h" using namespace Geometry; //--------------------------------------------------------------------------- // Constructor. //--------------------------------------------------------------------------- SubMesh::SubMesh(): mIndex(0), mVertexBuffer(0), mIndexCount(0), mSharedVertexBuffer(false), mStrip(0), mStripCount(0), mType(GEO_TRIANGLE_LIST) { strcpy(mName,""); strcpy(mMaterialName,""); } //--------------------------------------------------------------------------- // Destroyer. //--------------------------------------------------------------------------- SubMesh::~SubMesh() { delete [] mIndex; if (!mSharedVertexBuffer) { delete mVertexBuffer; } } //--------------------------------------------------------------------------- // Load data from a serializer. //--------------------------------------------------------------------------- void SubMesh::Load(Serializer &s) { // Clear Data. delete [] mIndex; mIndex = 0; if (!mSharedVertexBuffer) { delete mVertexBuffer; mVertexBuffer = 0; } mIndexCount = 0; // Load Data from Serializer. s.ReadArray(&mSharedVertexBuffer, 1); if (mSharedVertexBuffer) { mVertexBuffer = 0; } else { mVertexBuffer = new VertexBuffer(); mVertexBuffer->Load(s); } s.ReadArray(&mIndexCount, 1); mIndex = new Index[mIndexCount]; s.ReadArray(mIndex, mIndexCount); } //--------------------------------------------------------------------------- // Save data to a serializer. //--------------------------------------------------------------------------- void SubMesh::Save(Serializer &s) { s.WriteArray(&mSharedVertexBuffer, 1); if (!mSharedVertexBuffer) { mVertexBuffer->Save(s); } s.WriteArray(&mIndexCount, 1); s.WriteArray(mIndex, mIndexCount); }