X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIManager.hxx;h=8b3582b39f25d6bc9f4c4990c698fe38d2689394;hb=7e73a8788223c9c2af3c26435162e0667b412279;hp=b88203d69cd7c418c63f431c2664a0f8cb9a796c;hpb=6cf05270f5c2c76aefc8a961fa8ba3bdbc555971;p=flightgear.git diff --git a/src/AIModel/AIManager.hxx b/src/AIModel/AIManager.hxx index b88203d69..8b3582b39 100644 --- a/src/AIModel/AIManager.hxx +++ b/src/AIModel/AIManager.hxx @@ -36,36 +36,40 @@ #include #include -SG_USING_STD(list); +using std::list; class FGAIThermal; class FGAIManager : public SGSubsystem { -private: +public: // A list of pointers to AI objects - typedef list > ai_list_type; + typedef list > ai_list_type; typedef ai_list_type::iterator ai_list_iterator; typedef ai_list_type::const_iterator ai_list_const_iterator; ai_list_type ai_list; -public: + inline const ai_list_type& get_ai_list() const { + SG_LOG(SG_GENERAL, SG_DEBUG, "AI Manager: AI model return list size " << ai_list.size()); + return ai_list; + } FGAIManager(); ~FGAIManager(); void init(); + void postinit(); void reinit(); void bind(); void unbind(); void update(double dt); - - void attach(SGSharedPtr model); + void attach(FGAIBase *model); void destroyObject( int ID ); + const FGAIBase *calcCollision(double alt, double lat, double lon, double fuse_range); inline double get_user_latitude() const { return user_latitude; } inline double get_user_longitude() const { return user_longitude; } @@ -76,6 +80,7 @@ public: inline double get_user_speed() const {return user_speed; } inline double get_wind_from_east() const {return wind_from_east; } inline double get_wind_from_north() const {return wind_from_north; } + inline double get_user_roll() const { return user_roll; } int getNumAiObjects(void) const; @@ -92,6 +97,8 @@ private: int mNumAiTypeModels[FGAIBase::MAX_OBJECTS]; int mNumAiModels; + double calcRange(double lat, double lon, double lat2, double lon2)const; + SGPropertyNode_ptr root; SGPropertyNode_ptr wind_from_down_node; SGPropertyNode_ptr user_latitude_node; @@ -100,11 +107,10 @@ private: SGPropertyNode_ptr user_heading_node; SGPropertyNode_ptr user_pitch_node; SGPropertyNode_ptr user_yaw_node; + SGPropertyNode_ptr user_roll_node; SGPropertyNode_ptr user_speed_node; - SGPropertyNode_ptr wind_from_east_node ; - SGPropertyNode_ptr wind_from_north_node ; - - string scenario_filename; + SGPropertyNode_ptr wind_from_east_node; + SGPropertyNode_ptr wind_from_north_node; double user_latitude; double user_longitude; @@ -112,10 +118,12 @@ private: double user_heading; double user_pitch; double user_yaw; + double user_roll; double user_speed; double wind_from_east; double wind_from_north; double _dt; + void fetchUserState( void ); // used by thermals