Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_POLYIDX_H__
00020 #define __CS_POLYIDX_H__
00021
00029 #include "csextern.h"
00030
00038 class CS_CRYSTALSPACE_EXPORT csPolyIndexed
00039 {
00040 protected:
00042 int* vertices_idx;
00044 int num_vertices;
00046 int max_vertices;
00047
00048 public:
00052 csPolyIndexed (int start_size = 10);
00053
00055 csPolyIndexed (csPolyIndexed& copy);
00056
00058 virtual ~csPolyIndexed ();
00059
00061 csPolyIndexed& operator = (const csPolyIndexed& other);
00062
00066 void MakeEmpty ();
00067
00071 int GetVertexCount () const { return num_vertices; }
00072
00076 int* GetVertexIndices () { return vertices_idx; }
00077
00081 const int* GetVertexIndices () const { return vertices_idx; }
00082
00086 int GetVertex (int i) const
00087 {
00088 if (i<0 || i>=num_vertices) return -1;
00089 return vertices_idx[i];
00090 }
00091
00095 int& operator[] (int i)
00096 {
00097 CS_ASSERT (i >= 0 && i < num_vertices);
00098 return vertices_idx[i];
00099 }
00100
00104 int& operator[] (int i) const
00105 {
00106 CS_ASSERT (i >= 0 && i < num_vertices);
00107 return vertices_idx[i];
00108 }
00109
00113 void MakeRoom (int new_max);
00114
00119 int AddVertex (int i);
00120 };
00121
00124 #endif // __CS_POLYIDX_H__