More rationalization of methods, and other clean-ups
Signed-off-by: Vivian Meazza <vivian.meazza@lineone.net>
This commit is contained in:
parent
582c1e8df8
commit
b88d0988cd
5 changed files with 36 additions and 19 deletions
|
@ -152,11 +152,11 @@ bool FGAIBallistic::init(bool search_in_AI_path) {
|
|||
props->setStringValue("contents/path", _contents_path.c_str());
|
||||
}
|
||||
|
||||
if(_parent != ""){
|
||||
setParentNode();
|
||||
}
|
||||
//if(_parent != ""){
|
||||
// setParentNode();
|
||||
//}
|
||||
|
||||
setParentNodes(_selected_ac);
|
||||
//setParentNodes(_selected_ac);
|
||||
|
||||
//props->setStringValue("vector/path", _vector_path.c_str());
|
||||
|
||||
|
@ -168,7 +168,11 @@ bool FGAIBallistic::init(bool search_in_AI_path) {
|
|||
|
||||
Transform();
|
||||
|
||||
//cout << _name << " speed init: " << speed << endl;
|
||||
if(_parent != ""){
|
||||
setParentNode();
|
||||
}
|
||||
|
||||
setParentNodes(_selected_ac);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ public:
|
|||
void readFromScenario(SGPropertyNode* scFileNode);
|
||||
|
||||
bool init(bool search_in_AI_path=false);
|
||||
|
||||
virtual void bind();
|
||||
virtual void unbind();
|
||||
|
||||
|
|
|
@ -194,18 +194,27 @@ void FGAIBase::Transform() {
|
|||
}
|
||||
|
||||
bool FGAIBase::init(bool search_in_AI_path) {
|
||||
osg::ref_ptr<osgDB::ReaderWriter::Options> opt=
|
||||
new osgDB::ReaderWriter::Options(*osgDB::Registry::instance()->getOptions());
|
||||
|
||||
|
||||
string f;
|
||||
if(search_in_AI_path)
|
||||
{
|
||||
SGPath ai_path(globals->get_fg_root());
|
||||
ai_path.append("AI");
|
||||
opt->getDatabasePathList().push_front(ai_path.str());
|
||||
// setup a modified Options strucutre, with only the $fg-root/AI defined;
|
||||
// we'll check that first, then give the normal search logic a chance.
|
||||
// this ensures that models in AI/ are preferred to normal models, where
|
||||
// both exist.
|
||||
osg::ref_ptr<osgDB::ReaderWriter::Options>
|
||||
opt(osg::clone(osgDB::Registry::instance()->getOptions(), osg::CopyOp::SHALLOW_COPY));
|
||||
|
||||
SGPath ai_path(globals->get_fg_root(), "AI");
|
||||
opt->setDatabasePath(ai_path.str());
|
||||
|
||||
f = osgDB::findDataFile(model_path, opt.get());
|
||||
}
|
||||
|
||||
string f = osgDB::findDataFile(model_path, opt.get());
|
||||
|
||||
if (f.empty()) {
|
||||
f = simgear::SGModelLib::findDataFile(model_path);
|
||||
}
|
||||
|
||||
if(f.empty())
|
||||
f = fgGetString("/sim/multiplay/default-model", default_model);
|
||||
|
||||
|
|
|
@ -215,13 +215,14 @@ bool FGAIWingman::init(bool search_in_AI_path) {
|
|||
roll = _rotation;
|
||||
_ht_agl_ft = 1e10;
|
||||
|
||||
props->setStringValue("submodels/path", _path.c_str());
|
||||
|
||||
if(_parent != ""){
|
||||
setParentNode();
|
||||
}
|
||||
|
||||
setParentNodes(_selected_ac);
|
||||
|
||||
props->setStringValue("submodels/path", _path.c_str());
|
||||
user_WoW_node = fgGetNode("gear/gear[1]/wow", true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -277,7 +278,7 @@ double FGAIWingman::calcAngle(double range, SGGeod pos1, SGGeod pos2){
|
|||
|
||||
void FGAIWingman::formateToAC(double dt){
|
||||
|
||||
double p_hdg, p_pch, p_rll, p_agl, p_ht = 0;
|
||||
double p_hdg, p_pch, p_rll, p_agl, p_ht, p_wow = 0;
|
||||
|
||||
setTgtOffsets(dt, 25);
|
||||
|
||||
|
@ -312,8 +313,9 @@ void FGAIWingman::formateToAC(double dt){
|
|||
double h_feet = 3 * factor;
|
||||
|
||||
p_agl = manager->get_user_agl();
|
||||
p_wow = user_WoW_node->getDoubleValue();
|
||||
|
||||
if(p_agl <= 10) {
|
||||
if(p_agl <= 10 || p_wow == 1) {
|
||||
_height = p_ht;
|
||||
//cout << "ht case1 " ;
|
||||
} else if (p_agl > 10 && p_agl <= 150 ) {
|
||||
|
@ -332,7 +334,8 @@ void FGAIWingman::formateToAC(double dt){
|
|||
pos.setLongitudeDeg(_offsetpos.getLongitudeDeg());
|
||||
|
||||
// these calculations are unreliable at slow speeds
|
||||
if(speed >= 10) {
|
||||
// and we don't want random movement on the ground
|
||||
if(speed >= 10 && p_wow != 1) {
|
||||
setHdg(p_hdg + h_angle, dt, 0.9);
|
||||
setPch(p_pch + p_angle + _pitch_offset, dt, 0.9);
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ private:
|
|||
double _coeff_bnk; //dimensionless coefficient
|
||||
double _coeff_spd; //dimensionless coefficient
|
||||
|
||||
|
||||
SGPropertyNode_ptr user_WoW_node;
|
||||
|
||||
inline void setFormate(bool f);
|
||||
inline void setTgtHdg(double hdg);
|
||||
|
|
Loading…
Add table
Reference in a new issue