+ const glm::dvec3 &Position() const noexcept { return state.pos; }
+ bool OnTile() const noexcept;
+ glm::ivec2 SurfacePosition() const noexcept;
+ world::Tile &GetTile() const noexcept;
+ const world::TileType &GetTileType() const noexcept;
+
+ void SetState(const State &s) noexcept { state = s; }
+ const State &GetState() const noexcept { return state; }
+
+ const glm::dvec3 &Velocity() const noexcept { return state.vel; }
+ bool Moving() const noexcept { return glm::length2(state.vel) < 0.00000001; }
+ void Move(const glm::dvec3 &dp) noexcept;
+
+ void Heading(const glm::dvec3 &h) noexcept { state.dir = h; }
+ const glm::dvec3 &Heading() const noexcept { return state.dir; }