]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATC/AIMgr.cxx
any wind < 1kt is "calm", not just 0.0
[flightgear.git] / src / ATC / AIMgr.cxx
index ea4e4e16905600689abe96af6c5dc17c14927bb1..8b38de6639829aa11182c61f7cb1851c6a2368b5 100644 (file)
 //
 // 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.
 
-#include <simgear/misc/sg_path.hxx>
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
 
 #include <Main/fg_props.hxx>
 #include <Main/globals.hxx>
+#include <simgear/misc/sg_path.hxx>
 #include <simgear/math/sg_random.h>
 #include <list>
 
@@ -56,6 +59,9 @@ FGAIMgr::FGAIMgr() {
 }
 
 FGAIMgr::~FGAIMgr() {
+    for (ai_list_itr = ai_list.begin(); ai_list_itr != ai_list.end(); ai_list_itr++) {
+        delete (*ai_list_itr);
+    }
 }
 
 void FGAIMgr::init() {
@@ -303,7 +309,7 @@ void FGAIMgr::ActivateAirport(const string& ident) {
        ATC->AIRegisterAirport(ident);
        // TODO - need to start the traffic more randomly
        FGAILocalTraffic* local_traffic = new FGAILocalTraffic;
-       local_traffic->SetModel(_defaultModel); // currently hardwired to cessna.
+       local_traffic->SetModel(_defaultModel.get());   // currently hardwired to cessna.
        //local_traffic->Init(ident, IN_PATTERN, TAKEOFF_ROLL);
        local_traffic->Init(GenerateShortForm(GenerateUniqueCallsign()), ident);
        local_traffic->FlyCircuits(1, true);    // Fly 2 circuits with touch & go in between
@@ -375,7 +381,10 @@ void FGAIMgr::GenerateSimpleAirportTraffic(const string& ident, double min_dist)
        double d = dclGetHorizontalSeparation(userpos, aptpos); // in meters
        
        int lev = fgGetInt("/sim/ai-traffic/level");
-       if(lev < 1 || lev > 3) lev = 2;
+       if(lev < 1)
+               return;
+       if (lev > 3)
+               lev = 3;
        if(visibility < 6000) lev = 1;
        //cout << "level = " << lev << '\n';
        
@@ -463,7 +472,7 @@ void FGAIMgr::GenerateSimpleAirportTraffic(const string& ident, double min_dist)
                        else cessna = true;
                        string s = GenerateShortForm(GenerateUniqueCallsign(), (cessna ? "Cessna-" : "Piper-"));
                        FGAIGAVFRTraffic* t = new FGAIGAVFRTraffic();
-                       t->SetModel(cessna ? _defaultModel : (_havePiperModel ? _piperModel : _defaultModel));
+                       t->SetModel(cessna ? _defaultModel.get() : (_havePiperModel ? _piperModel.get() : _defaultModel.get()));
                        //cout << "Generating VFR traffic " << s << " inbound to " << ident << " " << ad << " meters out from " << dir << " degrees\n";
                        Point3D tpos = dclUpdatePosition(aptpos, dir, 6.0, ad);
                        if(tpos.elev() > (aptpos.elev() + 3000.0)) tpos.setelev(aptpos.elev() + 3000.0);        // FEET yuk :-(