]> git.localhorst.tv Git - sdl-test8.git/blob - src/shape/Circle.h
added collision engine, more or less stole gameplay from sdl-test7
[sdl-test8.git] / src / shape / Circle.h
1 /*
2  * Circle.h
3  *
4  *  Created on: Apr 29, 2012
5  *      Author: holy
6  */
7
8 #ifndef SHAPE_CIRCLE_H_
9 #define SHAPE_CIRCLE_H_
10
11 #include "Shape.h"
12
13 namespace shape {
14
15 class Circle
16 : public Shape {
17
18         public:
19                 Circle(void) { };
20                 explicit Circle(Scalar r, Vector pos = Vector()) : center(pos), radius(r) { };
21                 virtual ~Circle(void) { };
22
23         public:
24                 const Vector &Center(void) const { return center; };
25                 Scalar Radius(void) const { return radius; };
26
27                 Scalar Left(void) const { return center.X() - radius; };
28                 Scalar Top(void) const { return center.Y() - radius; };
29                 Scalar Right(void) const { return center.X() + radius; };
30                 Scalar Bottom(void) const { return center.Y() + radius; };
31
32         public:
33                 virtual void Translate(const Vector &delta);
34                 virtual void Rotate(Scalar delta);
35
36         public:
37                 virtual bool CheckCollision(const Shape &, Ray &) const;
38                 virtual bool CheckCollision(const AABB &, Ray &) const;
39                 virtual bool CheckCollision(const Circle &, Ray &) const;
40
41         public:
42                 virtual std::ostream &Write(std::ostream &) const;
43
44         private:
45                 Vector center;
46                 Scalar radius;
47
48 };
49
50 }
51
52 #endif /* SHAPE_CIRCLE_H_ */