]> git.mxchange.org Git - flightgear.git/commitdiff
Use AIBase method setParentNode() vice the local method.
authorVivian Meazza <vivian.meazza@lineone.net>
Wed, 8 Sep 2010 16:47:28 +0000 (17:47 +0100)
committerAnders Gidenstam <anders@gidenstam.org>
Fri, 17 Sep 2010 19:17:56 +0000 (21:17 +0200)
Signed-off-by: Vivian Meazza <vivian.meazza@lineone.net>
src/AIModel/AIEscort.cxx
src/AIModel/AIEscort.hxx
src/AIModel/AIGroundVehicle.cxx
src/AIModel/AIGroundVehicle.hxx
src/AIModel/AIWingman.cxx

index 20d09d252c66a7123a62abe6d9d7dbb9164005d3..a59a07c9520587d26c447f2a37855cb2f16cac33 100644 (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()
 {
@@ -331,17 +254,17 @@ void FGAIEscort::setParent()
         //cout << _name << " set true"<<endl;
     }
 
-            double course2;
+    double course2;
 
-        SGGeodesy::direct( _selectedpos, _stn_truebrg, _stn_range * SG_NM_TO_METER,
-            _tgtpos, course2);
+    SGGeodesy::direct( _selectedpos, _stn_truebrg, _stn_range * SG_NM_TO_METER,
+        _tgtpos, course2);
 
-        _tgtpos.setElevationFt(_stn_height);
+    _tgtpos.setElevationFt(_stn_height);
 
-        calcRangeBearing(pos.getLatitudeDeg(), pos.getLongitudeDeg(),
-            _tgtpos.getLatitudeDeg(), _tgtpos.getLongitudeDeg(), _tgtrange, _tgtbrg);
+    calcRangeBearing(pos.getLatitudeDeg(), pos.getLongitudeDeg(),
+        _tgtpos.getLatitudeDeg(), _tgtpos.getLongitudeDeg(), _tgtrange, _tgtbrg);
 
-        _relbrg = calcRelBearingDeg(_tgtbrg, hdg);
+    _relbrg = calcRelBearingDeg(_tgtbrg, hdg);
 
 }
 
@@ -474,10 +397,9 @@ void FGAIEscort::RunEscort(double dt){
 
     setParent();
     setStationSpeed();
-    //getGroundElev(pos);
 
     _dt_count = 0;
 
 }
 
-// end AIGroundvehicle
+// end AIEscort
index 57a60ccb9e178be4996eb661b25d503b41cd9dfe..235b81c395e529b0e7dfde6de8c892ceaf66807a 100644 (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
+
index 10ea47e596f2978139f08460a086e914a83ca916..3facbaf68ffbe82bc8b8d1b34864887d08689775 100644 (file)
@@ -46,7 +46,6 @@ _next_run(0),
 _parent_x_offset(0),
 _parent_y_offset(0),
 _parent_z_offset(0),
-_parent(""),
 _break_count(0)
 
 {
@@ -148,8 +147,8 @@ bool FGAIGroundVehicle::init(bool search_in_AI_path) {
     invisible = false;
     _limit = 200;
     no_roll = true;
-\r
-    props->setStringValue("controls/parent-name", _parent.c_str());\r
+
+    props->setStringValue("controls/parent-name", _parent.c_str());
     setParentNode();
 
     return true;
@@ -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;
index 4ea7eea9861e0f44e8326b99e869af486dcc950f..4f0519c188a8764dc001e5c674fe9bbcc695eaa4 100644 (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;
 
 };
 
index 2bc8e2c0faeb20a70e249dca192303191e021409..87e0053e0c7adc8fd5a569a2060f48bcbe1daeac 100644 (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