00001 00006 #ifndef __COLLISIONRECTANGLE_H__ 00007 #define __COLLISIONRECTANGLE_H__ 00008 00009 #ifdef __APPLE__ 00010 #include <GraphicsLib/RealRect.h> 00011 #include <GraphicsLib/Point3.h> 00012 #include <GraphicsLib/types.h> 00013 #include <GraphicsLib/Vector.h> 00014 #include <GraphicsLib/Util.h> 00015 #else 00016 #include "RealRect.h" 00017 #include "Point3.h" 00018 #include "types.h" 00019 #include "Vector.h" 00020 #include "Util.h" 00021 #endif 00022 00023 #include "Particle.h" 00024 #include "CollisionObject.h" 00025 #include "Debugger.h" 00026 00027 00028 00029 namespace ParticleSystems { 00031 00036 class CollisionRectangle : public CollisionObject { 00037 public: 00039 00046 CollisionRectangle( GraphicsLib::Point3 *c1, GraphicsLib::Point3 *c2, GraphicsLib::Point3 *c3, GraphicsLib::Point3 *c4); 00047 00049 00052 virtual ~CollisionRectangle(); 00053 00055 00060 virtual void collide(Particle *p); 00061 00063 00066 virtual void draw(); 00067 00069 00072 virtual void translate(); 00073 00075 00078 virtual void rotate(); 00079 00081 00084 virtual void scale(); 00085 00087 00092 GraphicsLib::Real getDistance(GraphicsLib::Vector *v, GraphicsLib::Point3 *p); 00093 00095 00099 void calcCenter(); 00100 00102 00106 void calculateNormal(); 00107 00109 00112 GraphicsLib::Real BBheight(); 00113 00115 00118 GraphicsLib::Real BBwidth(); 00119 00121 00124 GraphicsLib::Real BBdepth(); 00125 00127 00133 float max(float a, float b); 00134 00136 00142 float min(float a, float b); 00143 00145 00148 GraphicsLib::Point3 corner1; 00149 00151 00154 GraphicsLib::Point3 corner2; 00155 00157 00160 GraphicsLib::Point3 corner3; 00161 00163 00166 GraphicsLib::Point3 corner4; 00167 00169 00172 GraphicsLib::Point3 center; 00173 00175 00178 GraphicsLib::Vector normal; 00179 00180 }; 00181 } 00182 #endif 00183