Merge branch 'next' into attenuation
This commit is contained in:
commit
b796df3bd7
13 changed files with 69 additions and 49 deletions
|
@ -126,7 +126,11 @@ void FGAIBallistic::readFromScenario(SGPropertyNode* scFileNode) {
|
|||
|
||||
bool FGAIBallistic::init(bool search_in_AI_path) {
|
||||
FGAIBase::init(search_in_AI_path);
|
||||
reinit();
|
||||
return true;
|
||||
}
|
||||
|
||||
void FGAIBallistic::reinit() {
|
||||
_impact_reported = false;
|
||||
_collision_reported = false;
|
||||
_expiry_reported = false;
|
||||
|
@ -179,7 +183,7 @@ bool FGAIBallistic::init(bool search_in_AI_path) {
|
|||
|
||||
setParentNodes(_selected_ac);
|
||||
|
||||
return true;
|
||||
FGAIBase::reinit();
|
||||
}
|
||||
|
||||
void FGAIBallistic::bind() {
|
||||
|
|
|
@ -46,10 +46,10 @@ public:
|
|||
bool init(bool search_in_AI_path=false);
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual void reinit();
|
||||
virtual void update(double dt);
|
||||
|
||||
void update(double dt);
|
||||
|
||||
FGAIBallistic *ballistic;
|
||||
virtual const char* getTypeString(void) const { return "ballistic"; }
|
||||
|
||||
void Run(double dt);
|
||||
|
||||
|
@ -114,7 +114,8 @@ public:
|
|||
// bool getFormate() const;
|
||||
bool getSlavedLoad() const;
|
||||
|
||||
virtual const char* getTypeString(void) const { return "ballistic"; }
|
||||
FGAIBallistic *ballistic;
|
||||
|
||||
static const double slugs_to_kgs; //conversion factor
|
||||
static const double slugs_to_lbs; //conversion factor
|
||||
|
||||
|
@ -170,8 +171,6 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
virtual void reinit() { init(); }
|
||||
|
||||
bool _aero_stabilised; // if true, object will align with trajectory
|
||||
double _drag_area; // equivalent drag area in ft2
|
||||
double _life_timer; // seconds
|
||||
|
|
|
@ -145,7 +145,7 @@ FGAIBase::~FGAIBase() {
|
|||
model_removed->setStringValue(props->getPath());
|
||||
}
|
||||
|
||||
if (_refID != 0 && _refID != 1) {
|
||||
if (_fx && _refID != 0 && _refID != 1) {
|
||||
SGSoundMgr *smgr = globals->get_soundmgr();
|
||||
stringstream name;
|
||||
name << "aifx:";
|
||||
|
@ -153,7 +153,8 @@ FGAIBase::~FGAIBase() {
|
|||
smgr->remove(name.str());
|
||||
}
|
||||
|
||||
delete fp;
|
||||
if (fp)
|
||||
delete fp;
|
||||
fp = 0;
|
||||
}
|
||||
|
||||
|
@ -163,6 +164,9 @@ FGAIBase::~FGAIBase() {
|
|||
void
|
||||
FGAIBase::removeModel()
|
||||
{
|
||||
if (!_model.valid())
|
||||
return;
|
||||
|
||||
FGScenery* pSceneryManager = globals->get_scenery();
|
||||
if (pSceneryManager)
|
||||
{
|
||||
|
@ -287,8 +291,14 @@ void FGAIBase::Transform() {
|
|||
|
||||
}
|
||||
|
||||
bool FGAIBase::init(bool search_in_AI_path) {
|
||||
|
||||
bool FGAIBase::init(bool search_in_AI_path)
|
||||
{
|
||||
if (_model.valid())
|
||||
{
|
||||
SG_LOG(SG_AI, SG_ALERT, "AIBase: Cannot initialize a model multiple times! " << model_path);
|
||||
return false;
|
||||
}
|
||||
|
||||
string f;
|
||||
if(search_in_AI_path)
|
||||
{
|
||||
|
@ -317,12 +327,6 @@ bool FGAIBase::init(bool search_in_AI_path) {
|
|||
_aimodel = new FGAIModelData(props);
|
||||
osg::Node * mdl = SGModelLib::loadDeferredModel(f, props, _aimodel);
|
||||
|
||||
if (_model.valid())
|
||||
{
|
||||
// reinit, dump the old model
|
||||
removeModel();
|
||||
}
|
||||
|
||||
_model = new osg::LOD;
|
||||
_model->setName("AI-model range animation node");
|
||||
|
||||
|
|
|
@ -230,7 +230,7 @@ private:
|
|||
bool _initialized;
|
||||
osg::ref_ptr<osg::LOD> _model; //The 3D model LOD object
|
||||
|
||||
FGAIModelData* _aimodel;
|
||||
osg::ref_ptr<FGAIModelData> _aimodel;
|
||||
|
||||
string _fxpath;
|
||||
SGSharedPtr<FGFX> _fx;
|
||||
|
|
|
@ -134,7 +134,11 @@ void FGAIEscort::unbind() {
|
|||
bool FGAIEscort::init(bool search_in_AI_path) {
|
||||
if (!FGAIShip::init(search_in_AI_path))
|
||||
return false;
|
||||
reinit();
|
||||
return true;
|
||||
}
|
||||
|
||||
void FGAIEscort::reinit() {
|
||||
invisible = false;
|
||||
no_roll = false;
|
||||
|
||||
|
@ -147,7 +151,7 @@ bool FGAIEscort::init(bool search_in_AI_path) {
|
|||
hdg = _parent_hdg;
|
||||
}
|
||||
|
||||
return true;
|
||||
FGAIShip::reinit();
|
||||
}
|
||||
|
||||
void FGAIEscort::update(double dt) {
|
||||
|
|
|
@ -39,17 +39,16 @@ public:
|
|||
virtual ~FGAIEscort();
|
||||
|
||||
virtual void readFromScenario(SGPropertyNode* scFileNode);
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual const char* getTypeString(void) const { return "escort"; }
|
||||
|
||||
bool init(bool search_in_AI_path=false);
|
||||
|
||||
private:
|
||||
|
||||
virtual void reinit() { init(); }
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual void reinit();
|
||||
virtual void update (double dt);
|
||||
|
||||
virtual const char* getTypeString(void) const { return "escort"; }
|
||||
|
||||
private:
|
||||
void setStnRange(double r);
|
||||
void setStnBrg(double y);
|
||||
void setStationSpeed();
|
||||
|
|
|
@ -142,7 +142,11 @@ void FGAIGroundVehicle::unbind() {
|
|||
bool FGAIGroundVehicle::init(bool search_in_AI_path) {
|
||||
if (!FGAIShip::init(search_in_AI_path))
|
||||
return false;
|
||||
reinit();
|
||||
return true;
|
||||
}
|
||||
|
||||
void FGAIGroundVehicle::reinit() {
|
||||
invisible = false;
|
||||
_limit = 200;
|
||||
no_roll = true;
|
||||
|
@ -162,7 +166,7 @@ bool FGAIGroundVehicle::init(bool search_in_AI_path) {
|
|||
setParent();
|
||||
}
|
||||
|
||||
return true;
|
||||
FGAIShip::reinit();
|
||||
}
|
||||
|
||||
void FGAIGroundVehicle::update(double dt) {
|
||||
|
|
|
@ -37,17 +37,17 @@ public:
|
|||
virtual ~FGAIGroundVehicle();
|
||||
|
||||
virtual void readFromScenario(SGPropertyNode* scFileNode);
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual const char* getTypeString(void) const { return "groundvehicle"; }
|
||||
|
||||
bool init(bool search_in_AI_path=false);
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual void reinit();
|
||||
virtual void update (double dt);
|
||||
|
||||
virtual const char* getTypeString(void) const { return "groundvehicle"; }
|
||||
|
||||
private:
|
||||
|
||||
virtual void reinit() { init(); }
|
||||
virtual void update (double dt);
|
||||
|
||||
void setNoRoll(bool nr);
|
||||
void setContactX1offset(double x1);
|
||||
void setContactX2offset(double x2);
|
||||
|
|
|
@ -113,6 +113,12 @@ void FGAIShip::readFromScenario(SGPropertyNode* scFileNode) {
|
|||
}
|
||||
|
||||
bool FGAIShip::init(bool search_in_AI_path) {
|
||||
reinit();
|
||||
return FGAIBase::init(search_in_AI_path);
|
||||
}
|
||||
|
||||
void FGAIShip::reinit()
|
||||
{
|
||||
prev = 0; // the one behind you
|
||||
curr = 0; // the one ahead
|
||||
next = 0; // the next plus 1
|
||||
|
@ -134,7 +140,7 @@ bool FGAIShip::init(bool search_in_AI_path) {
|
|||
if (fp)
|
||||
_fp_init = initFlightPlan();
|
||||
|
||||
return FGAIBase::init(search_in_AI_path);
|
||||
FGAIBase::reinit();
|
||||
}
|
||||
|
||||
void FGAIShip::bind() {
|
||||
|
|
|
@ -41,8 +41,9 @@ public:
|
|||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual void update(double dt);
|
||||
virtual void reinit();
|
||||
|
||||
void setFlightPlan(FGAIFlightPlan* f);
|
||||
// void setName(const string&);
|
||||
void setRudder(float r);
|
||||
void setRoll(double rl);
|
||||
void ProcessFlightPlan( double dt);
|
||||
|
@ -90,14 +91,9 @@ public:
|
|||
|
||||
protected:
|
||||
|
||||
// string _name; // The name of this ship.
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
virtual void reinit() { init(); }
|
||||
|
||||
void setRepeat(bool r);
|
||||
void setRestart(bool r);
|
||||
void setMissed(bool m);
|
||||
|
|
|
@ -203,7 +203,11 @@ void FGAIWingman::unbind() {
|
|||
bool FGAIWingman::init(bool search_in_AI_path) {
|
||||
if (!FGAIBallistic::init(search_in_AI_path))
|
||||
return false;
|
||||
reinit();
|
||||
return true;
|
||||
}
|
||||
|
||||
void FGAIWingman::reinit() {
|
||||
invisible = false;
|
||||
|
||||
_tgt_x_offset = _x_offset;
|
||||
|
@ -223,7 +227,8 @@ bool FGAIWingman::init(bool search_in_AI_path) {
|
|||
|
||||
props->setStringValue("submodels/path", _path.c_str());
|
||||
user_WoW_node = fgGetNode("gear/gear[1]/wow", true);
|
||||
return true;
|
||||
|
||||
FGAIBallistic::reinit();
|
||||
}
|
||||
|
||||
void FGAIWingman::update(double dt) {
|
||||
|
|
|
@ -35,17 +35,16 @@ public:
|
|||
virtual ~FGAIWingman();
|
||||
|
||||
virtual void readFromScenario(SGPropertyNode* scFileNode);
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual const char* getTypeString(void) const { return "wingman"; }
|
||||
|
||||
bool init(bool search_in_AI_path=false);
|
||||
|
||||
private:
|
||||
|
||||
virtual void reinit() { init(); }
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
virtual void reinit();
|
||||
virtual void update (double dt);
|
||||
|
||||
virtual const char* getTypeString(void) const { return "wingman"; }
|
||||
|
||||
private:
|
||||
void formateToAC(double dt);
|
||||
void Break(double dt);
|
||||
void Join(double dt);
|
||||
|
|
|
@ -469,7 +469,7 @@ void FGLinuxEventInput::postinit()
|
|||
dev = udev_device_get_parent( dev );
|
||||
const char * name = udev_device_get_sysattr_value(dev,"name");
|
||||
|
||||
SG_LOG(SG_INPUT,SG_ALERT, "name=" << (name?name:"<null>") << ", node=" << (node?node:"<null>"));
|
||||
SG_LOG(SG_INPUT,SG_DEBUG, "name=" << (name?name:"<null>") << ", node=" << (node?node:"<null>"));
|
||||
if( name && node )
|
||||
AddDevice( new FGLinuxInputDevice(name, node) );
|
||||
|
||||
|
|
Loading…
Reference in a new issue