]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIManager.hxx
Interim windows build fix
[flightgear.git] / src / AIModel / AIManager.hxx
index 605577d19efdad43fb8b67b081617b9b9fec7875..6caa098f3c24478debb09e339a516ff74ef41977 100644 (file)
 
 #include <simgear/structure/subsystem_mgr.hxx>
 #include <simgear/structure/SGSharedPtr.hxx>
-#include <simgear/props/props_io.hxx>
-
-#include <Main/fg_props.hxx>
-
-#include <AIModel/AIBase.hxx>
-#include <AIModel/AIFlightPlan.hxx>
-
-#include <Traffic/SchedFlight.hxx>
-#include <Traffic/Schedule.hxx>
 
+class FGAIBase;
 class FGAIThermal;
 
 typedef SGSharedPtr<FGAIBase> FGAIBasePtr;
@@ -46,16 +38,6 @@ class FGAIManager : public SGSubsystem
 {
 
 public:
-
-    // A list of pointers to AI objects
-    typedef std::list <FGAIBasePtr> ai_list_type;
-    typedef ai_list_type::iterator ai_list_iterator;
-    typedef ai_list_type::const_iterator ai_list_const_iterator;
-
-    const ai_list_type& get_ai_list() const {
-        return ai_list;
-    }
-
     FGAIManager();
     virtual ~FGAIManager();
 
@@ -73,15 +55,12 @@ public:
 
     inline double get_user_heading() const { return user_heading; }
     inline double get_user_pitch() const { return user_pitch; }
-    inline double get_user_yaw() const { return user_yaw; }
     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; }
     inline double get_user_agl() const { return user_altitude_agl; }
 
-    int getNumAiObjects(void) const;
-
     bool loadScenario( const std::string &filename );
 
     static SGPropertyNode_ptr loadScenarioFile(const std::string& filename);
@@ -90,8 +69,30 @@ public:
         SGGeod& geodPos, double& hdng, SGVec3d& uvw);
 
     FGAIBasePtr addObject(const SGPropertyNode* definition);
+    bool isVisible(const SGGeod& pos) const;
     
+    /**
+     * @brief given a reference to an /ai/models/<foo>[n] node, return the
+     * corresponding AIObject implementation, or NULL.
+     */
+    FGAIBasePtr getObjectFromProperty(const SGPropertyNode* aProp) const;
+
+    static const char* subsystemName() { return "ai-model"; }
 private:
+    // FGSubmodelMgr is a friend for access to the AI_list
+    friend class FGSubmodelMgr;
+    
+    // A list of pointers to AI objects
+    typedef std::list <FGAIBasePtr> ai_list_type;
+    typedef ai_list_type::iterator ai_list_iterator;
+    typedef ai_list_type::const_iterator ai_list_const_iterator;
+    
+    const ai_list_type& get_ai_list() const {
+        return ai_list;
+    }
+
+    int getNumAiObjects() const;
+    
     void removeDeadItem(FGAIBase* base);
   
     double calcRangeFt(const SGVec3d& aCartPos, FGAIBase* aObject) const;
@@ -108,10 +109,10 @@ private:
     SGPropertyNode_ptr enabled;
     SGPropertyNode_ptr thermal_lift_node;
     SGPropertyNode_ptr user_altitude_agl_node;
-    SGPropertyNode_ptr user_yaw_node;
     SGPropertyNode_ptr user_speed_node;
     SGPropertyNode_ptr wind_from_east_node;
     SGPropertyNode_ptr wind_from_north_node;
+    SGPropertyNode_ptr _environmentVisiblity;
 
 
     ai_list_type ai_list;
@@ -119,10 +120,8 @@ private:
     double user_altitude_agl;
     double user_heading;
     double user_pitch;
-    double user_yaw;
     double user_roll;
     double user_speed;
-    double user_agl;
     double wind_from_east;
     double wind_from_north;