1 #ifndef _FGGROUND_HPP 2 #define _FGGROUND_HPP 3 4 #include "Ground.hpp" 5 6 class FGInterface; 7 namespace simgear { 8 class BVHMaterial; 9 } 10 11 namespace yasim { 12 13 // The XYZ coordinate system has Z as the earth's axis, the Y axis 14 // pointing out the equator at zero longitude, and the X axis pointing 15 // out the middle of the western hemisphere. 16 class FGGround : public Ground { 17 public: 18 FGGround(FGInterface *iface); 19 virtual ~FGGround(); 20 21 void getGroundPlane(const double pos[3], 22 double plane[4], float vel[3], 23 unsigned int &body) override; 24 25 void getGroundPlane(const double pos[3], 26 double plane[4], float vel[3], 27 const simgear::BVHMaterial **material, 28 unsigned int &body) override; 29 30 bool getBody(double t, double bodyToWorld[16], double linearVel[3], 31 double angularVel[3], unsigned int &id) override; 32 33 bool caughtWire(const double pos[4][3]) override; 34 35 bool getWire(double end[2][3], float vel[2][3]) override; 36 37 void releaseWire(void) override; 38 39 float getCatapult(const double pos[3], 40 double end[2][3], float vel[2][3]) override; 41 42 void setTimeOffset(double toff); 43 44 private: 45 FGInterface *_iface; 46 double _toff; 47 }; 48 49 }; // namespace yasim 50 #endif // _FGGROUND_HPP 51