X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAICarrier.hxx;h=c359c3fcb35f4b5aba7dd373507650f45a9f6ef3;hb=90b2d25671d60ff3c5561791676f27d31676904c;hp=cf9c5cd333e18da2de74d1e9435eeb1b377bde25;hpb=4bfd1722df24f5be89459b25010e5d7352720a7b;p=flightgear.git diff --git a/src/AIModel/AICarrier.hxx b/src/AIModel/AICarrier.hxx index cf9c5cd33..c359c3fcb 100644 --- a/src/AIModel/AICarrier.hxx +++ b/src/AIModel/AICarrier.hxx @@ -16,18 +16,21 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #ifndef _FG_AICARRIER_HXX #define _FG_AICARRIER_HXX #include #include -#include + +#include +#include + #include -SG_USING_STD(string); -SG_USING_STD(list); +using std::string; +using std::list; #include "AIShip.hxx" @@ -37,7 +40,7 @@ SG_USING_STD(list); class FGAIManager; class FGAICarrier; -class FGAICarrierHardware : public ssgBase { +class FGAICarrierHardware : public osg::Referenced { public: enum Type { Catapult, Wire, Solid }; @@ -84,10 +87,9 @@ public: void setSign(const string& ); void setTACANChannelID(const string &); - void getVelocityWrtEarth(sgdVec3& v, sgdVec3& omega, sgdVec3& pivot); + void getVelocityWrtEarth(SGVec3d& v, SGVec3d& omega, SGVec3d& pivot); virtual void bind(); virtual void unbind(); - void UpdateFlols ( const sgdMat3& trans ); void UpdateWind ( double dt ); void setWind_from_east( double fps ); void setWind_from_north( double fps ); @@ -98,15 +100,15 @@ public: void TurnToLaunch(); void TurnToBase(); void ReturnToBox(); - float Horizon(float h); bool OutsideBox(); - bool init(); + bool init(bool search_in_AI_path=false); + void initModel(osg::Node *node); virtual const char* getTypeString(void) const { return "carrier"; } - bool getParkPosition(const string& id, Point3D& geodPos, - double& hdng, sgdVec3 uvw); + bool getParkPosition(const string& id, SGGeod& geodPos, + double& hdng, SGVec3d& uvw); private: /// Is sufficient to be private, stores a possible position to place an @@ -115,21 +117,16 @@ private: ParkPosition(const ParkPosition& pp) : name(pp.name), offset(pp.offset), heading_deg(pp.heading_deg) {} - ParkPosition(const string& n, const Point3D& off = Point3D(), double heading = 0) + ParkPosition(const string& n, const SGVec3d& off = SGVec3d(), double heading = 0) : name(n), offset(off), heading_deg(heading) {} string name; - Point3D offset; + SGVec3d offset; double heading_deg; }; void update(double dt); - void mark_nohot(ssgEntity*); - - bool mark_wires(ssgEntity*, const list&, bool = false); - bool mark_cat(ssgEntity*, const list&, bool = false); - bool mark_solid(ssgEntity*, const list&, bool = false); double wind_from_east; // fps double wind_from_north; // fps double rel_wind_speed_kts; @@ -143,13 +140,12 @@ private: string sign; // The sign of this carrier. // Velocity wrt earth. - sgdVec3 vel_wrt_earth; - sgdVec3 rot_wrt_earth; - sgdVec3 rot_pivot_wrt_earth; - + SGVec3d vel_wrt_earth; + SGVec3d rot_wrt_earth; + SGVec3d rot_pivot_wrt_earth; // these describe the flols - Point3D flols_off; + SGVec3d flols_off; double dist; // the distance of the eyepoint from the flols double angle; @@ -157,8 +153,7 @@ private: bool wave_off_lights; // these are for maneuvering the carrier - Point3D carrierpos; - Point3D initialpos; + SGGeod mOpBoxPos; double wind_speed_from_north_kts ; double wind_speed_from_east_kts ; @@ -178,17 +173,22 @@ private: SGPropertyNode_ptr _altitude_node; SGPropertyNode_ptr _surface_wind_from_deg_node; SGPropertyNode_ptr _surface_wind_speed_node; - + SGPropertyNode_ptr _launchbar_state_node; // this is for tacan string TACAN_channel_id; // these are for moving the elevators void UpdateElevator( double dt, double transition_time); - double step; double pos_norm, raw_pos_norm; double transition_time, time_constant; bool elevators; + + // these are for moving the jet blast deflectors + void UpdateJBD( double dt, double jbd_transition_time); + double jbd_pos_norm, raw_jbd_pos_norm; + double jbd_transition_time, jbd_time_constant; + bool jbd; }; #endif // _FG_AICARRIER_HXX