+ 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.00001; }
+ void Move(const glm::dvec3 &dp) noexcept;
+ void Accelerate(const glm::dvec3 &dv) noexcept;
+ void EnforceConstraints(State &) noexcept;
+ void CheckWrap() noexcept;
+
+ void Heading(const glm::dvec3 &h) noexcept { state.dir = h; }
+ const glm::dvec3 &Heading() const noexcept { return state.dir; }
+
+ void SetPlanetSurface(world::Planet &, const glm::dvec3 &pos) noexcept;