- make viewReset reset fly-by view
- cleanup
This commit is contained in:
parent
874d55b6e7
commit
1a19f8a8e5
1 changed files with 16 additions and 28 deletions
|
@ -1,30 +1,9 @@
|
||||||
##
|
##
|
||||||
## view.nas
|
## view.nas
|
||||||
##
|
##
|
||||||
## Nasal code for implementing view-specific functionality. Right
|
## Nasal code for implementing view-specific functionality.
|
||||||
## now, it does intelligent FOV scaling in the view.increase() and
|
|
||||||
## view.decrease() handlers.
|
|
||||||
##
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is a neat trick. We want these globals to be initialized at
|
|
||||||
# startup, but there is no guarantee that the props.nas module will be
|
|
||||||
# loaded yet when we are run. So set the values to nil at startup (so
|
|
||||||
# that there is a value in the lexical environment -- otherwise
|
|
||||||
# assigning them in INIT() will only make local variables),
|
|
||||||
# and then assign them from inside a timer that we set to run
|
|
||||||
# immediately *after* startup.
|
|
||||||
#
|
|
||||||
# Nifty hacks notwithstanding, this really isn't the right way to do
|
|
||||||
# this. There ought to be an "import" mechanism we can use to resolve
|
|
||||||
# dependencies between modules.
|
|
||||||
#
|
|
||||||
fovProp = nil;
|
|
||||||
INIT = func {
|
|
||||||
fovProp = props.globals.getNode("/sim/current-view/field-of-view");
|
|
||||||
|
|
||||||
}
|
|
||||||
settimer(INIT, 0);
|
|
||||||
|
|
||||||
# Dynamically calculate limits so that it takes STEPS iterations to
|
# Dynamically calculate limits so that it takes STEPS iterations to
|
||||||
# traverse the whole range, the maximum FOV is fixed at 120 degrees,
|
# traverse the whole range, the maximum FOV is fixed at 120 degrees,
|
||||||
|
@ -78,6 +57,9 @@ resetFOV = func {
|
||||||
# Handler. Reset view to default.
|
# Handler. Reset view to default.
|
||||||
#
|
#
|
||||||
resetView = func {
|
resetView = func {
|
||||||
|
if (getprop("/sim/current-view/view-number") == 6)
|
||||||
|
return flyby.setpos(1);
|
||||||
|
|
||||||
setprop("/sim/current-view/goal-heading-offset-deg",
|
setprop("/sim/current-view/goal-heading-offset-deg",
|
||||||
getprop("/sim/current-view/config/heading-offset-deg"));
|
getprop("/sim/current-view/config/heading-offset-deg"));
|
||||||
setprop("/sim/current-view/goal-pitch-offset-deg",
|
setprop("/sim/current-view/goal-pitch-offset-deg",
|
||||||
|
@ -135,7 +117,10 @@ panViewPitch = func(step) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##
|
||||||
|
# Singleton class that manages "Fly-By View". It's started with flyby.init()
|
||||||
|
# and then works autonomously.
|
||||||
|
#
|
||||||
var flyby = {
|
var flyby = {
|
||||||
init : func {
|
init : func {
|
||||||
me.lonN = props.globals.getNode("/sim/viewer/longitude-deg", 1);
|
me.lonN = props.globals.getNode("/sim/viewer/longitude-deg", 1);
|
||||||
|
@ -169,7 +154,7 @@ var flyby = {
|
||||||
me.coord = geo.Coord.new().set(geo.aircraft_position());
|
me.coord = geo.Coord.new().set(geo.aircraft_position());
|
||||||
me.dist = 20;
|
me.dist = 20;
|
||||||
me.setpos(1);
|
me.setpos(1);
|
||||||
me.loop(me.loopid);
|
me._loop_(me.loopid);
|
||||||
},
|
},
|
||||||
setpos : func(force = 0) {
|
setpos : func(force = 0) {
|
||||||
var pos = geo.aircraft_position();
|
var pos = geo.aircraft_position();
|
||||||
|
@ -193,10 +178,10 @@ var flyby = {
|
||||||
me.altN.setValue(alt * geo.M2FT);
|
me.altN.setValue(alt * geo.M2FT);
|
||||||
me.coord.set_lonlat(lon, lat, alt);
|
me.coord.set_lonlat(lon, lat, alt);
|
||||||
},
|
},
|
||||||
loop : func(id) {
|
_loop_ : func(id) {
|
||||||
id == me.loopid or return;
|
id == me.loopid or return;
|
||||||
me.setpos();
|
me.setpos();
|
||||||
settimer(func { me.loop(id) }, 6.3);
|
settimer(func { me._loop_(id) }, 6.3);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -343,15 +328,18 @@ var point = {
|
||||||
|
|
||||||
|
|
||||||
var views = nil;
|
var views = nil;
|
||||||
|
var fovProp = nil;
|
||||||
|
|
||||||
|
|
||||||
_setlistener("/sim/signals/nasal-dir-initialized", func {
|
_setlistener("/sim/signals/nasal-dir-initialized", func {
|
||||||
point.init();
|
|
||||||
views = props.globals.getNode("/sim").getChildren("view");
|
views = props.globals.getNode("/sim").getChildren("view");
|
||||||
|
fovProp = props.globals.getNode("/sim/current-view/field-of-view");
|
||||||
|
point.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
_setlistener("/sim/signals/fdm-initialized", func {
|
_setlistener("/sim/signals/fdm-initialized", func {
|
||||||
flyby.init();
|
flyby.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue