00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _CIRCLECOLLISIONHULL_
00019 #define _CIRCLECOLLISIONHULL_
00020
00021 #include "game/BaseCollisionHull.h"
00022 #include "game/CollisionHullFactory.h"
00023
00024 #include "util/Vector2.h"
00025
00026 class CircleCollisionHull : public BaseCollisionHull
00027 {
00028 private:
00029
00030 Vector2 m_position;
00031
00032 float m_fRadius;
00033
00034 Material m_material;
00035
00036 public:
00037
00038 DEFAULT_COLLISIONHULL_CONSTRUCTOR(CircleCollisionHull, INIT1(m_fRadius, 0.0f));
00039
00040 CircleCollisionHull(const Vector2 & position, const float fRadius, const Material & material)
00041 :BaseCollisionHull("collisionhull_circle"), m_position(position), m_fRadius(fRadius), m_material(material)
00042 {
00043 }
00044
00045 virtual void ParseShapes();
00046
00047 virtual bool FromAttribute(const Attribute * pRoot);
00048
00049 const Vector2 & GetPosition() const { return m_position; }
00050 void SetPosition(const Vector2 & position) { m_position = position; }
00051
00052 float GetRadius() const { return m_fRadius; }
00053 void SetRadius(const float fRadius) { m_fRadius = fRadius; }
00054
00055 const Material & GetMaterial() const { return m_material; }
00056 void SetMaterial(const Material & material) { m_material = material; }
00057 };
00058
00059 typedef boost::shared_ptr<CircleCollisionHull> CircleCollisionHullPtr;
00060
00061 REGISTER_COLLISIONHULL(CircleCollisionHull, "collisionhull_circle");
00062
00063 #endif