00001 #ifndef COLLIDER_H
00002 #define COLLIDER_H
00003 #include "../config.h"
00004 #include <qptrlist.h>
00005 class SRCollider;
00006 class BBCollider;
00007 class VLCollider;
00008 class VLGroupCollider;
00013 class Collider{
00014 protected:
00015 int virtual getId()=0;
00016 public:
00017 #ifdef OPTIM
00018 static int nbinstance;
00019 #endif
00020 Collider();
00021 virtual ~Collider();
00022 virtual bool collide(Collider * bbc);
00023 virtual bool collide(BBCollider * bbc)=0;
00024 virtual bool collide(SRCollider * src)=0;
00025 virtual bool collide(VLGroupCollider * src)=0;
00026 virtual bool collide(VLCollider * src)=0;
00027 virtual double getRightX();
00028
00029 #ifdef DEBUGCOLLISION
00030 virtual double xCollision();
00031 virtual double yCollision();
00032 #endif
00033 };
00037 class SRCollider:public Collider{
00038 #ifdef DEBUGCOLLISION
00039 double xcl,ycl;
00040 #endif
00041 protected:
00042 int getId();
00043 public :
00044 double x1,x2;
00045 double y1,y2;
00046 SRCollider(double,double,double,double);
00047 ~SRCollider();
00048
00049 bool collide(BBCollider * bbc);
00050 bool collide(SRCollider * src);
00051 bool collide(VLCollider * src);
00052 bool collide(VLGroupCollider * vlgc);
00053
00054 #ifdef DEBUGCOLLISION
00055 virtual double xCollision();
00056 virtual double yCollision();
00057 #endif
00058 };
00062 class BBCollider:public Collider{
00063 protected:
00064 int getId();
00065 #ifdef DEBUGCOLLISION
00066 double xcl,ycl;
00067 #endif
00068 public :
00069 double x1,x2;
00070 double y1,y2;
00071 BBCollider(double,double,double,double);
00072 bool collide(BBCollider * bbc);
00073 bool collide(SRCollider * src);
00074 bool collide(VLCollider * vlc);
00075 bool collide(VLGroupCollider * vlgc);
00076 double getRightX();
00077 #ifdef DEBUGCOLLISION
00078 virtual double xCollision();
00079 virtual double yCollision();
00080 #endif
00081 ~BBCollider();
00082 };
00086 class VLCollider:public Collider{
00087 protected:
00088 int getId();
00089 public :
00090 double x;
00091 double y1,y2;
00092 VLCollider(double,double,double);
00093 bool collide(BBCollider * bbc);
00094 bool collide(SRCollider * src);
00095 bool collide(VLCollider * src);
00096 bool collide(VLGroupCollider * vlgc);
00097 #ifdef DEBUGCOLLISION
00098 virtual double xCollision();
00099 virtual double yCollision();
00100 #endif
00101 ~VLCollider();
00102 };
00103
00107 class VLGroupCollider:public Collider{
00108 #ifdef COLLISIONDEBUG
00109 double xcl,ycl;
00110 #endif
00111 protected:
00112 int getId();
00113 public :
00114 QPtrList<VLCollider> vlColliders;
00115 double x;
00116 double y1,y2;
00117 VLGroupCollider();
00118 void add(VLCollider);
00119 bool collide(BBCollider * bbc);
00120 bool collide(SRCollider * src);
00121 bool collide(VLCollider * src);
00122 bool collide(VLGroupCollider * vlgc);
00123 ~VLGroupCollider();
00124 };
00125
00126 #endif