1 #ifndef BLOBS_CREATURE_SITUATION_HPP_
2 #define BLOBS_CREATURE_SITUATION_HPP_
4 #include "../math/glm.hpp"
22 const glm::dvec3 &pos = glm::dvec3(0.0),
23 const glm::dvec3 &vel = glm::dvec3(0.0))
24 : pos(pos), vel(vel) { }
30 const glm::dvec3 &vel = glm::dvec3(0.0),
31 const glm::dvec3 &acc = glm::dvec3(0.0))
32 : vel(vel), acc(acc) { }
39 Situation(const Situation &) = delete;
40 Situation &operator =(const Situation &) = delete;
42 Situation(Situation &&) = delete;
43 Situation &operator =(Situation &&) = delete;
46 bool OnPlanet() const noexcept;
47 world::Planet &GetPlanet() const noexcept { return *planet; }
48 bool OnSurface() const noexcept;
49 int Surface() const noexcept { return surface; }
50 const glm::dvec3 &Position() const noexcept { return state.pos; }
51 bool OnTile() const noexcept;
52 glm::ivec2 SurfacePosition() const noexcept;
53 world::Tile &GetTile() const noexcept;
54 const world::TileType &GetTileType() const noexcept;
56 void SetState(const State &s) noexcept { state = s; }
57 const State &GetState() const noexcept { return state; }
59 const glm::dvec3 &Velocity() const noexcept { return state.vel; }
60 bool Moving() const noexcept { return glm::length2(state.vel) < 0.00000001; }
61 void Move(const glm::dvec3 &dp) noexcept;
62 void SetPlanetSurface(world::Planet &, int srf, const glm::dvec3 &pos) noexcept;
65 world::Planet *planet;