]> git.mxchange.org Git - flightgear.git/commitdiff
Make sure the pointer is not being used after deletion, and tie the elapsed time...
authorehofman <ehofman>
Wed, 8 Sep 2004 14:02:25 +0000 (14:02 +0000)
committerehofman <ehofman>
Wed, 8 Sep 2004 14:02:25 +0000 (14:02 +0000)
src/AIModel/AIBallistic.cxx
src/AIModel/AIBallistic.hxx
src/AIModel/AIManager.cxx

index ddac65cdf8d3ce96e79cb2c14987d40e9934de19..94760bb7799216358df88c21d0657b735711dc3e 100644 (file)
@@ -51,7 +51,9 @@ bool FGAIBallistic::init() {
 
 void FGAIBallistic::bind() {
 //    FGAIBase::bind();
-   props->tie("sim/time/elapsed-sec", SGRawValuePointer<double>(&(this->life_timer)));
+   props->tie("sim/time/elapsed-sec",
+               SGRawValueMethods<FGAIBallistic,double>(*this,
+                                          &FGAIBallistic::_getTime));
 }
 
 void FGAIBallistic::unbind() {
@@ -163,3 +165,8 @@ void FGAIBallistic::Run(double dt) {
    if (altitude < -1000.0) setDie(true);
 
 }
+
+double FGAIBallistic::_getTime() const {
+   return life_timer;
+}
+
index 958cf952ac8f148ec261e73837cd91e8ab5147d6..8a230b3c79e5e74e79dc21d910b82b2f29d15a7d 100644 (file)
@@ -42,9 +42,11 @@ public:
     void setDragArea( double a );
     void setLife( double seconds );
     void setBuoyancy( double fpss );
-       void setWind_from_east( double fps );
-       void setWind_from_north( double fps );
-       void setWind( bool val );
+    void setWind_from_east( double fps );
+    void setWind_from_north( double fps );
+    void setWind( bool val );
+
+    double _getTime() const;
        
 private:
 
@@ -54,11 +56,11 @@ private:
     bool aero_stabilized;   // if true, object will point where it's going
     double drag_area;       // equivalent drag area in ft2
     double life_timer;      // seconds
-       double gravity;         // fps2
-       double buoyancy;        // fps2
-       double wind_from_east;  // fps
-       double wind_from_north; // fps
-       bool wind;              // if true, local wind will be applied to object
+    double gravity;         // fps2
+    double buoyancy;        // fps2
+    double wind_from_east;  // fps
+    double wind_from_north; // fps
+    bool wind;              // if true, local wind will be applied to object
                
     void Run(double dt);
 };
index 97769619c9224996f43cd9641405db6eb8fdedcc..a4a713a7da08a2e928c8ee90db1d861fd3de0b81 100644 (file)
@@ -95,9 +95,9 @@ void FGAIManager::update(double dt) {
         ai_list_itr = ai_list.begin();
         while(ai_list_itr != ai_list.end()) {
                 if ((*ai_list_itr)->getDie()) {      
-                   delete (*ai_list_itr);
                    --numObjects[(*ai_list_itr)->getType()];
                    --numObjects[0];
+                   delete (*ai_list_itr);
                    if ( ai_list_itr == ai_list.begin() ) {
                        ai_list.erase(ai_list_itr);
                        ai_list_itr = ai_list.begin();