- first stab at refactoring the map.nas module, and trying to let the API evolve according to our requirements
- split up the module into separate files (some of them will disappear soon)
- split up the "drawing" loops into separate functions so that they can be individually called
- move actual "drawing" to map_layers.nas
- introduce some OOP helpers to prepare a pure Layer-based design
- prepare helpers: LayeredMap, GenericMap, AirportMap (TODO: use a real "Layer" class)
- move airport features (taxiways, runways, parking, tower) to separate layers (i.e. canvas groups)
- avoid using a single update callback and use different layer-specific callbacks to update individual layers more efficiently
- add some boilerplate hashes to prepare the MVC design
- allow lazy updating of layers, where canvas groups are only populated on demand, to save some time during instantiation, i.e. loading an airport without "parking" selected, will only populate the layer once the checkbox is checked
- extend the original code such that it supports showing multiple airports at once
- add some proof of concept "navaid" layer using SVG files for navaid symbols (added only NDB symbol from wikimedia commons)
regressions:
- runway highlighting needs to be re-implemented
- parking highlighting will be done differently
- enforcing a specific drawing order for layers is currently not explicitly supported, so that taxiways may be rendered on top of runways
Also:
- integrated with the latest changes in git/master (HEAD) -i.e. metar support
- further generalized map.nas
- partially moved instantiation from Nasal space to XML space (WIP)
- create "toggle layer" checkboxes procedurally in Nasal space
- prepared the code to be better reusable in other dialogs (e.g. route manager, map dialog etc)
- completely removed the "highlighting" (runway/parking) feature for now, because we talked about re-implementing it anyhow
- Display taxiways
- Display different surface types
- control over components (taxiways, parking positions, towers) displayed
- include distance and course to airport.
A fire log can now be loaded at startup time with, e.g.,
--prop:environment/wildfire/events-file=$HOME/.fgfs/Wildfire/small_fire.xml
(Note: Wildfire is only authorized to load logs from ~/.fgfs/Wildfire .)
Additionally, a time at which the fire starts to evolve (past the event log)
can be specified with, e.g.,
--prop:environment/wildfire/time-hack-gmt='2012:08:23:15:15'
Instances of FlightGear that are started with the same event log and time-hack
should arrive at similar wildfire states (prior to new events).
- API:
* Rename setSize to setFontSize
* Add method getElementById to Group
* Rename name of element to id to show more prominent
that it should be unique.
* Add methods for hide/show elements.
* Fix: set correct id for cloned elements (parsesvg)
* Fix: retrieving group with getElementById failed.
* Parse SVG inkscape:transform-center-[xy]
* Allow rotation around given point (use values from inkscape
by default for SVG files)
* Use breadth-first search instead of depth-first search for
Element::getElementById (large speedup :))
* Add more convenience functions for path drawing.
* Add version check (useful if API files manually copied)
- SVG:
* Support <use> element
* Parse font-size
* Parse stroke-linecap
- Fraction of each tank capacity displayed, along with pounds and gallons
- Total fuel is now displayed
- CofG displayed if available even if /limits/ not defined (bug fix)
- Tanks of capacity 0 ignored (bug fix)
- Some layout improvements.
Addresses issue #778
Throttle/aileron/elevator keyboard bindings did not work on aircraft
without autopilots (= without A/P properties). Rearrange logic to make
basic axis/throttle control the default (i.e. when prop values are "nil").
This is a new button in the pilot list, left of the callsign. It's
binded to multiplayer.compose_message("<CALLSIGN>, ");
Signed-off-by: Anders Gidenstam <anders@gidenstam.org>
"/sim/signals/fdm-initialized" triggers _every_ time the FDM is reset,
so for every sim reset/relocate.
We need to uninstall the listeners after its first execution, or guard
certain parts of the initialization, to avoid starting multiple
"timer/update loops", or installing multiple property listeners.
Repeating "sim reset" often enough would eventually completely block/
overload the system.
Need to clear the engine list before appending a new set of engines.
Engine list was growing on every FDM reset, causing weird control effects
after (multiple) sim resets.
Use --prop:/sim/rendering/shaders/quality-level=-1 to enable the custom
settings in the Shader Options dialog.
Apart from that the quality-level property will work as before (0 disables
all shaders, 5 puts all shaders to max.
A bug in weather-utility.nas caused constant computation
of wave parameters due to the fact that the wind speed
was ignored.
That code was ugly anyway, so it has been replaced by
property rules which don't create work for the nasal
garbage collector.
All required properties for the wave shader are now in
interpolator.xml, the snow-line computation lives in
metarinterpolator.xml
Do not install another set of listeners on _every_ sim reset.
Also improve performance by removing a listener for a property which is
written in _every_ loop anyway (don't waste another Nasal context).
(Do we really need a _Nasal_ loop running at full speed just to convert
a bunch of properties? It increases the load on the Nasal GC and
is unconditionally active, even if all shaders are disabled etc).
- Now enabled even when no MP settings configured on command-line
- Add Server Status button to launch the MP Server status URL
- Minor layout cleanup.
Make vspeed/diff_norm configurable. Allow effect to be independent of
vspeed, so it works for all gear (after main gear touch down, vspeed is 0,
so smoke effects for nose-gear usually wouldn't work).
Removing the currently unused keybindings for [Shift]I used
for cycling of HUD types. Also remove this from the help
dialog.
May be re-added for the next release, but currently there is
no HUD-type cycling implemented.
fixes for a couple of issues, some improved textures/cloud model changes,
smooth instead of hard visibility transitions, updated documentation.
Also removed 'Test' entries from the menu.
(ThorstenB: Also cleaned-up Docs/ folder, moving local weather
documentation images to sub folder).
Motivation for removal: The current implementation is problematic due to hardcoded elevations, and shows some problems when the code is disabled. Additionally, the preferred sequence for committing material to ${FG_ROOT}/data/Models is to commit them to the scenemodels database, from where they are synced with fgdata/GIT.
When user switched to a different view mode (e.g. chase/helicopter/tower
view) before or during a tutorial, everything went wrong...
Need to control (save/restore/switch) the view number (view mode) during
tutorials. Also adds an option to explicitly change view mode during
a tutorial, i.e. tutorials can switch to tower view, chase view, ... now.
Make tutorial dialog a proper window, clean-up menu.
Show welcome message to new user when tutorial available.
Repeat current tutorial message, when no user progress.
Add a listener to /environment/weather-scenario to allow setting
the scenario at runtime. Need some cleanup of the global weather
dialog to remove duplicate code.
It's annoying when balloons appear exactly at the current a/c position
on sim reset, since the a/c gets knocked over etc.
(Balloon scenario still won't work properly after a sim-reset, so another
fix is required...).