glm::dvec3 vel;
// acceleration
glm::dvec3 acc;
- // orientation adjust
- glm::dvec3 turn;
Derivative(
const glm::dvec3 &vel = glm::dvec3(0.0),
- const glm::dvec3 &acc = glm::dvec3(0.0),
- const glm::dvec3 &turn = glm::dvec3(0.0))
- : vel(vel), acc(acc), turn(turn) { }
+ const glm::dvec3 &acc = glm::dvec3(0.0))
+ : vel(vel), acc(acc) { }
};
public:
bool OnPlanet() const noexcept;
world::Planet &GetPlanet() const noexcept { return *planet; }
bool OnSurface() const noexcept;
- int Surface() const noexcept { return surface; }
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;
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; }
+ bool Moving() const noexcept { return glm::length2(state.vel) > 0.000001; }
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 &, int srf, const glm::dvec3 &pos) noexcept;
+ void SetPlanetSurface(world::Planet &, const glm::dvec3 &pos) noexcept;
public:
world::Planet *planet;
State state;
- int surface;
enum {
LOST,
PLANET_SURFACE,