diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index 4048deb9e..43bcaa1f3 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -90,9 +90,10 @@ private: }; inline bool FGAIAircraft::_getGearDown() { - return ((fgGetFloat("/position/altitude-agl-ft") < 150.0) - && (fgGetFloat("/velocities/airspeed-kt") - < _self->performance->land_speed*1.5)); + return (!_self) ? false + : ((fgGetFloat("/position/altitude-agl-ft") < 150.0) + && (fgGetFloat("/velocities/airspeed-kt") + < _self->performance->land_speed*1.5)); } diff --git a/src/AIModel/AIBase.hxx b/src/AIModel/AIBase.hxx index 3436a1332..af61d1089 100644 --- a/src/AIModel/AIBase.hxx +++ b/src/AIModel/AIBase.hxx @@ -174,33 +174,58 @@ inline void FGAIBase::setDie( bool die ) { delete_me = die; } inline bool FGAIBase::getDie() { return delete_me; } inline void FGAIBase::_setLongitude( double longitude ) { - _self->pos.setlon(longitude); + if (_self) _self->pos.setlon(longitude); } inline void FGAIBase::_setLatitude ( double latitude ) { - _self->pos.setlat(latitude); + if (_self) _self->pos.setlat(latitude); } -inline double FGAIBase::_getLongitude() { return _self->pos.lon(); } -inline double FGAIBase::_getLatitude () { return _self->pos.lat(); } +inline double FGAIBase::_getLongitude() { + return (!_self) ? 0.0 :_self->pos.lon(); +} +inline double FGAIBase::_getLatitude () { + return (!_self) ? 0.0 :_self->pos.lat(); +} +inline double FGAIBase::_getBearing() { + return (!_self) ? 0.0 :_self->bearing; +} +inline double FGAIBase::_getElevation() { + return (!_self) ? 0.0 :_self->elevation; +} +inline double FGAIBase::_getRange() { + return (!_self) ? 0.0 :_self->range; +} +inline double FGAIBase::_getRdot() { + return (!_self) ? 0.0 :_self->rdot; +} +inline double FGAIBase::_getH_offset() { + return (!_self) ? 0.0 :_self->horiz_offset; +} +inline double FGAIBase::_getV_offset() { + return (!_self) ? 0.0 :_self->vert_offset; +} +inline double FGAIBase::_getX_shift() { + return (!_self) ? 0.0 :_self->x_shift; +} +inline double FGAIBase::_getY_shift() { + return (!_self) ? 0.0 :_self->y_shift; +} +inline double FGAIBase::_getRotation() { + return (!_self) ? 0.0 :_self->rotation; +} -inline double FGAIBase::_getBearing() { return _self->bearing; } -inline double FGAIBase::_getElevation() { return _self->elevation; } -inline double FGAIBase::_getRange() { return _self->range; } -inline double FGAIBase::_getRdot() { return _self->rdot; } -inline double FGAIBase::_getH_offset() { return _self->horiz_offset; } -inline double FGAIBase::_getV_offset() { return _self->vert_offset; } -inline double FGAIBase::_getX_shift() { return _self->x_shift; } -inline double FGAIBase::_getY_shift() { return _self->y_shift; } -inline double FGAIBase::_getRotation() { return _self->rotation; } - -inline double FGAIBase::_getVS_fps() { return _self->vs*60.0; } -inline void FGAIBase::_setVS_fps( double _vs ) { _self->vs = _vs/60.0; } +inline double FGAIBase::_getVS_fps() { + return (!_self) ? 0.0 :_self->vs*60.0; +} +inline void FGAIBase::_setVS_fps( double _vs ) { + if (_self) _self->vs = _vs/60.0; +} inline double FGAIBase::_getAltitude() { - return _self->altitude; + return (!_self) ? 0.0 :_self->altitude; } inline void FGAIBase::_setAltitude( double _alt ) { - _self->setAltitude( _alt ); + if (_self) _self->setAltitude( _alt ); } inline bool FGAIBase::_isNight() {