]> git.localhorst.tv Git - blobs.git/blob - src/world/Body.hpp
e3fd8ded17d2684befa5436fa76891b2c6ab3099
[blobs.git] / src / world / Body.hpp
1 #ifndef BLOBS_WORLD_BODY_HPP_
2 #define BLOBS_WORLD_BODY_HPP_
3
4 #include <vector>
5
6
7 namespace blobs {
8 namespace app {
9         class Assets;
10 }
11 namespace graphics {
12         class Viewport;
13 }
14 namespace world {
15
16 class Body {
17
18 public:
19         Body();
20         ~Body();
21
22         Body(const Body &) = delete;
23         Body &operator =(const Body &) = delete;
24
25         Body(Body &&) = delete;
26         Body &operator =(Body &&) = delete;
27
28 public:
29         bool HasParent() const { return parent; }
30         Body &Parent() { return *parent; }
31         const Body &Parent() const { return *parent; }
32         void SetParent(Body &);
33         void UnsetParent();
34
35         virtual void Draw(app::Assets &, graphics::Viewport &) { }
36
37 private:
38         void AddChild(Body &);
39         void RemoveChild(Body &);
40
41 private:
42         Body *parent;
43         std::vector<Body *> children;
44         double mass;
45         double radius;
46
47 };
48
49 }
50 }
51
52 #endif