1
0
Fork 0

Use AIBase method setParentNode() vice the local method.

Signed-off-by: Vivian Meazza <vivian.meazza@lineone.net>
This commit is contained in:
Vivian Meazza 2010-09-08 17:47:28 +01:00 committed by Anders Gidenstam
parent afbc360eed
commit 2758f07df0
5 changed files with 18 additions and 103 deletions

View file

@ -44,7 +44,6 @@ using std::string;
FGAIEscort::FGAIEscort() :
FGAIShip(otEscort),
_selected_ac(0),
_relbrg (0),
_stn_truebrg(0),
_parent_speed(0),
@ -56,8 +55,7 @@ _max_speed(0),
_interval(0),
_MPControl(false),
_patrol(false),
_stn_deg_true(false),
_parent("")
_stn_deg_true(false)
{
invisible = false;
@ -143,6 +141,8 @@ bool FGAIEscort::init(bool search_in_AI_path) {
props->setStringValue("controls/parent-name", _parent.c_str());
setParentNode();
setParent();
pos = _tgtpos;
speed = _parent_speed;
hdg = _parent_hdg;
@ -196,10 +196,6 @@ void FGAIEscort::setStnPatrol(bool p) {
_patrol = p;
}
void FGAIEscort::setParentName(const string& p) {
_parent = p;
}
bool FGAIEscort::getGroundElev(SGGeod inpos) {
double height_m ;
@ -233,79 +229,6 @@ bool FGAIEscort::getGroundElev(SGGeod inpos) {
}
void FGAIEscort::setParentNode() {
const SGPropertyNode_ptr ai = fgGetNode("/ai/models", true);
for (int i = ai->nChildren() - 1; i >= -1; i--) {
SGPropertyNode_ptr model;
if (i < 0) { // last iteration: selected model
model = _selected_ac;
} else {
model = ai->getChild(i);
string path = ai->getPath();
const string name = model->getStringValue("name");
if (!model->nChildren()){
continue;
}
if (name == _parent) {
_selected_ac = model; // save selected model for last iteration
break;
}
}
if (!model)
continue;
}// end for loop
if (_selected_ac != 0){
const string name = _selected_ac->getStringValue("name");
setParent();
//double lat = _selected_ac->getDoubleValue("position/latitude-deg");
//double lon = _selected_ac->getDoubleValue("position/longitude-deg");
//double elevation = _selected_ac->getDoubleValue("position/altitude-ft");
//_MPControl = _selected_ac->getBoolValue("controls/mp-control");
//_selectedpos.setLatitudeDeg(lat);
//_selectedpos.setLongitudeDeg(lon);
//_selectedpos.setElevationFt(elevation);
//_parent_speed = _selected_ac->getDoubleValue("velocities/speed-kts");
//_parent_hdg = _selected_ac->getDoubleValue("orientation/true-heading-deg");
//if(!_stn_deg_true){
// _stn_truebrg = calcTrueBearingDeg(_stn_brg, _parent_hdg);
// _stn_relbrg = _stn_brg;
// //cout << _name <<" set rel"<<endl;
//} else {
// _stn_truebrg = _stn_brg;
// _stn_relbrg = calcRelBearingDeg(_stn_brg, _parent_hdg);
// //cout << _name << " set true"<<endl;
//}
//double course2;
//SGGeodesy::direct( _selectedpos, _stn_truebrg, _stn_range * SG_NM_TO_METER,
// _tgtpos, course2);
//_tgtpos.setElevationFt(_stn_height);
//calcRangeBearing(pos.getLatitudeDeg(), pos.getLongitudeDeg(),
// _tgtpos.getLatitudeDeg(), _tgtpos.getLongitudeDeg(), _tgtrange, _tgtbrg);
//_relbrg = calcRelBearingDeg(_tgtbrg, hdg);
} else {
SG_LOG(SG_GENERAL, SG_ALERT, "AIEscort: " << _name
<< " parent not found: dying ");
setDie(true);
}
}
void FGAIEscort::setParent()
{
@ -474,10 +397,9 @@ void FGAIEscort::RunEscort(double dt){
setParent();
setStationSpeed();
//getGroundElev(pos);
_dt_count = 0;
}
// end AIGroundvehicle
// end AIEscort

View file

@ -50,8 +50,6 @@ private:
virtual void reinit() { init(); }
virtual void update (double dt);
void setParentName(const std::string& p);
void setParentNode();
void setStnRange(double r);
void setStnBrg(double y);
void setStationSpeed();
@ -96,12 +94,12 @@ private:
double _max_speed;
const SGMaterial* _material;
SGPropertyNode_ptr _selected_ac;
bool _MPControl, _patrol, _stn_deg_true;
std::string _parent;
// std::string _parent;
};
#endif // FG_AIGROUNDVEHICLE_HXX

View file

@ -46,7 +46,6 @@ _next_run(0),
_parent_x_offset(0),
_parent_y_offset(0),
_parent_z_offset(0),
_parent(""),
_break_count(0)
{
@ -212,10 +211,6 @@ void FGAIGroundVehicle::setPitch(double p, double dt, double coeff){
_pitch_deg = (p * c) + (_pitch_deg * (1 - c));
}
void FGAIGroundVehicle::setParentName(const string& p) {
_parent = p;
}
void FGAIGroundVehicle::setTowAngle(double ta, double dt, double coeff){
ta *= _tow_angle_gain;
double factor = -0.0045 * speed + 1;

View file

@ -62,7 +62,7 @@ private:
void setElevation(double _elevation, double dt, double _elevation_coeff);
void setPitch(double _pitch, double dt, double _pitch_coeff);
void setTowAngle(double _relbrg, double dt, double _towangle_coeff);
void setParentName(const string& p);
// void setParentName(const string& p);
void setTrainSpeed(double s, double dt, double coeff);
void setParent();
void setParentNode();
@ -100,7 +100,7 @@ private:
const SGMaterial* _material;
SGPropertyNode_ptr _selected_ac;
string _parent;
// string _parent;
};

View file

@ -43,6 +43,7 @@ void FGAIWingman::readFromScenario(SGPropertyNode* scFileNode) {
setLife(scFileNode->getDoubleValue("life", -1));
setNoRoll(scFileNode->getBoolValue("no-roll", false));
setName(scFileNode->getStringValue("name", "Wingman"));
setParentName(scFileNode->getStringValue("parent", ""));
//setSMPath(scFileNode->getStringValue("submodel-path", ""));
setSubID(scFileNode->getIntValue("SubID", 0));
setXoffset(scFileNode->getDoubleValue("x-offset", 0.0));
@ -171,7 +172,6 @@ bool FGAIWingman::init(bool search_in_AI_path) {
void FGAIWingman::update(double dt) {
FGAIBallistic::update(dt);
// cout << FGAIBase::_getName() << " update speed " << FGAIBase::_getSpeed() << endl;
}
// end AIWingman