nuclear@1: #ifndef SHIP_H_ nuclear@1: #define SHIP_H_ nuclear@1: nuclear@1: #include nuclear@1: #include "game.h" nuclear@1: nuclear@6: class Vein; nuclear@6: nuclear@6: struct HitPoint { nuclear@6: Vector3 pos; nuclear@6: Vector3 normal; nuclear@6: }; nuclear@6: nuclear@1: class Ship { nuclear@1: private: nuclear@1: Vector3 pos, velocity; nuclear@1: Quaternion rot; nuclear@1: double friction; nuclear@6: Vein *vein; nuclear@1: nuclear@1: public: nuclear@6: Ship(Vein *vein); nuclear@1: nuclear@1: void accelerate(double a); nuclear@3: void accelerate_side(double a); nuclear@1: void turn(double yaw, double pitch); nuclear@1: nuclear@1: void update(time_sec_t dt); nuclear@1: nuclear@6: bool collision(const Vein *vein, const Vector3 &start, const Vector3 &end, HitPoint *hit) const; nuclear@6: nuclear@1: const Vector3 &get_position() const; nuclear@1: Vector3 get_direction() const; nuclear@3: Vector3 get_right() const; nuclear@1: nuclear@1: Matrix4x4 get_matrix() const; nuclear@1: nuclear@1: void dbg_draw() const; nuclear@1: }; nuclear@1: nuclear@1: nuclear@1: #endif // SHIP_H_