00001 #ifndef FISH_H_ 00002 #define FISH_H_ 00003 #include <list> 00004 #include "Object.h" 00005 #include "Children.h" 00006 #include "Animation.h" 00007 #include "Translation.h" 00008 #include "Rotation.h" 00009 #include "Polygon.h" 00010 #include "Sphere.h" 00011 #include "Vector.h" 00012 #include "config.h" 00013 using std::list; 00014 00019 class Fish : public Object { 00020 protected: 00025 struct Data { 00026 GLfloat vertex[3]; 00027 GLfloat normal[3]; 00028 }; 00029 00033 Vector* position; 00034 00038 Vector* destination; 00039 00043 Vector* lastPosition; 00044 00048 int lastAngle; 00049 00053 int angle; 00054 00058 static list<Fish*> fishList; 00059 00063 bool friendly; 00064 00068 Transform* tail; 00069 00073 Transform* leftFin; 00074 00078 Transform* rightFin; 00079 00083 Children* fishParts; 00084 00088 static int unfriendlies; 00089 00093 static struct Data data[35]; 00094 00098 void constructParts(); 00099 00103 virtual bool move(); 00104 00105 public: 00109 static bool moveAll(); 00110 00114 static Fish* getFirst(); 00115 00119 Vector* getPosition(); 00120 00124 Fish(Material* mat, Text* name, Vector* position, Vector* direction); 00125 00129 bool getFriendly(); 00130 00134 virtual void draw(); 00135 00139 virtual ~Fish(); 00140 }; 00141 00142 #endif /*FISH_H_*/