FGViewMgr::FGViewMgr( void ) :
axis_long(0),
axis_lat(0),
+ view_number(fgGetNode("/sim/current-view/view-number", true)),
config_list(fgGetNode("/sim", true)->getChildren("view")),
current(0)
{
// negative numbers -> set view with node index -newview
if (newview < 0) {
for (int i = 0; i < (int)config_list.size(); i++) {
- int index = -config_list[i]->getIndex();
- if (index == newview)
- newview = i;
+ int index = -config_list[i]->getIndex();
+ if (index == newview)
+ newview = i;
}
if (newview < 0)
- return;
+ return;
}
// if newview number too low wrap to last view...
if (newview < 0)
- newview = (int)views.size() -1;
+ newview = (int)views.size() - 1;
// if newview number to high wrap to zero...
- if (newview > ((int)views.size() -1))
+ if (newview >= (int)views.size())
newview = 0;
// set new view
}
inline FGViewer *next_view() {
setView((current+1 < (int)views.size()) ? (current + 1) : 0);
+ view_number->fireValueChanged();
return views[current];
}
inline FGViewer *prev_view() {
setView((0 < current) ? (current - 1) : (views.size() - 1));
+ view_number->fireValueChanged();
return views[current];
}
int getView () const;
void setView (int newview);
+ SGPropertyNode_ptr view_number;
vector<SGPropertyNode_ptr> config_list;
typedef vector<FGViewer *> viewer_list;
viewer_list views;