1
0
Fork 0
Commit graph

515 commits

Author SHA1 Message Date
James Turner
9339fd2375 Add some /sim/presets properties to setDefaults
Ensure these properties are always defined, but with default values,
to simplify usage.
2018-12-04 09:50:48 +01:00
James Turner
1e104bbdfe Version the FG-root setting
This ensures fresh installs will see an empty value, and hence 
default to the shipped version.
2018-11-25 14:06:51 +00:00
Richard Harrison
1e636ce4cf Support for DDS Texture Cache
- pass texture cache control properties to simgear
 - /sim/rendering/texture-cache/cache-enabled
 - /sim/rendering/texture-cache/compress-transparent
 - /sim/rendering/texture-cache/compress-solid
 - /sim/rendering/texture-cache/compress

- support --texture-cache-dir command line option
- set max reported supported texture size during splashscreen.
2018-11-24 20:21:46 +01:00
James Turner
f819750287 Launcher respects --language arg if set 2018-10-12 11:37:39 +01:00
James Turner
098c489ae0 Make —parking-id an alias for —parkpos 2018-09-20 10:26:48 +01:00
James Turner
72239c9a52 Code cleanups while checking reposition performance
Some C++11 fixes and give FDMShell, Reply a subsystem-name
2018-09-09 13:42:51 +01:00
James Turner
d534a5ba36 Move build-ID variables to their own header
This is to reduce rebuilding by changing version.h needlessly, since
only a few places use the build ID info.
2018-08-12 11:18:50 -07:00
James Turner
696c95d612 Fix passing —-config files via the launcher
Curt found this, allow using --config from the launcher additional
settings box.
2018-08-10 12:51:51 +01:00
Edward d'Auvergne
feb854946e TestSuite: Complete removal of FG_TESTLIB. 2018-07-26 15:52:07 +02:00
James Turner
7c9b1b391f Guard against SGPath::document()s returning null
Underlying bug is fixed in SimGear, but let's also guard against a failure here,
by falling back to FG_HOME on Windows.

For discussion see:
https://sourceforge.net/p/flightgear/codetickets/2019/
2018-06-15 11:11:05 +01:00
Erik Hofman
2edf1443d3 Detect AeonWave and if it is installed use it, otherwise fall back to OpenAL. Also let get_available_devices() use C++ strings instead of const char* 2018-06-02 14:06:36 +02:00
James Turner
a05cdce793 Telent protocol Nasal command 2018-02-11 21:15:45 +00:00
Florent Rougon
da961b97f2 Add-ons: more specific file names for the interface between FG core and add-ons
The add-on framework now uses the following files in each add-on
directory:
  - addon-config.xml (previously: config.xml)
  - addon-main.nas   (previously: main.nas)

This is consistent with the addon-metadata.xml file that is already part
of the interface between FG core and add-ons. The goal is to make it
clearer, when browsing an add-on directory, which files belong to the
"FG core <-> add-on" interface and which files belong to the add-on
proper. This will be beneficial also when more files are added to the
"FG core <-> add-on" interface, such as possibly addon-events.xml in the
future.

This change is incompatible, thus it is the right time to do *before*
2018.2.1 is out, especially considering that this upcoming release
already has incompatible changes in the add-on API, namely the
requirement of the addon-metadata.xml file and the type of the argument
passed to each add-on's main() function. We'll try harder not to break
compatibility in the add-on API once 2018.2.1 is out. For now, it is
still a good time to try to get the API as clean as possible.
2018-02-10 19:49:02 +01:00
Florent Rougon
f5ab26bd71 Add-ons: move all code to the flightgear::addons namespace 2017-12-26 19:44:15 +01:00
Florent Rougon
48f52f14c4 Improved infrastructure for add-ons: C++ classes, metadata file, Nasal interface
This commit adds C++ classes for add-on management, most notably
AddonManager, Addon and AddonVersion. The AddonManager is used to
register add-ons. It relies on an std::map<std::string, AddonRef> to
hold the metadata of each registered add-on (keys of the std::map are
add-on identifiers, and AddonRef is currently SGSharedPtr<Addon>).
Accessor methods are available for:

  - retrieving the list of registered or loaded add-ons (terminology
    explained in $FG_ROOT/Docs/README.add-ons);

  - checking if a particular add-on has already been registered or
    loaded;

  - for each add-on, obtaining an Addon instance which can be queried
    for its name, id, version, base path, the minimum and maximum
    FlightGear versions it requires, its base node in the Property Tree,
    its order in the load sequence, short and long description strings,
    home page, etc.

The most important metadata is made accessible in the Property Tree
under /addons/by-id/<addon-id> and the property
/addons/by-id/<addon-id>/loaded can be checked or listened to, in
order to determine when a particular add-on is loaded. There is also a
Nasal interface to access add-on metadata in a convenient way.

In order to provide this metadata, each add-on must from now on have in
its base directory a file called 'addon-metadata.xml'.

All this is documented in much more detail in
$FG_ROOT/Docs/README.add-ons.

Mailing-list discussion:

  https://sourceforge.net/p/flightgear/mailman/message/36146017/
2017-12-08 00:36:41 +01:00
ThorstenB
147ff104cd Adds support for NMEA messages for traffic reporting (flarm). Also extends the NMEA base class to handle bidirectional communication. Allows FlightGear to feed position and traffic data (for multi-player and AI aircraft) to NAV/moving-map clients, like xcsoar, skydemon, skymap etc. Some basic flarm configuration commands are also emulated, to properly persuade the clients. By default, all moving aircraft are reported (traffic information). Actual threat-alerts are also supported, but require the installation of the "TCAS instrument". 2017-11-24 22:54:32 +01:00
Florent Rougon
86aaaf6de9 Process the --addon option in the standard way
Doing the option processing in Options::parseOption() has drawbacks:
  - doesn't work well upon reset;
  - doesn't work in the built-in launcher Additional Settings box.

Options::processOptions() is invoked both upon reset after the property
tree has been reset, and by the built-in launcher to process options
given in the Additional Settings box. This is not the case of
Options::parseOption() which is better for... parsing. :-)

Also use SGPath::fromLocal8Bit() to decode the path argument of --addon.
2017-10-23 09:18:51 +02:00
Torsten Dreyer
f6698a0b1f Introduce commandline-option --addon
using  --addon=/foo/bar does
 * add /foo/bar/config.xml as propertyfile
 * add /foo/bar to aircraft_paths to provide read-access
 * sets property /addons/addon[n]/path = "/foo/bar"
 * addons get initialized from addons.nas in FGDATA/Nasal
2017-07-18 12:13:44 +02:00
Alessandro Menti
7245357751
Mark enhanced lighting options and --adf as deprecated
Print an error message and exit if --{enable,disable}-enhanced-lighting
or --adf are used (those deprecated options will be removed in a future
version of FlightGear).
2017-06-04 16:56:17 +02:00
Richard Harrison
ac89ec94a3 Console: restore option to open console early. 2017-05-31 11:38:13 +02:00
Richard Harrison
16a7493de7 Fix --console from the launcher 2017-05-30 17:59:34 +02:00
Florent Rougon
034fb89db3 Abort with a clear error message for invalid uses of --config inside a config file
The options.cxx code is not ready to handle recursive use of --config
(for config files). Instead of failing in an ugly way, abort with a
clear error message in such situations. See discussion at
<https://sourceforge.net/p/flightgear/mailman/message/35838852/>.

Note: it *is* possible to load XML PropertyList files from config files,
      so --config is not entirely "banned" from config files.

+ add missing include
2017-05-15 11:06:47 +02:00
Florent Rougon
4259b548b0 Fix bugs due to incorrect use of SGPath::pathListSep
Before SimGear commit a962c90b30f36575d01162b64471fa77473237a0,
SGPath::pathListSep was a char in static memory that was not necessarily
followed by '\0'. As a consequence, using &SGPath::pathListSep as a
C-style string could result in a string containing the correct separator
*plus* whatever followed in memory until the first null byte...

SimGear commit a962c90b30 changes this situation by making
SGPath::pathListSep an array of two const chars: the path list separator
followed by a '\0'.

This commit simply adapts FlightGear to this change, which fixes a
couple of bugs where the separator was used, mainly unneeded NavCache
rebuilds due to the "apt.dat", "fix.dat" and "nav.dat" properties in the
SQLite database containing the correct paths separated by a possibly
incorrect separator string (there was no alteration of the cache
contents as far as I can tell, since the db property is only used to
check if the lists of apt.dat, fix.dat and nav.dat files have changed).
2017-04-15 09:53:16 +02:00
James Turner
3732930269 QML-driven settings UI. 2017-04-10 14:38:57 +01:00
Florent Rougon
4b494a69bd Rename fatalMessageBox() to fatalMessageBoxWithoutExit(), add exiting variant
- Rename fatalMessageBox() to fatalMessageBoxWithoutExit(). This should
  prevent the kind of bug that prompted this set of changes: someone
  calling fatalMessageBox(), assuming the program would stop at that
  point, whereas in reality it did not.

- Add new function fatalMessageBoxThenExit(). This is not vital of
  course, but allows one to spare one line here and there and to apply
  the DRY principle for such fatal exits.

- Replace every existing call to fatalMessageBox() with one or the other
  of the two new functions. Improve formatting along the way. This
  fixes a few bugs of the kind explained above.
2017-04-10 02:29:48 +02:00
Gary Preston
8958b4d130 Cleanup unused variable warning.
Remove, comment out or relocate variables as appropriate to silence
unused variable warning.
2017-04-06 18:26:18 +09:00
Richard Harrison
5d23fa71ff OSG 3.5.x compatibility fix
OSG 3.5 (and maybe before) declares that ThreadSafeRefenceCounting is no longer required and it has been removed.
2017-04-02 02:09:38 +02:00
James Turner
58a7f2c5c2 Unit-test for initPosition.
Only basic, but can be expanded incrementally now
2017-03-27 15:38:05 +01:00
James Turner
9e122eaf81 Partial testing framework.
Compile a useful subset of FG as a shared library, and add two basic
uses of this to exercise some Flightplan / RoutePath / navaid
functions.

The test framework can/will be expanded incrementally from here, this
is just a starting point.
2017-03-25 15:35:26 +00:00
James Turner
b1fa31fa09 Restore METAR-based runway selection.
As part of this, add the ability to distinguish default vs explicit
airport selection via a new /sim/presets/airport-requested flag. This
enables us to more cleanly handle different combinations of startup,
especially the case where the user requests an airport but no runway
(wants auto selection), ensuring we don’t look for the default airport’s
runway (from location-presets.xml) in that case.
2017-03-19 11:55:10 +00:00
Florent Rougon
dab68505bb Rename fgfs' option --log-file to --log-dir
This makes sense, since this option expects a directory parameter, or
the special value 'desktop', and computes the file's base name on its
own.

cf. <https://sourceforge.net/p/flightgear/mailman/message/35715817/>
and <https://sourceforge.net/p/flightgear/mailman/message/35715836/>
2017-03-11 09:51:16 +01:00
Florent Rougon
8372f086c1 Add the lists of fix.dat and nav.dat files to the output of --json-report
- Declare 'datTypeStr' and 'defaultDatFile' as public member variables
  of NavDataCache ('defaultDatFile' is not *required* for this commit,
  it just seems to make sense to treat both members the same way/keep
  them together in the source code).

- New keys under "navigation data" in the JSON report: "fix.dat files"
  and "nav.dat files".
2017-03-10 23:04:39 +01:00
James Turner
39b239957e Startup-tip system.
Replace the license / website text with a startup tip. Tips are shown
based on the day of the year, can be changed easily.
2017-03-03 23:21:18 +02:00
James Turner
3653508412 Build- and run-time concept of developer mode.
Make a single Cmake value to expose the build type to code, and use
this to default a run-time ‘developer-mode’ property, which can be
over-ridden from the command line.

Use this to drive the different warning levels. Policies subject to
review, especially whether nightly builds should default to 
developer mode or not.
2017-02-27 23:37:59 +00:00
Peter Sadrozinski
ec4b9f8542 Alternative terrain engine based on pagedLOD
- remove TileMgr from sub systems - add to btg terrain engine
2017-02-26 10:17:15 -05:00
Florent Rougon
8f24de831d Adapt includes according to relocation of SimGear's iostreams-related files
This change is the logical counterpart of SimGear's change from commit
79f869a7f32910197be72b21f6489fbbba02c836 that moved the following files
from simgear/misc to simgear/io/iostreams:

  gzcontainerfile.cxx
  gzcontainerfile.hxx
  gzfstream.cxx (formerly zfstream.cxx)
  gzfstream.hxx (formerly zfstream.hxx)
  sgstream.cxx
  sgstream.hxx
  sgstream_test.cxx
2017-02-12 21:30:51 +01:00
James Turner
5d27d2509f Add “—-log-file” option, to log to other locations.
Each argument creates another log file, in the directory named. Symbolic
value ‘desktop’ creates logs on the user’s desktop.

Needs corresponding SimGear commit to build
2017-01-30 08:01:20 +01:00
James Turner
78498c560d Rename preferences.xml -> defaults.xml
Requires FGData commit: 0565eaab10a5d466cd485766b17d1870936a0a57
(which actually renames the file).

Also disables the preferences-load command since I don’t believe it
would actually be safe to reload the defaults without doing a simulator
reset (aircraft -set.xml values would be overwritten, for example)
2017-01-12 09:45:19 +00:00
Florent Rougon
d762db2db8 Fix null pointer dereference introduced by 8aec4a0cef 2017-01-06 13:07:00 +01:00
James Turner
4a3ee6a74a Relax base-package and SimGear version checks.
As discussed on the devel list, only require the major+minor versions
of FG+SG+data to match by default. If we encounter a situation on
a release branch where stronger checks are needed, it’s easy to
restore.
2017-01-05 11:09:41 +00:00
Florent Rougon
ea827f5677 Revert commits e1b65590, 0b1c3568 and 72886289
Commit e1b65590cb was:

  Add the top-level options.xml and Translations directory moved out of
  FGData

Commit 0b1c356837 was:

  Make the FG installation prefix available to C++ code via config.h

Commit 7288628919 was:

  Load --help output and translated strings from
  $FG_INSTALL_PREFIX/share/flightgear

For the reasons of these revertings, see the thread at
<https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/CAHtsj_eFdxLoXXoNq%3D3OKNRmyR6-FowFL97TASdQJx8N05Lmig%40mail.gmail.com/#msg35580548>,
including <https://sourceforge.net/p/flightgear/mailman/message/35584363/>,
<https://sourceforge.net/p/flightgear/mailman/message/35584803/> and
<https://sourceforge.net/p/flightgear/mailman/message/35585421/> (appearing
out-of-thread according to the SF mailing list archive...).
2017-01-05 06:53:53 +01:00
Florent Rougon
9fdcca5e94 Revert relevant parts of f4d8d8c6a1
For the reasons of this reverting, see the thread at
<https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/CAHtsj_eFdxLoXXoNq%3D3OKNRmyR6-FowFL97TASdQJx8N05Lmig%40mail.gmail.com/#msg35580548>,
including <https://sourceforge.net/p/flightgear/mailman/message/35584363/>,
<https://sourceforge.net/p/flightgear/mailman/message/35584803/> and
<https://sourceforge.net/p/flightgear/mailman/message/35585421/> (appearing
out-of-thread according to the SF mailing list archive).
2017-01-05 06:31:52 +01:00
James Turner
8aec4a0cef Silence a clang warning. 2017-01-03 15:11:12 +00:00
Florent Rougon
f4d8d8c6a1 Minor changes
Essentially, adapt two places where options.xml was supposed to be found
in $FG_ROOT (in one of these, the comment was already incorrect way
before the recent change moving options.xml out of FGData).
2016-12-29 14:01:56 +01:00
Florent Rougon
7288628919 Load --help output and translated strings from $FG_INSTALL_PREFIX/share/flightgear
$FG_INSTALL_PREFIX represents the FlightGear installation prefix, such
as /usr, /usr/local or /opt/FlightGear on Unix systems. Copying the
--help output and translated strings there avoids having to write to
$FG_ROOT when 'make install' (or some OS-dependent equivalent) is run
from the FlightGear build directory---that would be ugly when $FG_ROOT
points to the FGData Git repository.

In FGLocale::FGLocale(), Translations/locale.xml is loaded using
readProperties() and fatalMessageBox() (in case an error is
encountered). Note that it couldn't be loaded via fgLoadProps() in the
current state, because this function relies on guiErrorMessage() when an
error is encountered, which calls mkDialog(), which itself does
globals->get_subsystem("gui"). This last call can't be done from
FGGlobals' constructor---where the 'globals' pointer is still
NULL---hence the need for a different mechanism not relying on
FGGlobals.

For consistency, and also because it provides a better user experience[1],
load options.xml using the same method instead of with fgLoadProps().

[1] I.e., in case of an error, the user gets to see a graphical popup
    window with an explanatory message before FG exits, assuming he is
    either on Windows, or on Mac, or has Qt support built in FG, as
    opposed to only an SG_LOG() call [because when options.xml is
    loaded, guiErrorMessage() used by fgLoadProps() can't use the 'gui'
    subsystem].
2016-12-29 13:40:16 +01:00
James Turner
e64a2db5a0 Remove the scenery path mangling.
Requires a matching SG commit for correct operation.
2016-11-20 22:42:48 +00:00
Florent Rougon
a6f1c93a2b Use semantic versioning for the --json-report format version
The report now looks like:

{
        "meta": {
                "type": "FlightGear JSON report",
                "format major version": 1,
                "format minor version": 0
        },

        ...

}

When making compatible changes to the format (e.g., adding members to
JSON objects), only the minor version number should be increased.
Increase the major version number when a change is backward-incompatible
(such as the removal, renaming or semantic change of a member). Of
course, incompatible changes (like this one) should only be considered
as a last recourse.
2016-11-12 11:11:03 +01:00
Florent Rougon
fb10f76e59 Add command-line option --json-report
- New methods Options::printJSONReport() and utility method
  Options::OptionsPrivate::createJSONArrayFromPathList().

- Small addition to Options::processOptions(), since the --json-report
  option must be processed *after* the TerraSync and download dirs, as
  well as aircraft and scenery paths, have been finally set.
2016-11-09 12:05:03 +01:00
Florent Rougon
fc81258d13 Add FGGlobals::get/set_download_dir(), unify TerraSync and download dirs setup
Similar to the existing FGGlobals::get/set_terrasync_dir(), add
FGGlobals::get_download_dir() and FGGlobals::set_download_dir() methods,
and of course the corresponding FGGlobals::download_dir public member
variable. FGGlobals::set_download_dir() stores the realpath() of the
given directory, including into the /sim/paths/download-dir property,
which is marked as read-only just as /sim/terrasync/scenery-dir already
is.

Handle the setup of the TerraSync and download dirs all in the same
place (Options::processOptions()), since most of the work is already
done there. This allows one to get rid of fgOptTerrasyncDir() and
fgOptDownloadDir(), and to make it easier to see that
globals->set_terrasync_dir() (resp. globals->set_download_dir()) is
called on the correct SGPath, regardless of whether --terrasync-dir
(resp. --download-dir) was passed.

Always create the TerraSync and download dirs when they don't already
exist, regardless of whether --terrasync-dir or --download-dir has been
given on the command line.

Add comments explaining how to avoid security pitfalls with download and
TerraSync dirs (cf. discussion around
<https://sourceforge.net/p/flightgear/mailman/message/35461636/>).

Adjust indentation where it was too broken, hampering readbility.
2016-11-08 22:23:51 +01:00
Florent Rougon
bbf5ac6406 Fix the --version option
1) Paths and the FG_SCENERY paths list are now printed like:

     FG_ROOT=/home/flo/flightgear/src/fgdata

   instead of:

     FG_ROOT=Path "/home/flo/flightgear/src/fgdata"

   Moreover, FG_SCENERY is now correctly printed (without 'Path ""'
   wrapping, without Terrain, Objects and markers instead of the actual
   scenery paths) regardless of the position of --version relatively to
   --fg-scenery, --terrasync-dir, etc. Of course, the values given to
   these options do influence the output of --version.

   Simplify printing of FG_SCENERY via SGPath::join() and use the
   correct, OS-dependent separator between paths, SGPath::pathListSep.

   Write the --version output to stdout, as already done for --help;
   then it can be easily piped to $PAGER and doesn't get mixed with the
   output of SG_LOG (which is on stderr). This is of course backward
   incompatible for programs reading the stderr output of
   'fgfs --version', but has been agreed upon on FlightGear-devel (cf.
   <https://sourceforge.net/p/flightgear/mailman/message/35461619/>).

2) Don't write explicit values in the OptionResult enum: they don't
   matter, but giving them is error-prone in case one does a copy-paste
   to add a new member to the enum and forgets to change the value.
2016-11-08 22:23:51 +01:00