1
0
Fork 0

Make sure the pointer is not being used after deletion, and tie the elapsed time to the particular class instance.

This commit is contained in:
ehofman 2004-09-08 14:02:25 +00:00
parent 9e72a38165
commit c542be5330
3 changed files with 19 additions and 10 deletions

View file

@ -51,7 +51,9 @@ bool FGAIBallistic::init() {
void FGAIBallistic::bind() { void FGAIBallistic::bind() {
// FGAIBase::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() { void FGAIBallistic::unbind() {
@ -163,3 +165,8 @@ void FGAIBallistic::Run(double dt) {
if (altitude < -1000.0) setDie(true); if (altitude < -1000.0) setDie(true);
} }
double FGAIBallistic::_getTime() const {
return life_timer;
}

View file

@ -42,9 +42,11 @@ public:
void setDragArea( double a ); void setDragArea( double a );
void setLife( double seconds ); void setLife( double seconds );
void setBuoyancy( double fpss ); void setBuoyancy( double fpss );
void setWind_from_east( double fps ); void setWind_from_east( double fps );
void setWind_from_north( double fps ); void setWind_from_north( double fps );
void setWind( bool val ); void setWind( bool val );
double _getTime() const;
private: private:
@ -54,11 +56,11 @@ private:
bool aero_stabilized; // if true, object will point where it's going bool aero_stabilized; // if true, object will point where it's going
double drag_area; // equivalent drag area in ft2 double drag_area; // equivalent drag area in ft2
double life_timer; // seconds double life_timer; // seconds
double gravity; // fps2 double gravity; // fps2
double buoyancy; // fps2 double buoyancy; // fps2
double wind_from_east; // fps double wind_from_east; // fps
double wind_from_north; // fps double wind_from_north; // fps
bool wind; // if true, local wind will be applied to object bool wind; // if true, local wind will be applied to object
void Run(double dt); void Run(double dt);
}; };

View file

@ -95,9 +95,9 @@ void FGAIManager::update(double dt) {
ai_list_itr = ai_list.begin(); ai_list_itr = ai_list.begin();
while(ai_list_itr != ai_list.end()) { while(ai_list_itr != ai_list.end()) {
if ((*ai_list_itr)->getDie()) { if ((*ai_list_itr)->getDie()) {
delete (*ai_list_itr);
--numObjects[(*ai_list_itr)->getType()]; --numObjects[(*ai_list_itr)->getType()];
--numObjects[0]; --numObjects[0];
delete (*ai_list_itr);
if ( ai_list_itr == ai_list.begin() ) { if ( ai_list_itr == ai_list.begin() ) {
ai_list.erase(ai_list_itr); ai_list.erase(ai_list_itr);
ai_list_itr = ai_list.begin(); ai_list_itr = ai_list.begin();