00001 class ssgGrVtxArray : public ssgVtxArray
00002 {
00003 protected:
00004 ssgIndexArray *indices;
00005
00006 virtual void draw_geometry () ;
00007 virtual void copy_from ( ssgGrVtxArray *src, int clone_flags ) ;
00008
00009 public:
00010 virtual ssgBase *clone ( int clone_flags = 0 ) ;
00011 ssgGrVtxArray () ;
00012 ssgGrVtxArray ( GLenum ty, ssgVertexArray *vl,
00013 ssgNormalArray *nl,
00014 ssgTexCoordArray *tl,
00015 ssgColourArray *cl,
00016 ssgIndexArray *il ) ;
00017
00018 virtual void drawHighlight ( sgVec4 colour ) ;
00019 virtual void drawHighlight ( sgVec4 colour, int i ) ;
00020 virtual void pick ( int baseName ) ;
00021
00022 void setIndices ( ssgIndexArray *il ) ;
00023
00024 int getNumIndices () { return indices -> getNum () ; }
00025
00026 int getNumTriangles () { return ssgVtxArray::getNumTriangles();}
00027 void getTriangle ( int n, short *v1, short *v2, short *v3 ) { ssgVtxArray::getTriangle(n,v1,v2,v3);}
00028
00029 int getNumLines () {return ssgVtxArray::getNumLines();}
00030 void getLine ( int n, short *v1, short *v2 ) { ssgVtxArray::getLine(n,v1,v2);}
00031
00032 void getIndexList ( void **list ) { *list = indices -> get ( 0 ) ; }
00033
00034 short *getIndex (int i){ if(i>=getNumIndices())i=getNumIndices()-1;
00035 return (getNumIndices()<=0) ?
00036 &_ssgIndex0 : indices->get(i);}
00037
00038 virtual ~ssgVtxArray (void) ;
00039
00040 virtual char *getTypeName(void) { return ssgVtxArray::getTypeName();}
00041
00042 virtual void print ( FILE *fd = stderr, char *indent = "", int how_much = 2 ) { ssgVtxArray::print(fd,indent,how_much);}
00043 virtual int load ( FILE *fd ) {return ssgVtxArray::load(fd);}
00044 virtual int save ( FILE *fd ) {return ssgVtxArray::save(fd);}
00045 } ;