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 class csPolyIndexed
00030 {
00031 protected:
00033 int* vertices_idx;
00035 int num_vertices;
00037 int max_vertices;
00038
00039 public:
00043 csPolyIndexed (int start_size = 10);
00044
00046 csPolyIndexed (csPolyIndexed& copy);
00047
00049 virtual ~csPolyIndexed ();
00050
00054 void MakeEmpty ();
00055
00059 int GetVertexCount () const { return num_vertices; }
00060
00064 int* GetVertexIndices () { return vertices_idx; }
00065
00069 const int* GetVertexIndices () const { return vertices_idx; }
00070
00074 int GetVertex (int i) const
00075 {
00076 if (i<0 || i>=num_vertices) return -1;
00077 return vertices_idx[i];
00078 }
00079
00083 int& operator[] (int i)
00084 {
00085 CS_ASSERT (i >= 0 && i < num_vertices);
00086 return vertices_idx[i];
00087 }
00088
00092 int& operator[] (int i) const
00093 {
00094 CS_ASSERT (i >= 0 && i < num_vertices);
00095 return vertices_idx[i];
00096 }
00097
00101 void MakeRoom (int new_max);
00102
00107 int AddVertex (int i);
00108 };
00109
00110 #endif // __CS_POLYIDX_H__