]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATC/AIMgr.cxx
Moved random ground cover object management code (userdata.[ch]xx) over
[flightgear.git] / src / ATC / AIMgr.cxx
index 0fd68bccf6adf829a838ab32ed1b5e59305fa1e5..7223eb3d9b804627174d8160d62dec49699365fc 100644 (file)
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-#include <Airports/simple.hxx>
 #include <Main/fgfs.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/globals.hxx>
 #include <simgear/misc/sg_path.hxx>
-#include <simgear/bucket/newbucket.hxx>
 
 #include <list>
 
@@ -54,6 +52,10 @@ void FGAIMgr::init() {
        lon_node = fgGetNode("/position/longitude-deg", true);
        lat_node = fgGetNode("/position/latitude-deg", true);
        elev_node = fgGetNode("/position/altitude-ft", true);
+
+       lon = lon_node->getDoubleValue();
+       lat = lat_node->getDoubleValue();
+       elev = elev_node->getDoubleValue();
        
        // go through the $FG_ROOT/ATC directory and find all *.taxi files
        SGPath path(globals->get_fg_root());
@@ -195,7 +197,7 @@ void FGAIMgr::ActivateAirport(string ident) {
 // Search for valid airports in the vicinity of the user and activate them if necessary
 void FGAIMgr::SearchByPos(double range)
 {
-       //cout << "In SearchByPos(...)\n";
+       //cout << "In SearchByPos(...)" << endl;
        
        // get bucket number for plane position
        lon = lon_node->getDoubleValue();
@@ -204,9 +206,9 @@ void FGAIMgr::SearchByPos(double range)
 
        // get neigboring buckets
        int bx = (int)( range*SG_NM_TO_METER / buck.get_width_m() / 2);
-       //cout << "bx = " << bx << '\n';
+       //cout << "bx = " << bx << endl;
        int by = (int)( range*SG_NM_TO_METER / buck.get_height_m() / 2 );
-       //cout << "by = " << by << '\n';
+       //cout << "by = " << by << endl;
        
        // loop over bucket range 
        for ( int i=-bx; i<=bx; i++) {
@@ -215,28 +217,31 @@ void FGAIMgr::SearchByPos(double range)
                        //cout << "j loop\n";
                        buck = sgBucketOffset(lon, lat, i, j);
                        long int bucket = buck.gen_index();
-                       //cout << "bucket is " << bucket << '\n';
-                       aptID_list_type* apts = airports[bucket];
-                       aptID_list_iterator current = apts->begin();
-                       aptID_list_iterator last = apts->end();
-                       
-                       //cout << "Size of apts is " << apts->size() << '\n';
-                       
-                       //double rlon = lon * SGD_DEGREES_TO_RADIANS;
-                       //double rlat = lat * SGD_DEGREES_TO_RADIANS;
-                       //Point3D aircraft = sgGeodToCart( Point3D(rlon, rlat, elev) );
-                       //Point3D airport;
-                       for(; current != last; ++current) {
-                               //cout << "Found " << *current << '\n';
-                               if(activated.find(*current) == activated.end()) {
-                                       //cout << "Activating " << *current << '\n';
-                                       //FGAirport a;
-                                       //if(dclFindAirportID(*current, &a)) {
-                                       //      // We can do something here based on distance from the user if we wish.
-                                       //}
-                                       ActivateAirport(*current);
-                               } else {
-                                       //cout << *current << " already activated\n";
+                       //cout << "bucket is " << bucket << endl;
+                       if(airports.find(bucket) != airports.end()) {
+                               aptID_list_type* apts = airports[bucket];
+                               aptID_list_iterator current = apts->begin();
+                               aptID_list_iterator last = apts->end();
+                               
+                               //cout << "Size of apts is " << apts->size() << endl;
+                               
+                               //double rlon = lon * SGD_DEGREES_TO_RADIANS;
+                               //double rlat = lat * SGD_DEGREES_TO_RADIANS;
+                               //Point3D aircraft = sgGeodToCart( Point3D(rlon, rlat, elev) );
+                               //Point3D airport;
+                               for(; current != last; ++current) {
+                                       //cout << "Found " << *current << endl;;
+                                       if(activated.find(*current) == activated.end()) {
+                                               //cout << "Activating " << *current << endl;
+                                               //FGAirport a;
+                                               //if(dclFindAirportID(*current, &a)) {
+                                                       //      // We can do something here based on distance from the user if we wish.
+                                               //}
+                                               ActivateAirport(*current);
+                                               //cout << "Activation done" << endl;
+                                       } else {
+                                               //cout << *current << " already activated" << endl;
+                                       }
                                }
                        }
                }