]> git.localhorst.tv Git - gworm.git/blob - src/world/World.h
basic gravity calculations
[gworm.git] / src / world / World.h
1 #ifndef GWORM_WORLD_H_
2 #define GWORM_WORLD_H_
3
4 #include "../graphics/Color.h"
5 #include "../graphics/Vector.h"
6
7 #include <vector>
8
9
10 namespace gworm {
11
12 class World {
13
14 public:
15         World(Vector<int> size);
16
17 public:
18         Vector<int> Size() const { return size; }
19
20 public:
21         void Update(float dt);
22
23         int Index(Vector<int> pos) const { return pos.x * size.y + pos.y; }
24
25         float MassAt(Vector<int> pos) const { return masses[Index(pos)]; }
26         void SetMass(Vector<int> pos, float m) { masses[Index(pos)] = m; }
27         Color ColorAt(Vector<int> pos) const { return colors[Index(pos)]; }
28         void SetColor(Vector<int> pos, Color c) { colors[Index(pos)] = c; }
29
30         Vector<float> ForceAt(Vector<float>, float m) const;
31
32 private:
33         Vector<int> size;
34         int count;
35
36         std::vector<float> masses;
37         std::vector<Color> colors;
38
39 };
40
41 }
42
43 #endif