00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _CIRCLECOLLISIONSHAPE_
00019 #define _CIRCLECOLLISIONSHAPE_
00020
00021 #include "game/BaseCollisionShape.h"
00022
00023 #include "util/Vector2.h"
00024
00025 class CircleCollisionShape : public BaseCollisionShape
00026 {
00027 private:
00028 Vector2 m_position;
00029 float m_fRadius;
00030 public:
00031 CircleCollisionShape()
00032 :m_fRadius(0.0f)
00033 {
00034 }
00035
00036 CircleCollisionShape(const Vector2 & position, const float fRadius)
00037 :m_position(position), m_fRadius(fRadius)
00038 {
00039 }
00040
00041 const Vector2 & GetPosition() const { return m_position; }
00042 void SetPosition(const Vector2 & position) { m_position = position; }
00043
00044 float GetRadius() const { return m_fRadius; }
00045 void SetRadius(const float fRadius) { m_fRadius = fRadius; }
00046
00047 virtual COLLISIONSHAPETYPE GetType() const
00048 {
00049 return COLLISIONSHAPETYPE_CIRCLE;
00050 }
00051
00052 virtual void ToStream(std::ostream& os) const;
00053 virtual void FromStream(std::istream& is);
00054 };
00055
00056 inline void CircleCollisionShape::ToStream(std::ostream& os) const
00057 {
00058 BaseCollisionShape::ToStream(os);
00059
00060 os << m_position << " " << m_fRadius << " ";
00061 }
00062
00063 inline void CircleCollisionShape::FromStream(std::istream& is)
00064 {
00065 BaseCollisionShape::FromStream(is);
00066
00067 is >> m_position >> m_fRadius;
00068 }
00069
00070 #endif