From d4e030f9c6599c1d298843faacbc497c3a582ed5 Mon Sep 17 00:00:00 2001 From: mfranz <mfranz> Date: Fri, 4 May 2007 22:48:40 +0000 Subject: [PATCH] - don't update when aircraft stays within threshold distance - randomize left/right, better parameters - don't reset on pause --- Nasal/view.nas | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Nasal/view.nas b/Nasal/view.nas index dfd4a97ad..550d37844 100644 --- a/Nasal/view.nas +++ b/Nasal/view.nas @@ -149,7 +149,7 @@ var flyby = { if (me.number == nil) die("can't find 'Fly-By View'"); - setlistener("/sim/freeze/replay-state", func { me.reset() }); + setlistener("/sim/freeze/replay-state", func { cmdarg().getValue() or me.reset() }); setlistener("/sim/signals/reinit", func { cmdarg().getValue() or me.reset() }); setlistener("/sim/current-view/view-number", func { me.loopid += 1; @@ -160,25 +160,28 @@ var flyby = { }, 1); }, reset: func { - me.chase = -getprop("/sim/chase-distance-m") / 2; + 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(); + me.setpos(1); }, - setpos : func { + setpos : func(force = 0) { var pos = geo.aircraft_position(); var course = me.coord.course_to(pos); var dist = me.coord.distance_to(pos); - pos.apply_course_distance(course, 30 + dist * 0.5); - pos.apply_course_distance(course + 90, me.chase * 0.75); + if (dist < 1.5 * 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 + side, me.chase); var lon = pos.lon(); var lat = pos.lat(); var elev = geo.elevation(lon, lat); var alt = pos.alt(); alt += (alt - me.coord.alt()) * 0.5; - if (elev != nil and alt < elev + 10) - alt = elev + 10; + if (elev != nil and alt < elev + 5) + alt = elev + 5; me.lonN.setValue(lon); me.latN.setValue(lat); @@ -188,8 +191,8 @@ var flyby = { loop : func(id) { id == me.loopid or return; me.setpos(); - settimer(func { me.loop(id) }, 6); - } + settimer(func { me.loop(id) }, 6.3); + }, };