[774] | 1 | #include "GeoSubMesh.h"
|
---|
| 2 |
|
---|
| 3 | using namespace Geometry;
|
---|
| 4 |
|
---|
[1009] | 5 | //---------------------------------------------------------------------------
|
---|
| 6 | // Constructor.
|
---|
| 7 | //---------------------------------------------------------------------------
|
---|
[774] | 8 | SubMesh::SubMesh():
|
---|
[1009] | 9 | mIndex(0),
|
---|
| 10 | mVertexBuffer(0),
|
---|
| 11 | mIndexCount(0),
|
---|
| 12 | mSharedVertexBuffer(false),
|
---|
| 13 | mStrip(0),
|
---|
| 14 | mStripCount(0),
|
---|
| 15 | mType(GEO_TRIANGLE_LIST)
|
---|
[774] | 16 | {
|
---|
[980] | 17 | strcpy(mMaterialName,"");
|
---|
[774] | 18 | }
|
---|
| 19 |
|
---|
[1009] | 20 | //---------------------------------------------------------------------------
|
---|
| 21 | // Destroyer.
|
---|
| 22 | //---------------------------------------------------------------------------
|
---|
[774] | 23 | SubMesh::~SubMesh()
|
---|
| 24 | {
|
---|
[1009] | 25 | delete [] mIndex;
|
---|
| 26 |
|
---|
| 27 | if (!mSharedVertexBuffer)
|
---|
| 28 | {
|
---|
| 29 | delete mVertexBuffer;
|
---|
| 30 | }
|
---|
[774] | 31 | }
|
---|
| 32 |
|
---|
[1009] | 33 | //---------------------------------------------------------------------------
|
---|
| 34 | // Load data from a serializer.
|
---|
| 35 | //---------------------------------------------------------------------------
|
---|
[774] | 36 | void SubMesh::Load(Serializer &s)
|
---|
| 37 | {
|
---|
[1009] | 38 | // Clear Data.
|
---|
| 39 | delete [] mIndex;
|
---|
| 40 |
|
---|
| 41 | mIndex = 0;
|
---|
| 42 |
|
---|
[774] | 43 | if (!mSharedVertexBuffer)
|
---|
| 44 | {
|
---|
| 45 | delete mVertexBuffer;
|
---|
[1009] | 46 |
|
---|
| 47 | mVertexBuffer = 0;
|
---|
[774] | 48 | }
|
---|
[1009] | 49 |
|
---|
| 50 | mIndexCount = 0;
|
---|
[774] | 51 |
|
---|
[1009] | 52 | // Load Data from Serializer.
|
---|
| 53 | s.ReadArray(&mSharedVertexBuffer, 1);
|
---|
| 54 |
|
---|
[774] | 55 | if (mSharedVertexBuffer)
|
---|
| 56 | {
|
---|
[1009] | 57 | mVertexBuffer = 0;
|
---|
[774] | 58 | }
|
---|
| 59 | else
|
---|
| 60 | {
|
---|
[1009] | 61 | mVertexBuffer = new VertexBuffer();
|
---|
| 62 |
|
---|
[774] | 63 | mVertexBuffer->Load(s);
|
---|
[1009] | 64 | }
|
---|
[774] | 65 |
|
---|
[1009] | 66 | s.ReadArray(&mIndexCount, 1);
|
---|
| 67 |
|
---|
| 68 | mIndex = new Index[mIndexCount];
|
---|
| 69 |
|
---|
| 70 | s.ReadArray(mIndex, mIndexCount);
|
---|
[774] | 71 | }
|
---|
| 72 |
|
---|
[1009] | 73 | //---------------------------------------------------------------------------
|
---|
| 74 | // Save data to a serializer.
|
---|
| 75 | //---------------------------------------------------------------------------
|
---|
[774] | 76 | void SubMesh::Save(Serializer &s)
|
---|
| 77 | {
|
---|
[1009] | 78 | s.WriteArray(&mSharedVertexBuffer, 1);
|
---|
| 79 |
|
---|
[774] | 80 | if (!mSharedVertexBuffer)
|
---|
| 81 | {
|
---|
| 82 | mVertexBuffer->Save(s);
|
---|
| 83 | }
|
---|
[1009] | 84 |
|
---|
| 85 | s.WriteArray(&mIndexCount, 1);
|
---|
| 86 | s.WriteArray(mIndex, mIndexCount);
|
---|
[774] | 87 | }
|
---|
[1009] | 88 |
|
---|