fix behavior for begin and end of replay
This commit is contained in:
parent
1a48bfb840
commit
d225de2aea
1 changed files with 11 additions and 8 deletions
|
@ -143,37 +143,40 @@ var flyby = {
|
|||
me.altN = props.globals.getNode("/sim/viewer/altitude-ft", 1);
|
||||
me.loopid = 0;
|
||||
me.number = nil;
|
||||
me.currview = nil;
|
||||
forindex (var i; views)
|
||||
if (views[i].getNode("name").getValue() == "Fly-By View")
|
||||
me.number = i;
|
||||
if (me.number == nil)
|
||||
die("can't find 'Fly-By View'");
|
||||
|
||||
setlistener("/sim/freeze/replay-state", func { cmdarg().getValue() or me.reset() });
|
||||
setlistener("/sim/signals/reinit", func { cmdarg().getValue() or me.reset() });
|
||||
setlistener("/sim/freeze/replay-state", func {
|
||||
settimer(func { me.reset() }, 1); # time for replay to catch up
|
||||
});
|
||||
setlistener("/sim/current-view/view-number", func {
|
||||
me.loopid += 1;
|
||||
if (cmdarg().getValue() == me.number) {
|
||||
me.reset();
|
||||
me.loop(me.loopid);
|
||||
}
|
||||
me.currview = cmdarg().getValue();
|
||||
me.reset();
|
||||
}, 1);
|
||||
},
|
||||
reset: func {
|
||||
me.loopid += 1;
|
||||
me.currview == me.number or return;
|
||||
me.chase = -getprop("/sim/chase-distance-m");
|
||||
me.course = getprop("/orientation/heading-deg");
|
||||
me.coord = geo.Coord.new().set(geo.aircraft_position());
|
||||
me.dist = 20;
|
||||
me.setpos(1);
|
||||
me.loop(me.loopid);
|
||||
},
|
||||
setpos : func(force = 0) {
|
||||
var pos = geo.aircraft_position();
|
||||
var course = me.coord.course_to(pos);
|
||||
var dist = me.coord.distance_to(pos);
|
||||
if (dist < 1.5 * me.chase and !force)
|
||||
if (dist < 1.7 * me.chase and !force)
|
||||
return;
|
||||
var side = (rand() - 0.5 < 0) ? -90 : 90;;
|
||||
pos.apply_course_distance(course, dist * 0.6);
|
||||
pos.apply_course_distance(course, dist * 0.8);
|
||||
pos.apply_course_distance(course + side, me.chase);
|
||||
var lon = pos.lon();
|
||||
var lat = pos.lat();
|
||||
|
|
Loading…
Add table
Reference in a new issue