Attached is yet another 3D clouds patch, to fix the following:
1) The 3D clouds were not modified by the cloud coverage, due to some problems with osg::Switch
2) METAR changes to cloud coverage were not obeyed.
3) Making changes via the Cloud dialog had no effect unless 3D clouds were toggled.
4) Cloud cover was too sparse.
5) 3D Stratus clouds caused performance issues on some hardware (fixed by removing 3D stratus from cloudlayers.xml - it will now be a 2D layer).
Reacting to a feature request, attached patch adds support for
parkpos selection in the "location on ground" dialog, and clears any
parkpos preset in the "airports" dialog.
- Removes the cloud type re-use code - I think they aren't worth the graphical artefacts that they cause in light of Tim's improvements
- Changes the transparency of the clouds. Previously, the clouds were transparent at 0m distance, opaque at 200m, then gradually more transparent to the fog limits. This meant they were generally quite transparent. Now, they are opaque from 200m to 15km, then become transparent at 20km. A side effect of this is that the current textures could probably benefit from being made slightly transparent to improve the blending of the sprites against each other.
This provides the following enhancements & bug fixes
- Fix the chequer-board bug.
- Add proper cloud coverage function - so scattered clouds are now truly scattered.
- Add real-time control for visibility range.
- Use a limited set of clouds rather than generating a completely new Geode for each cloud. This saves sorting and display time.
- Add controls to Rendering dialog to allow fine-tuning of the number of sprites, cloud visibility and the number of different types of cloud.
- Add some variance to the sort back-off to avoid all clouds being sorted at the same time.
- Pack attributes into vectors for performance
- Re-order the cloud type determination code so that if a cloud layer could either be stratus or cumulus, cumulus is used.
- Lowered the cloud level in the standard cloud configuration slightly so a cumulus layer is generated rather than stratus.
These last two mean that you should see some 3D cumuli if disabling real weather fetch.
My thanks to Yon Uriarte for his help with performance work.
(/sim/rendering/precipitation-gui-enabled) *and* if the aircraft wants it
(/sim/rendering/precipitation-aircraft-enabled). Some aircraft model rain
on the windshield and want to turn rain off for interior views.
- Multiplayer is too long for a menu entry that is greyed out most of
the time for many people
- I don't like having the word "player" in front of me all the time
(FlightGear Is Not A Game[TM] :-)
Should we shorten it further to just "Net"?
- Update redout level every frame
- Replace reading of properties every iteration with listeners
- move -onset and -complete properties into a parameters subtree
1) The chat menu will now select the runway closest to the aircraft
when the aircraft is on the ground, or very low (< 100ft). This
handles the case where the user has selected a runway explicitly,
e.g. 01R for KSFO take-offs for noise abatement. My thanks for
AnMaster for pointing this out on IRC. Note that above 100 ft, the
wind-appropriate runway will still be used.
2) Change to keyboard description for the - key, as pointed out by
Melchior.
- rename prop-key-handler.nas to prop_key_handler.nas (the hyphens were
intentional, exactly to *make* using it as namespace less inviting,
but times change ...)
- add property browser binding to the '/'-key for when the property key handler
is turned off (/sim/input/property-key-handler=0). If it's on, use /: or
/<property>: to open the browser.
- run keyboard event listener only when property key handler is active
I hope that the '/' key can keep this binding even after a keyboard review.
The '/' is just the most natural key for dealing with properties, and it's
far less prominent on non-US-keyboards (e.g. Shift-7 on German keyboards),
so it's not really very well suited for important aircraft functions, anyway.
But I don't insist. :-)
These are then skipped with view.stepView(n), unless the second, optional
argument is set to 1: view.stepView(n, 1);
Whether a view is enabled or not, is saved in $FG_ROOT/.fgfs/autosave.xml
(system views) or $FG_ROOT/.fgfs/aircraft-data/<aircraft>.xml
- allow turning on/off extra widgets for developers (HUD dialog: colors,
rendering dialog: visualization of shadow edges), and to turn on/off new
- property key handler ('/'-key)
Both features are off by default, and their state is saved to autosave.xml.
/sim/current-view/dynamic-view. There are additionally <dynamic-view>
settings per view, but those only enable it for that view if it's
globally turned on.
algorithm (needed for the file selector and useful for other purposes, like
assembling lists of livery or screenshot files etc.)
- io.nas: move fixpath to string.nas (it's not only useful for file paths
but can also be used for property paths)
- screen.nas: move trim to string.nas (used by screen.nas and nasal-console.xml)
- gui.nas: add pattern matching to FileSelctor
- ufo.nas: use patterm matching (only *.ac and *.xml files shall be listed)
/sim/gui/dialogs/file-select/directory, the selected file's full path
is returned in /sim/gui/dialogs/file-select/directory. There will be
a gui.file_selector class that allows to have more than one of these
dialogs open, where each of them reports the result to a callback function.
The dialog toggles dotfile display with ctrl-click on the "." entry,
and switches to FG_ROOT and FG_HOME with ctrl-click and shift-click on
the ".." entry.
This dialog is ATM not used anywhere in fgfs, but might be needed by
add-ons, much like the xml.nas code. Note that backslashes are converted
to slashes, which should ensure that no characters can be sneaked in
on UNIX systems. This breaks files containing escaped characters on
MS Windows. Fix for that on request. :-) Special characters (like German
umlauts) aren't displayed correctly, but properly returned. (Depending
on the plib font.)
gui/menubar.xml: Tim Moore:
These patches implement a command to dump the entire OSG scene graph as
a .osg text file. While large, this allows debuggers to really see
what's happening in the scene graph.
all code shares a common namespace, so variables defined in one tab can
be used in another during the whole fgfs session
- make code persistent (saved in autosave.xml)
- better error messages (code borrowed from nasal/lib/interactive.nas)
- clear button (replaces close button, which is now on the title bar)
- help button (explains how to add more tab buttons, etc.)
$FG_ROOT/gui/dialogs/tutorial.xml. It combines the former selection
and description dialogs, which makes browsing much more pleasant.
No more switching back and forth between the two old dialogs. Also,
the <list> box can handle a bigger number of tutorials than the
<combo> box could.
- remove comments from the top of tutorial.nas. The documentation is
now $FG_ROOT/Docs/README.tutorials
preferences.xml gui/menubar.xml gui/dialogs/rendering.xml
Added Files:
Nasal/multiplayer.nas gui/dialogs/chat.xml
gui/dialogs/chat_full.xml:
the data part of Stuarts multiplayer/chat patch
but as this is an integral part of FlightGear, I don't want to push for it.
Try out and comment. It's available under "Debug/Property Browser". Note,
that this isn't the slow pure-Nasal implementation, but a regular dialog
using a c++ based widget. Only the handling is done in Nasal, so there should
really be not performance degradation compared with the old dialog.
Easter Eggs: some entries work differently when the Control-key is pressed:
"." -> toggle output of SGPropertyNode flags
".." -> go to root (not just one dir level)
bool entry -> toggle bool entry value
has to be given before a --wp or --flight-plan option to work.)
- let the "Remove" button remove the first entry by default, not the last.
(Note that you can remove any entry if you selected it in the list first.
Likewise you can insert a new waypoint at any position by selecting the
respective entry.)
<close> block, remove autopilot helper file autopilot.nas and (re)implement
its functionality in autopilot.xml
- make AP dialog "bidirectional" and "live": all input fields are <live>
(i.e. they are updated as the autopilot settings are changed, for example
by panel actions or property browser changes)
- dialog input is only forwarded to the AP; no direct checkbox/radiobutton
handling through widget operation, instead:
- changes to the AP properties operate checkboxes/radiobuttons
This makes the AP dialog always reflect the AP state. If the AP refuses
one setting and sets it back to something else, then the dialog will
immediately react and show the actual setting.
not only more consistent, but also makes the autopilot dialog act more like
the real device). Add a few rules. Move the checkboxes to the left, as it's
usually done in GUIs for switches that enable/disable a group of widgets.
leave edit field!, press <Return> to execute; as an example try
screen.log.write("hello world"), or f16.canopy.open() in the F16,
or bo105.doors[3].move(0.3) in the Bo105 etc.
- gui.nas: use 4-space indents like the rest of the file; waste slightly less
cycles: checking for the property shouldn't be done in a loop at
all, it only serves as a temporary solution