X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FWorld.h;h=8a00f60541302a489d8e34565c916eecea3f7b5d;hb=ba1cd7abc93eaacc3c25c0ad1b923b2ce7b280e2;hp=4cb5a2711096f4b7be4e3361aa8d8a292616a0b3;hpb=587986123da991c9d640d43f26a8c7035cd7cec5;p=gworm.git diff --git a/src/world/World.h b/src/world/World.h index 4cb5a27..8a00f60 100644 --- a/src/world/World.h +++ b/src/world/World.h @@ -1,9 +1,11 @@ #ifndef GWORM_WORLD_H_ #define GWORM_WORLD_H_ +#include "Entity.h" #include "../graphics/Color.h" #include "../graphics/Vector.h" +#include #include @@ -20,6 +22,8 @@ public: public: void Update(float dt); + bool InBounds(Vector pos) const + { return pos.x > 0 && pos.y > 0 && pos.x < size.x && pos.y < size.y; } int Index(Vector pos) const { return pos.x * size.y + pos.y; } float MassAt(Vector pos) const { return masses[Index(pos)]; } @@ -27,7 +31,13 @@ public: Color ColorAt(Vector pos) const { return colors[Index(pos)]; } void SetColor(Vector pos, Color c) { colors[Index(pos)] = c; } + const std::list &Entities() const { return entities; } + Entity &AddEntity(const Entity &); + Vector ForceAt(Vector, float m) const; + bool WorldCollision(const Entity &, Vector &) const; + Vector NormalAt(Vector) const; + bool IsSurface(Vector) const; private: Vector size; @@ -36,6 +46,8 @@ private: std::vector masses; std::vector colors; + std::list entities; + }; }