1
0
Fork 0
Commit graph

10046 commits

Author SHA1 Message Date
Henning Stahlke
35f6811ce3 YASim: trivial code clarification in Wing.cpp 2017-05-04 15:33:13 +02:00
Henning Stahlke
caf2100b5e YASim: code dedup in class Wing. 2017-05-04 15:18:48 +02:00
Henning Stahlke
6817292e73 YASim: changed constructor for Wing. Creating a Wing object without basic geometry data is pointless and this data cannot change during runtime. 2017-05-04 14:31:43 +02:00
Henning Stahlke
614f05bb39 YASim: split Wing::compile into smaller functions (2). 2017-05-04 14:12:30 +02:00
Henning Stahlke
4584c83d8b YASim: split Wing::compile into smaller functions (1). 2017-05-04 14:02:11 +02:00
Henning Stahlke
eb6bb087f6 YASim: include yasim-common.hpp in Wing.cpp and remove constant.
Trivial cleanup and variable name clarification.
2017-05-04 13:52:21 +02:00
Florent Rougon
2ad164e80f Improve handling of the pushBackRoute attribute in groundnet's Parking nodes
- Don't ignore pushbackRoute="0".

- Stricter parsing with precise log messages when the input is
  incorrect.

- Add missing includes in src/Airports/dynamicloader.cxx.

See <https://sourceforge.net/p/flightgear/mailman/message/35788373/> for
the discussion about this change.
2017-05-04 10:30:51 +02:00
Florent Rougon
df2a98d245 Fix warnings about unreferenced local variables
Warnings seen on Jenkins with Visual Studio.
2017-05-04 09:41:29 +02:00
Henning Stahlke
b0a831e667 YASim: initialize floats with 'f' suffix to avoid problems with windows build 2017-05-03 22:17:08 +02:00
James Turner
2747a33e6b Merge /u/jsb1685/flightgear/ branch yasim into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/89/
2017-05-02 15:09:13 +00:00
James Turner
9e7924a4b1 Silence a warning. 2017-05-02 12:45:32 +01:00
James Turner
2dbe88936e Don't warn about missing CrashRpt when developing 2017-04-29 20:58:05 +01:00
Henning Stahlke
37c43ab6dc YASim: add initalizer to Wing.hpp, cleanup constructor. 2017-04-29 12:54:56 +02:00
Henning Stahlke
b4743b3830 YASim: add initalizer to Model.hpp, cleanup constructor. 2017-04-29 12:54:56 +02:00
Henning Stahlke
f9334d8c39 YASim Surface move initialization 2017-04-29 12:54:56 +02:00
Henning Stahlke
efde524685 YASIM move constants to a common header file. 2017-04-29 12:54:55 +02:00
Erik Hofman
072bad4f50 sync. with JSBSim and expose Oil_Press_Relief_Valve, Oil_Press_RPM_Max, Design_Oil_Temp, Oil_Viscosity_Index 2017-04-27 15:41:23 +02:00
Henning Stahlke
0a0402f667 YASim Airplane refactoring (code dedup). 2017-04-25 09:19:25 +02:00
Henning Stahlke
e604f2f662 YASim BodyEnvironment rename methods and split setupState into two methods. 2017-04-25 09:19:25 +02:00
Henning Stahlke
add6c6b8a8 YASim: Airplane solver uses standard atmosphere so we can replaced atmosphere members with floats for altitude and pass those to setup atmo where needed directly from altitude. 2017-04-25 09:19:25 +02:00
Henning Stahlke
8064135665 YASim: Moved Airplane::setupState to BodyEnvironment 2017-04-25 09:18:26 +02:00
Henning Stahlke
ed6dee3f55 YASim Airplane: add initalizers. 2017-04-24 18:31:03 +02:00
Henning Stahlke
8bd8d5f163 YASim Model move one-liner to header. 2017-04-24 00:08:36 +02:00
Henning Stahlke
3457c3c61f YASim: convert Atmosphere to a non-static class so we can pass around air parameters in one object instead of several variables. 2017-04-22 16:14:52 +02:00
Henning Stahlke
5e99f92a0f YASim: conver Airplane::setupState from static to const 2017-04-22 15:06:02 +02:00
Henning Stahlke
2229b0a494 YASim: mark methods of Version 'const' 2017-04-22 14:59:03 +02:00
Henning Stahlke
fcfc82b471 YASim: move one-liners and add 'const' 2017-04-21 22:17:27 +02:00
James Turner
cbdbe2882b Fix disabled appearance of toolbox buttons.
Ensures ‘fly’ button appears disabled as appropriate in the 
launcher.
2017-04-19 13:31:45 +01:00
James Turner
a05860608b Fix erroneous button highlighting. 2017-04-19 13:12:48 +01:00
Henning Stahlke
ef9fa25b94 YASim: update default for desired cg range. 2017-04-18 22:27:35 +02:00
Henning Stahlke
1302c167dd YASim: rename some exported props. 2017-04-18 22:11:34 +02:00
Henning Stahlke
73de375249 YASim declared get methods as const. (correction to previous commit) 2017-04-18 19:12:23 +02:00
James Turner
503907be34 Merge /u/jsb1685/flightgear/ branch yasim into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/87/
2017-04-18 09:05:57 +00:00
Henning Stahlke
3f0ef99c71 YASim: add MAC (mean aerodynamic chord) and c.g. calculations. 2017-04-17 22:52:26 +02:00
Henning Stahlke
574f2f907f YASim: add setAirFromStandardAtmosphere() to Class Model. 2017-04-17 20:10:46 +02:00
Henning Stahlke
7f5a91ea47 YASim: refactoring loadControls() 2017-04-17 20:09:44 +02:00
Henning Stahlke
dbfe9a7b41 YASim: clean up export of aero force and ground effect force to prop tree. 2017-04-17 19:54:26 +02:00
James Turner
b006ef5c78 Launcher: fix navaid map default scaling. 2017-04-15 14:18:02 +01:00
James Turner
f2d5f18da6 Title label for location airport/nav pages. 2017-04-15 14:18:02 +01: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
5fa9242d7a Launcher: fix handling of prop custom args.
The parser wasn’t special case these, and they have to be handled
differently to work now.
2017-04-15 08:39:18 +01:00
James Turner
ec9989c244 FIx build issue with previous commit. 2017-04-14 22:16:22 +01:00
Richard Harrison
feca0a73ba Multiplay: Fix transponder property definitions 2017-04-14 19:46:12 +02:00
James Turner
95a6d31e18 Launcher: update all aircraft UI.
Replaces more complex previous attempt, which was also not hooked
up properly, ooops.
2017-04-14 18:31:23 +01:00
James Turner
c19fc6bc06 Launcher: add ‘show console’ setting on Windows
This entailed fixing the handling of the visibility property with an
override from the QWidget basic version.
2017-04-14 17:36:28 +01:00
Florent Rougon
eefa9a75f9 Fix crash in AI code when buggy groundnet declares pushback hold point on runway
Some buggy *.groundnet.xml files (as KSEA currently on TS) define the
pushback hold point for some parking positions as a node on a runway.
In this case, this the pushback hold point for parking
'North_Cargo_Ramp', defined as node 5344 in
Airports/K/S/E/KSEA.groundnet.xml, which is defined twice (second error),
first as:

<node index="5344" lat="N47 27.774559" lon="W122 18.465257" isOnRunway="1" holdPointType="PushBack"  />

and then as:

<node index="5344" lat="N47 27.725747" lon="W122 18.159649" isOnRunway="1" holdPointType="PushBack"  />

(due to code in flightgear/src/Airports/dynamicloader.cxx, it should be
the second one that wins, which is not on a runway but on apron in the
north cargo area)

As a consequence, when this gate is selected for an AI aircraft, the
pushback route has only one node (since the pushback hold point is then
the closest point to itself supposedly on runway!), and the
corresponding FGTaxiRoute instance has an empty 'routes' member
variable, which FGTaxiRoute::next() doesn't handle gracefully
(segfault).

It may be that an additional check/change could be desirable in
FGTaxiRoute::next() in such a case (one node and obviously no route in
the FGTaxiRoute instance), however I'm not sure how Durk wants this case
to be handled, since FGTaxiRoute::next() seems to iterate on nodes.

This fixes the bug reported at:

  https://forum.flightgear.org/viewtopic.php?p=308397#p308397 and
  https://sourceforge.net/p/flightgear/mailman/message/35776552/

Thanks to yanfiz and wkitty42 for the report, and to gooneybird for
inspecting the groundnet file.
2017-04-14 12:25:00 +02:00
Florent Rougon
caf3a4253d Use FGTaxiNode::getIndex() instead of FGTaxiNode::ident() in a dev warning
This is because FGTaxiNode::ident() is generally (always?) an empty
string for FGTaxiNode instances. This concerns the:

  unreferenced groundnet node: ...

warning. Also remove one tiny use of boost.
2017-04-14 12:21:54 +02:00
Florent Rougon
2373ee4f05 Fix build error due to sgstream.hxx now being in simgear/io/iostreams/ 2017-04-14 00:19:59 +02:00
James Turner
cf56ef1913 Migration test runs successfully now. 2017-04-13 13:14:53 +01:00
James Turner
ac38f29ae3 Launcher: exit/quit item on non-Mac
(Mac gets one automatically)
2017-04-13 13:01:29 +01:00
James Turner
5f8f2886dc Launcher: fix bugs around paths setting.
We now show paths in ‘view command line’ and set them through the
standard mechanism. Re-ordering the paths also notifies the rest of
the system correctly.
2017-04-13 12:55:51 +01:00
James Turner
dd0b9adbfc Comsetic launcher tweaks. 2017-04-13 09:19:19 +01:00
James Turner
3e1a701712 Migrate old autosave XML files. (Disabled for now)
Code and tests to demonstrate migrating of older auto-save files, with
blacklisting support to exclude properties. Disabled pending agreement
on the required blacklisting values.
2017-04-13 08:01:45 +01:00
Richard Harrison
a9a85a618e Remove duplicated properties from multiplayer defintions.
This may have impacted the ability of the binary search to function correct.
2017-04-13 06:08:36 +02:00
James Turner
9f47607c95 Revert "Remove the Ati viewport hack."
This reverts commit 5bf9b3cd02.
2017-04-12 11:13:14 +01:00
James Turner
8dbd3f8bd5 Fix QRC URL creation for older Qt versions 2017-04-11 08:06:45 +01:00
James Turner
fac0341e04 Kill use of private header. 2017-04-10 22:18:19 +01:00
James Turner
68ef30d3af Linux / Qt 5.2 fixes 2017-04-10 14:39:27 +01:00
James Turner
d1e9d357b9 Trying to reduce int types warnings. 2017-04-10 14:38:57 +01:00
James Turner
427f662dca Settings searching support.
Also tightened up the layouts.
2017-04-10 14:38:57 +01:00
James Turner
3732930269 QML-driven settings UI. 2017-04-10 14:38:57 +01:00
James Turner
5c713a6b55 Split the launcher main window into its own file.
Reduces QtLauncher.cxx down to the public API and the static helper
methods; the main window lives in its own file.
2017-04-10 14:38:57 +01:00
James Turner
4234876789 Move some Launcher helpers into their own files.
Suggested be Sebastian, and it’s a good idea indeed, the main
launcher file has grown slightly.
2017-04-10 14:38:57 +01:00
James Turner
bf1ffb8875 Proof-of-concept for new settings UI. 2017-04-10 14:38:57 +01:00
Florent Rougon
cf318f1cc5 Better setting of the process exit status for fgfs and fgviewer
Some pieces of code such as fgMainInit() and, by cascading effect,
fgInitHome(), were careful to return a meaningful value indicating
success or error, however the main() function in src/Main/bootstrap.cxx
ignored it royally so far.

main() now returns:
  - EXIT_FAILURE if fgMainInit() or fgviewerMain() throws an exception;
  - whatever said function returns otherwise.
2017-04-10 02:29:48 +02: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
Florent Rougon
680f940378 Revert commit "Make fatalMessageBox() end with std::abort() [...]"
This reverts commit 9e6a3ebc6b ("Make
fatalMessageBox() end with std::abort() and declare it [[noreturn]]").

After reflexion, it seems better to let fatalMessageBox() return,
because there is existing code that appears to be relying on this aspect
to do some work after having called fatalMessageBox() (cf. main() in
bootstrap.cxx). Also, the way of exiting from fatalMessageBox() after
commit 9e6a3ebc6b (std::abort()) was probably too brutal for a
controlled exit---as opposed to a terminate handler.
2017-04-10 02:29:48 +02:00
James Turner
09dd24c139 Fix build with Qt 5.2 2017-04-09 23:55:47 +01:00
Florent Rougon
9e6a3ebc6b Make fatalMessageBox() end with std::abort() and declare it [[noreturn]]
Many places calling fatalMessageBox() assume it doesn't return, so make
it behave this way. See discussion around:

  https://sourceforge.net/p/flightgear/mailman/message/35766691/

for some context.
2017-04-08 14:34:26 +02:00
Florent Rougon
5040e6c7f0 Don't call fatalMessageBox() from fg_terminate(), make it end with std::abort()
Basically, this is because fatalMessageBox() is only safe to call from
the GUI thread, however it seems fg_terminate() can be called from any
thread (according to C++11 semantics). Additionally, fatalMessageBox()
typically requires some work to happen in the GUI thread (event loop) in
order to display something, but we can't realistically expect this while
running a terminate handler just before the program dies.

See messages around
<https://sourceforge.net/p/flightgear/mailman/message/35775803/> for a
discussion of this subject.

+ Minor header cleanup (<locale.h> replaced with <clocale>, etc.)
2017-04-08 14:03: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
Gary Preston
d2ca422c8b Adjust if/else indentation to fix -Wmisleading-indentation 2017-04-06 18:26:01 +09:00
James Turner
dd0d03ea1d Fix build on Windows. 2017-04-05 21:34:48 +09:00
Richard Harrison
9ba1fbdb35 MP2017.2 V2 protocol enhancements
/sim/multiplay/protocol-version is either 1 or 2 and controls how packets are sent. V2 packets will only have the (motioninfo) basic properties visible to older clients.

New string encoding that is efficient.
Support short int encoding (pack a property and value into 4 bytes).
Allow properties to be transmitted using a different encoding to the property type in the tree.
Support scaled floats; most of the floats we transmit are small and thus can fit into a scaled short.
V2 protocol uses transmit so most properties are either scaled floats or short ints.

Allow the client to request a larger visibility range by setting /sim/multiplay/visibility-range-nm. This will transmit in the repurposed header field ReplyAddress - which has been renamed to RequestedRangeNm. This will require support from fgms to actually do anything.

Extra debugging options. The most useful (for aircraft developers) is the loopback bit, as this allows model multiplay testing without running two instances.
Update property /sim/multiplay/last-xmit-packet-len with the size of the packet transmitted

Debug level bits in property /sim/multiplay/debug-level
  bit 1 - loopback (show your own model as an MP model)
  bit 2 - dump outgoing packets
  bit 3 - dump incoming packets
  bit 4 - hexdump outgoing packets
2017-04-02 15:30:49 +02:00
Richard Harrison
fc78ef2e4e Fix null reference - happened to me once. 2017-04-02 13:54:40 +02:00
Richard Harrison
b020db5ce7 Multiplayer: ensure that avionics sounds are null for MP models. 2017-04-02 13:54:03 +02:00
Richard Harrison
5d2e596043 Multiplayer protocol enhancements (MP2017.2 V2)
/sim/multiplay/protocol-version is either 1 or 2 and controls how packets are sent. V2 packets will only have the (motioninfo) basic properties visible to older clients.

New string encoding that is efficient.
Support short int encoding (pack a property and value into 4 bytes).
Allow properties to be transmitted using a different encoding to the property type in the tree.
Support scaled floats; most of the floats we transmit are small and thus can fit into a scaled short.
V2 protocol uses transmit so most properties are either scaled floats or short ints.

Allow the client to request a larger visibility range by setting /sim/multiplay/visibility-range-nm. This will transmit in the repurposed header field ReplyAddress - which has been renamed to RequestedRangeNm. This will require support from fgms to actually do anything.

Extra debugging options. The most useful (for aircraft developers) is the loopback bit, as this allows model multiplay testing without running two instances.
Update property /sim/multiplay/last-xmit-packet-len with the size of the packet transmitted

Debug level bits in property /sim/multiplay/debug-level
  bit 1 - loopback (show your own model as an MP model)
  bit 2 - dump outgoing packets
  bit 3 - dump incoming packets
  bit 4 - hexdump outgoing packets
2017-04-02 13:52:43 +02:00
Richard Harrison
8494462a96 Fixed another crash in MP interpolation when data isn't available. 2017-04-02 02:22:52 +02:00
Richard Harrison
48b93ff982 Fix comments in message header to identify the reuse of an obsolete field 2017-04-02 02:22:51 +02:00
Richard Harrison
239334f4d1 The conditions were swapped for the total output and the hexdump 2017-04-02 02:22:50 +02:00
Richard Harrison
c5cc666288 Merge branch 'next-2' into multiplayer-dev 2017-04-02 02:22:48 +02: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
f6f2c3b89a Merge /u/jsb1685/flightgear/ branch yasim into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/84/
2017-03-29 15:49:16 +00:00
James Turner
6cd39818c6 Whoops, missed a file. 2017-03-27 16:05:45 +01:00
James Turner
58a7f2c5c2 Unit-test for initPosition.
Only basic, but can be expanded incrementally now
2017-03-27 15:38:05 +01:00
Stuart Buchanan
feb5d599d0 Replace "tile-manager" with "scenery" 2017-03-26 21:49:26 +01:00
James Turner
31e933d836 Kill the Aircraft/foo path warning.
We probably need a warning for cross-aircraft paths, but leaving that
for a separate change since I’m worried it will warn on MP aircraft.

Maybe better checked in the Python scripts than in the app?
2017-03-25 15:40:11 +00: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
7adb2fa851 RoutePath fixes.
Should fix:

https://sourceforge.net/p/flightgear/codetickets/1703/
https://sourceforge.net/p/flightgear/codetickets/1939/

Although both of these I had trouble reproducing directly.
2017-03-25 15:34:10 +00:00
James Turner
c2da881010 Fix a crash in NavList
(Tests are good)
2017-03-25 15:34:10 +00:00
James Turner
4f020602e6 Missing config.h includes
This is about to become much more important.
2017-03-25 15:34:10 +00:00
Stuart Buchanan
43a2b6fdac Rotate through tips based on execution count. 2017-03-23 21:11:46 +00:00
James Turner
74e2849293 Move some commands to a separate file.
This simplifies building a subset of the code for testing.
2017-03-22 21:13:40 +01:00
Henning Stahlke
50110b0cd6 YASIM: minor change to allow RigidBody addMass and setMass to trigger aggregation correctly. (not a problem up to now, just to be safe in future) 2017-03-21 22:47:07 +01:00
Henning Stahlke
f7359d9699 YASim: add bug warning messages. 2017-03-21 22:46:33 +01:00
Henning Stahlke
53103ac15e YASim: update CLI usage message. 2017-03-21 22:43:01 +01:00
Stuart Buchanan
3135d87218 Stop TTS from playing over itself.
Simple blocking of the SGSubsystem until the current
TTS sample has finished playing, allowing a 0.5s
gap between transmissions.  Good radio comms!
2017-03-20 22:27:10 +00:00
James Turner
63d8c2fd83 Enable —-metar runway selection.
Thanks to Florent for the catch.
2017-03-19 22:41:07 +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
James Turner
962ede1c43 Fix how launcher resets heading-deg.
This ensures finalisePosition logic runs as expected, ensuring
real-world METAR usage kicks in.
2017-03-19 11:55:10 +00:00
Erik Hofman
2393fd647d Merge /u/jsb1685/flightgear/ branch yasim into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/78/
2017-03-19 07:49:26 +00:00
Henning Stahlke
dc63307965 YASim: fix segmentation fault in yasim CLI tool 2017-03-18 23:17:19 +01:00
Henning Stahlke
0f472efe9b YASim parser: add support for metric and imperial attibutes, e.g. mass-lbs, mass-kg 2017-03-18 21:28:26 +01:00
Henning Stahlke
cecdfd0832 YASim FGFDM.hpp correction of pointer declarations. 2017-03-18 21:19:24 +01:00
James Turner
6880761f7b Launcher diagram: faster boundary computation.
No need to completely rebuild in these cases.
2017-03-16 22:42:58 +00:00
James Turner
a1bc99ec84 Fix slow launcher diagram with bad airport data. 2017-03-16 22:41:59 +00:00
James Turner
b13dd05aca Fix bug on Windows, time() is UTC there also.
This renders sgGMTime obsolete, it will go away shortly. Thanks to 
Ron H for help tracking this down and Richard Harrison for his
knowledge of Windows APIs in confirming the issue.
2017-03-16 21:26:43 +00:00
James Turner
29fe9316af Generic protocol fix for integer-factors.
Read all values as floating point before applying a factor, then
convert to the target type (int, byte or short). Suggested and
implemented by Oliver Kroth.
2017-03-16 15:54:38 +00:00
Henning Stahlke
c61730db92 YASim Wing method name clarification (SMC is not MAC). 2017-03-16 09:43:41 +01:00
Henning Stahlke
bb9a8a1850 YASim backward compatibility fix for ground effect calculation (added if isVersionOrNewer). 2017-03-16 09:39:58 +01:00
Henning Stahlke
1c932b3d79 YASim Model.cpp to avoid performance problems with getNode() add variables for properties that are written at FDM rate.
getNode() is slow, setValue() is ok
2017-03-16 09:36:15 +01:00
James Turner
06c6e994a5 Merge /u/accek/flightgear/ branch build-with-gdal into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/83/
2017-03-15 18:57:11 +00:00
James Turner
c7f29699d3 Allow XML control over splash logo position.
As suggested by Chris, these are normalised and account for the logo
size after scaling, so 0.5 will centre, 1.0 is the right/bottom edge.

E.g. (in /sim/startup)
 <splash-logo-x-norm>0.5</splash-logo-x-norm>
 <splash-logo-y-norm>0.9</splash-logo-y-norm> 

Many values will overlap with other text, so use with care!
2017-03-15 12:01:29 +00:00
Florent Rougon
f4788cddb4 Qt launcher: accept scenery paths containing either of: Buildings, Roads, Pylons
When adding a scenery path in the built-in launcher, accept folders
containing any of the new directories populated by osm2city. Also try to
improve the message that is displayed when the sanity check conditions
for the added scenery path aren't met (cf. discussion around
<https://sourceforge.net/p/flightgear/mailman/message/35716946/>).
2017-03-15 00:42:36 +01:00
Bertrand Coconnier
40be2687f7 Restored the legacy behavior: the XML extension is mandatory and when it is not explicitely specified it is automatically added. 2017-03-14 21:59:14 +01:00
Henning Stahlke
dbf21b1ca8 YASim calculate max CG range (on x-axis) from gear positions, to implement checks later (a better guesstimate will follow). 2017-03-11 22:44:45 +01:00
Florent Rougon
6e44fb1015 Fix unsigned int vs. int problem in SplashScreen::manuallyResizeFBO()
Justified because:

  osg::Camera::getNumChildren() returns an unsigned int, and
  osg::Camera::getChild() takes an unsigned int
2017-03-11 21:53:24 +01:00
Henning Stahlke
e78a763eef YASim Airplane: move one-liners to header and remove unused code. 2017-03-11 21:29:05 +01:00
Henning Stahlke
60f5c97272 YASim Gear: move one-liners to header 2017-03-11 21:06:16 +01:00
Bertrand Coconnier
0d342f526e Exports the parameters of JSBSim ground reactions friction resolver to the property tree for debugging. 2017-03-11 14:00:20 +01:00
Szymon Acedański
93e68c001a Fixed building FG with GDAL 2017-03-11 13:34:19 +01:00
Bertrand Coconnier
579f215005 Sync w/ JSBSim:
* Propeller required power now accounts for the engine tilt
* Fixed a division by zero in FGLGear::GetSteerNorm for non steerable gears
* Fixed a bug reported by Ron H. and Rebecca N. Palmer on the FG mailing list: the 'length' parameter passed to gethostbyaddr in FGFdmSocket was erroneous.
2017-03-11 13:24:51 +01: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
Florent Rougon
99ebfcd368 Simplify reading of the frequency field from nav.dat files
The frequency field is always an integer, so reading it as a float to
convert it to int doesn't make sense. I've probably been confused by
field indices when I introduced this in commit a2bf424118.

This clarifies things, but shouldn't change the code behavior in any
way (unless with bogus nav.dat files, of course).
2017-03-10 16:53:39 +01:00
Szymon Acedański
14611e905e GUI: do not complain if only NavData is present in scenery folder 2017-03-09 00:10:26 +01:00
Szymon Acedański
bd0fa1fa5a Do not apply .ils.xml adjustments while building the cache 2017-03-09 00:10:26 +01:00
Szymon Acedański
e37fd6ea1f Minor comment fixes 2017-03-09 00:10:26 +01:00
Szymon Acedański
4403f22a8b Support multiple nav.dat and fix.dat files 2017-03-09 00:10:26 +01:00
Szymon Acedański
b9dbe9c9e7 nav.dat: support XP NAV1100 format
This allows using NavXP1100-formatted nav.dat from gateway.x-plane.com.

The skipped field types are:

14 Final approach path alignment point of an SBAS or GBAS approach path
15 GBAS differential ground station of a GLS
16 Landing threshold point or fictitious threshold point of an SBAS/GBAS
   approach

We don't have SBAS/GBAS in Flightgear.

This change also includes duplicate detection for multiple nav.dat files
support.
2017-03-09 00:10:26 +01:00
Szymon Acedański
2b2780bfca fix.dat: support XP FIX1101 format
Also: duplicates detection, in preparation for multiple fix.dat files
support.
2017-03-09 00:10:26 +01:00
Henning Stahlke
06ba4fe351 YASim wrap bugfix with version check to maintain compatibility with old aircraft config. 2017-03-07 20:47:43 +01:00
Henning Stahlke
1e92c33a9e YASim export config version used by aircraft to property tree.
Gives /fdm/yasim/config-version as integer (see enum in Version.hpp to decode).
2017-03-07 20:45:46 +01:00
Henning Stahlke
80462d23c5 YASim Wing: remove unnecessary local variable "root" (use _base);
calculate _tip in directly in one command
  clarify signature of Wing::interp()
2017-03-07 18:03:25 +01:00
Henning Stahlke
583ea27dd6 YASim Version: add tag for version 2017.2 2017-03-07 17:50:05 +01:00
Henning Stahlke
a56f85ac95 YASim removed unused include from Rotor.cpp 2017-03-07 17:50:05 +01:00
Henning Stahlke
6efa1ab821 YASim moved one liners 2017-03-07 17:50:05 +01:00
Henning Stahlke
ce4df326d7 YASim Airplane.cpp additional comments 2017-03-07 17:50:05 +01:00
Henning Stahlke
05f9fcfd10 comments 2017-03-07 17:50:04 +01:00
Henning Stahlke
dc66959b83 YASim comments 2017-03-07 17:50:04 +01:00
Henning Stahlke
1198f5a3ec YASim CLI tool: add print out of max lift and min drag
add drag(speed) print function
2017-03-07 17:50:04 +01:00
Henning Stahlke
cb7d2a1bc5 YASim Wing: add _aspectRatio and _meanChord.
(an some indent)
2017-03-07 17:50:04 +01:00
Henning Stahlke
a87442c6f3 YASim fix performance problem due to export to prop.tree. 2017-03-07 17:50:04 +01:00
Henning Stahlke
76a0ea96cc YASim clarification. Add const to method parameters in Math.hpp 2017-03-07 17:50:04 +01:00
Henning Stahlke
4cbe540bec YASim: convert local variables alpha and stallAlpha to members of Surface. 2017-03-07 17:50:03 +01:00
Henning Stahlke
5f78545961 only white spaces 2017-03-07 17:50:03 +01:00
Henning Stahlke
d4688d206a YASim: export surface data to property tree. 2017-03-07 17:50:03 +01:00
Henning Stahlke
d322ded552 YASim bugfix: ground effect did not calculate wingspan correctly;
Variable name clarification;
Add Wing::getWingArea, separate Wing::getWingSpan and Wing::getBase.
2017-03-07 17:50:03 +01:00
Henning Stahlke
559dcf4e32 YASim optimization: pre-calculate data for masses that do not change in flight to save CPU (RigidBody::recalc() runs at FDM rate).
export mass data to property tree.
2017-03-07 17:50:03 +01:00
Henning Stahlke
4e1be43f15 YASim: export wing data to property tree. 2017-03-07 17:50:03 +01:00
Henning Stahlke
021a9db9be YASim add surface id and export surface positions to prop tree after model compile. 2017-03-07 17:50:02 +01:00
Henning Stahlke
dd420c6ff4 YASim bugfix, correct an obvious copy-and-paste error 2017-03-07 17:50:02 +01:00
Henning Stahlke
41b18155a8 YASim: export FDM state (v, a, rot) to property tree. 2017-03-07 17:50:02 +01:00
Henning Stahlke
70dd3de3bb YASim: FGFDM convert local variable _yasimN into a class member 2017-03-07 17:50:02 +01:00
Henning Stahlke
2cac4e4671 YASim: Move variables and methods for input properties from FGFDM to ControlMap. 2017-03-07 17:50:01 +01:00
Henning Stahlke
f14cc3be33 Extend yasim-test.cpp; add print mass distribution, add plot with different configs 2017-03-07 17:47:51 +01:00
Henning Stahlke
6f1f850c11 YASim method name clarification Airplane::setWeight 2017-03-07 17:47:50 +01:00
Henning Stahlke
97a0511ce0 YASim method name clarification in class Surface 2017-03-07 17:47:50 +01:00
Henning Stahlke
91fd075796 YASim method name clarification Wind::setSlat 2017-03-07 17:47:50 +01:00
Henning Stahlke
91806861c6 YASim method name clarification Wind::setFlap1 2017-03-07 17:47:50 +01:00
Henning Stahlke
e69f6ba9ab YASim method name clarification Wind::setFlap0 2017-03-07 17:47:50 +01:00
Henning Stahlke
ce753c0382 YASim method name clarification Wing::setSpoiler 2017-03-07 17:47:50 +01:00
Henning Stahlke
b447bbdc5e Optimize YASim/RigidBody.cpp utilizing symmetry of tensor. 2017-03-07 17:47:49 +01:00
Torsten Dreyer
6257c29fd8 Merge /u/martymac/flightgear/ branch freebsd-fix into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/79/
2017-03-07 07:51:59 +00:00
James Turner
8d68741ee9 On-disk support for multiple primary aircraft.
Also add support for customised / per-variant thumbnails in on-disk
aircraft; equivalent support for catalog aircraft still to be done.
2017-03-05 22:02:25 +02:00
James Turner
41f875a729 Silence a warning about log levels.
These levels will never be set on the output side, so handle them
as default here.
2017-03-05 21:41:52 +02: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
Ganael Laplanche
c91284b3e1 Link to execinfo to fix build on FreeBSD 2017-03-01 20:53:56 +00:00
James Turner
868ec1f500 Log a message when launcher is requested without Qt. 2017-03-01 15:27:33 +00: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
James Turner
be0ede64be Make some warnings be developer-only. 2017-02-27 23:37:59 +00:00
James Turner
bd17a64487 Fix a typo in launcher console handling. 2017-02-27 23:31:08 +00:00
James Turner
ec8b55d3c5 Explicitly log nav-cache read-only flag. 2017-02-27 15:50:19 +00:00
James Turner
cad283b2ce Change Windows multi-app launch detection.
Instead of using a .pid file, use a named mutex. This avoids any chance of stale datacausing mis-detection.
2017-02-27 15:45:28 +00:00
Erik Hofman
706ce325d3 Do not forget to signal the proper signal number first 2017-02-27 11:50:51 +01:00
Erik Hofman
6179a8d8d7 Still generate a core file 2017-02-27 11:46:25 +01:00
James Turner
314844e3c8 Make —console work in the launcher.
As discussed on the ML, due to how this options is processed, the
launcher setting it doesn’t make it take effect, so deal with it
manually.
2017-02-27 00:06:41 +00:00
James Turner
e74ebabc36 Fix compilation with OSG 3.2 2017-02-26 23:58:41 +00:00
James Turner
c316bd4af8 Mark nightly builds visually on the splash.
Ensure testers are in no doubt what they’re getting from a nightly
build.
2017-02-26 23:58:36 +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
Bertrand Coconnier
6e9d4e8ae4 Linux/Unix are case sensitive. 2017-02-26 01:39:33 +01:00
James Turner
918db84ac4 New splash screen system.
Uses TTF fonts, and displays more information textually including
the application version and current aircraft.

Also rename FGRenderer::splashinit to preinit, as was suggested
a long time ago.
2017-02-25 21:47:58 +00:00
James Turner
17fe0460a9 Previews displayed in the launcher. 2017-02-25 21:47:58 +00:00
James Turner
38554f629f Merge /u/accek/flightgear/ branch ap-freed-pointers into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/75/
2017-02-25 16:41:02 +00:00
James Turner
5c0550b495 Merge /u/accek/flightgear/ branch fixlets-1 into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/74/
2017-02-25 16:40:01 +00:00
Bertrand Coconnier
7cbdc8b923 Sync w/ JSBSim (use SGPath to manage file names) 2017-02-25 16:22:23 +01:00
Szymon Acedański
28e9ba21f6 Fixed route manager returning freed char* pointers via tied properties
On Mac it was visible as random strings displayed in the route manager
dialog for selected SIDs and STARs.

Depends on a SimGear change which introduces SGStringValueMethods.
2017-02-25 15:17:03 +01:00
Szymon Acedański
e1668a2919 Fixed a number of use-after-free bugs with FGPositioneds
These were due to converting FGPositionedRef to FGPositioned*
and then again packing the pointer into another ref-counted
FGPositionedRef.
2017-02-25 15:10:17 +01:00
Szymon Acedański
d401a50e0a Fix crash on Mac OS X when FG does not finish input init 2017-02-25 15:05:09 +01:00
Szymon Acedański
f71c20600a Fixed erroreous reference to array instead of its element
net->master_{bat,alt} are arrays, but were mistakenly used as
values.

This correctly generated a compilation warning.
2017-02-25 15:05:09 +01:00
Szymon Acedański
4fd89b0b8f Fixed compilation warning on Mac
IOHIDManagerRegisterDeviceMatchingCallback must not be called with
nullptr as the second argument.
2017-02-25 15:05:09 +01:00
Richard Harrison
80dc810d15 MP2017.2 V2 protocol enhancements
1. Add support for scaled floats; most of the floats we transmit are small and thus can fit into a scaled short.
2. Change most properties to use scaled floats.
2017-02-23 22:33:33 +01:00
Richard Harrison
3fceba7a24 MP2017.2 changes
Support for short int encoded values (32 bits with 16 bit for ID and 16 bits for value)

Added extra debugging options
1. Debug level
  bit 1 - loopback (show your own model as an MP model)
  bit 2 - dump outgoing packets
  bit 3 - dump incoming packets
  bit 4 - hexdump outgoing packets

2. Update property (/simwith packet
- configurable debug (loopback, packet trace (in,out), packet dump)
- prevent properties from being visible to V1 clients - to ensure reliable compatibility, with just the basic position message being processed. This allows more changes to the V2 protocol whilst giving basic V1 support
- add debug
2017-02-23 00:46:01 +01:00
James Turner
006ca7186b Fix updating of add-on aircraft in the launcher.
Kick off a re-scan when adding or removing paths.
2017-02-22 17:09:24 +00:00
James Turner
72988a6bb7 Add the default hangar automatically on first-run.
Slightly ungainly but ensures we start with the default hangar
available. It can still be removed and re-added as normal.
2017-02-22 17:09:23 +00:00
Bertrand Coconnier
86d46ce79c Sync w/ JSBSim 2017-02-21 22:35:09 +01:00
James Turner
c04406d75a Clean shutdown+join of FLITE synthesis threads.
use a marker value to wake the blocking queue, and allow the thread
loop to terminate cleanly, before calling join() from the parent
thread.
2017-02-21 11:01:16 +00:00
Richard Harrison
4f04975508 Merge branch 'next-2' into multiplayer-dev
# Conflicts:
#	src/AIModel/AIMultiplayer.cxx
#	src/MultiPlayer/multiplaymgr.cxx
2017-02-20 03:38:51 +01:00
Richard Harrison
60eee7722d Another different fix for the pointer conversion issue.
Based on the comments in the list I think it is better to keep the type that was originally provided as a reference, take the address of it, and store that in a ref_ptr.

Possibly the problem was never compiler related rather OSG related; I'm using 3.5.x and it appears that there are better built in type conversions compared to the target version of 3.2 that we are currently using.
2017-02-17 17:56:32 +01:00
James Turner
478171b8db Testing a different fix for ref-ptr conversion.
This ‘should’ work, but might fail the same as Richard’s
original patch. Let’s find out.
2017-02-16 18:43:58 -08:00
Richard Harrison
2226428b85 AI Multiplayer interpolation.
Whilst debugging I had a cannot increment nextIt - because it was at end(). No idea if this could ever happen in flight but it still seems sensible to protect against it.
2017-02-16 20:53:44 +01:00
Richard Harrison
36fd6466b7 Multiplayer packet handling bugfix;
Unknown property ID causes break out of the loop to ensure that no further properties are processed from the incoming packet
2017-02-16 18:39:38 +01:00
Richard Harrison
4a156fe0b0 Temporary fix to the canvas replacement visitor
Use pointers to allow compilation on Linux/Mac until this is fixed properly as OSG elements should always be accessed via the reference counting mechanism.
2017-02-16 18:38:48 +01:00
Richard Harrison
cbb7915e49 Ensure to break out of the loop when an unrecognised incoming MP property id is encountered in a packet. 2017-02-16 18:30:17 +01:00
Richard Harrison
11778f595f Fixed exception caused when next is equal to end()
This happened whilst running under debug whilst spawning at a new location so it may be an edge case, but still worth checking for
2017-02-16 18:29:44 +01:00
Richard Harrison
bde3dd0644 Canvas texture replacement visitor compiler fix.
Change to use pointers rather than osg::ref_ptr<osg::Group> - based on http://andesengineering.com/OSG_ProducerArticles/RefPointers/RefPointers I think that it is not possible that the scenegraph can be modified between the visitor and the modify, provided that the methods are called after each other like this:

  ReplaceStaticTextureVisitor visitor(name, new_texture);
  branch->accept(visitor);
  visitor.modify_groups();
  return visitor.getPlacements();
2017-02-16 09:16:27 +01:00
Richard Harrison
41ecfd1972 Merge branch 'next-2' into multiplayer-dev
# Conflicts:
#	utils/fgqcanvas/CMakeLists.txt
2017-02-15 05:19:12 +01:00
Richard Harrison
e48a3d8b32 Replacement Texture visitor modified iterator whilst iterating
The visitor would modify the scenegraph during the traversal by inserting groups; this is not valid when using vectors, and MSVC2015 debug RTL throws an exception when this happens.

The fix is to simply make a list of the textures that need to be modified and modify once the scenegraph traversal has finished.
2017-02-14 18:56:38 +01:00
Richard Harrison
fa142c9464 Change log level for "prepare_ground_cache(): scenery_available returns false" message as the message occurs at a high rate and seems to be more suited at bulk rather than warn level 2017-02-14 16:08:05 +01:00
Richard Harrison
275d73d01f Multiplay: Improve log message handling for win32. 2017-02-14 16:08:04 +01:00
Richard Harrison
ecc38e76c2 ShortInts now transmit properly over MP.
I get a "unknown property ID" as we appear to transmit an extra 0 at the end; will investigate this next
2017-02-13 02:06:39 +01: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
Richard Harrison
31e684b7e0 added support for short int encoding.
This is where the ID and the 16 bit value are transitted in the ID field; with no data field. The ID is in the highword - and this is detected by the client and processed as |ID  |VALU|
2017-02-12 20:14:02 +01:00
Richard Harrison
561087a30a Support for configurable MP Protocol Version 1.1.2
/sim/multiplay/protocol-version is either 1 or 2

The properties defined in multiplaymgr define which version they are related to; however if these are in a more recent protocol than selected they will be transmitted in the selected protocol version.

The id property list now defines a "transmit as" - however this is not yet implemented.

This commit is intended to be a WIP towards changes for 2017.1 that will ensure any future protocol changes are compatible with this version (so this 2017.1 would be able to see a protocl V3 FG if one ever existed), key to this is to stop processing the property list as soon as an unknown ID is encountered.
2017-02-12 16:57:24 +01:00
James Turner
a83947edbf Basic validation of added scenery paths.
Try to catch uses adding parent directories and hence missing
scenery.
2017-02-10 23:04:00 +00:00
Richard Harrison
ded4ec5ae3 merged 2017-02-07 00:37:14 +01:00
Richard Harrison
5b4e55a9a9 Should never happen; but I had a crash here. 2017-02-07 00:36:24 +01:00
Richard Harrison
efcb969c7f Merge remote-tracking branch 'main-source/topics/nasal-aircraft-offset' into multiplayer-dev 2017-02-05 12:44:10 +01:00
Richard Harrison
abd3e02d4d partitioned MP messages.
This moves certain properties into a second part of the buffer that isn't visible to the first with the intention of making a backwards compatible MP protocol that can have more efficient encoding in a second part that is after MsgLen.

Unfortunately this doesn't work because the code ensures that MsgLen in the header matches the received byte count.
2017-02-04 23:59:14 +01:00
Richard Harrison
78cfcbe466 Ensure avoinics sound totally disabled for AI craft 2017-02-04 23:57:26 +01:00
Richard Harrison
a896f4d20c Added new generic properties.
New string encoding that is efficient.
2017-02-04 06:11:12 +01:00
James Turner
d13a672698 Expose aircraft-relative offset to Nasal.
This allows easily computing offsets in aircraft-relative coordinates,
and converting to global cartesian (ECEF) reference frame.
2017-02-02 17:54:18 +01:00
Richard Harrison
9c3697e16d Revised f_get_cart_ground_intersection to take 2 parameters, start:vec3d(x,y,z) , direction:vec3d(x,y,z) and returns geod hash.
Revised logic of f_get_cart_ground_intersection to make it more readable by checking the parameter validity at the beginning of the function
2017-02-02 17:25:40 +01:00
James Turner
d05b934702 Revert "Fixes for HUD, model-manager listeners."
This reverts commit 831053bd04.

See if this fixes the problem deleting models which Denk reported.
2017-02-02 17:02:39 +01:00
Erik Hofman
05b2b6536b Make use of the Vector new interpolation function 2017-02-02 11:35:55 +01:00
Richard Harrison
a9c55b1760 Change log level for "prepare_ground_cache(): scenery_available returns false" message as the message occurs at a high rate and seems to be more suited at bulk rather than warn level 2017-02-02 06:25:48 +01:00
Richard Harrison
4e87b8ea9a Multiplay: Improve log message handling for win32. 2017-02-02 06:25:35 +01:00
James Turner
0f3659818b QtInfoMsg requires Qt 5.5 2017-02-01 17:36:48 +01:00
James Turner
8f7c0d6801 Scenery extraction: set progress text
Fixes bug:https://sourceforge.net/p/flightgear/codetickets/1938/
2017-01-31 17:11:44 +01:00
Richard Harrison
0bf80f9b2a Add protection to the multiplayer (AI) interpolation to protect against segfaults when the previous and next packets contain different properties. 2017-01-30 23:25:00 +01:00
Erik Hofman
e39eac8a6d Nicer, human readanle, stack trace output 2017-01-30 15:58:09 +01:00
Erik Hofman
57dc778565 Fix a last minute typo 2017-01-30 12:31:05 +01:00
Erik Hofman
182f758eb7 Add a segmentation-fault report for Linux and Apple 2017-01-30 12:29: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
658074f78e Map Qt log to the Simgear log. 2017-01-30 08:01:20 +01:00
Erik Hofman
7133bc5c0f Make MSVC happy 2017-01-30 00:41:27 +01:00
Erik Hofman
ebfadb908c Make sure the AISim code compiles with the latest SIMD code changes in simgear 2017-01-29 15:27:41 +01:00
Rebecca N. Palmer
2b1336cd39 clear GroundLightManager also on non-standard exits to avoid crash
(e.g. --show-aircraft,
https://sourceforge.net/p/flightgear/codetickets/1935/ )
2017-01-28 23:07:23 +00:00
James Turner
d343496084 Check nav-cache write-ability explicitly.
Check the file permissions before opening using the new SGPath APIs,
and validate the result using Sqlite APIs after opening.
2017-01-28 16:05:18 +00:00
James Turner
8472f8c6d0 Fix positional ordering of remote-canvas elements.
The mirror protocol now sends the position for internal as well as
leaf nodes, and the group uses this data to sort when no explicit
Z-indices exist. This gets the extra-500 much closer to working!
2017-01-26 23:14:48 +00:00
James Turner
c9f922ce1b Expose node position over property-mirror protocol. 2017-01-26 20:36:07 +00:00
Viktor Radnai
a26a5d741b Make wheels spin down slowly once off the ground 2017-01-26 20:36:07 +00:00
Erik Hofman
1a0537e493 Silence a few compiler warnings 2017-01-26 15:37:43 +01:00
James Turner
70e79a849e Tweak launcher to be a MainWindow
For unknown reasons this seems to alleviate the word-wrap / min-height
bug on Windows. Committing so we can test and verify this is really
the case before the next release.
2017-01-26 00:38:19 +00:00
James Turner
fb1a29200a Merge /u/setvisible/flightgear/ branch next into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/72/
2017-01-25 23:36:52 +00:00
James Turner
0fe14f7c36 Use enable-hot flag in model manager.
Allow control of the terrain flag on models added via the model
manager at runtime.

Designed and requested by Henning Stahlke
2017-01-25 22:19:15 +00:00
James Turner
a0f2726a39 Set default airport/aircraft in the launcher.
Parse the defaults file to set the desired default aircraft and
airport when no previous state exists.

Fixes:
https://sourceforge.net/p/flightgear/codetickets/1936/
2017-01-25 20:41:40 +00:00
setvisible
7d02ffecab Changed aircraft list's scrolling policy to *ScroolPerPixels*, because items have non-regular height. 2017-01-25 18:40:40 +01:00
setvisible
928567650f Added the missing FG icons to the Qt dialogs 2017-01-25 18:18:11 +01:00
Torsten Dreyer
1f9ece8303 Location preset for ENBR (2017.1) 2017-01-25 14:00:06 +01:00
James Turner
6311e1ad24 Merge /u/setvisible/flightgear/ branch next into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/70/
2017-01-23 09:16:21 +00:00
Stuart Buchanan
dab9a9fc73 Remove /sim/rendering/building-mesh.
Made redundant by /sim/rendering/scenery-path-suffix
2017-01-21 22:22:43 +00:00
martymac
ffc7ad6cdf Fix build with Clang 4.0.0.
Those patches fix errors related to ordered comparisons between pointers and
integers, such as the ones related here on FreeBSD :

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216203
2017-01-21 21:32:50 +00:00
setvisible
5ce85c2248 fixed the missing FG icon (QtLauncher's mainwindow) 2017-01-21 19:23:21 +01:00
James Turner
8472a8c38a Launcher smoothly scales thumbnails.
Was accidentally using nearest, not linear, interpolation when
resizing thumbnails. Very pixels. Much ugly.
2017-01-17 22:18:35 +00:00
Erik Hofman
404fad4254 MSVC fix 2017-01-15 09:26:34 +01:00
Erik Hofman
9f9f1c631f Add the latest code for reference in the JSBSim mailing list while bug hunting 2017-01-14 14:33:28 +01:00
Erik Hofman
1ef1d5ad43 Fix a potential segmentation fault and turn it into a harmless message. 2017-01-14 10:37:42 +01:00
Erik Hofman
ed4a9337d9 Fade in the sound exponentially at startup 2017-01-12 15:06:04 +01:00
James Turner
88fc98f57b Mcc build fix for JSBsim executable. 2017-01-12 12:30:43 +00:00
Geoff McLane
52572ef1f3 Add back a JSBSim.exe build, install 2017-01-12 12:30:42 +00:00
Geoff McLane
c7391668e6 To build JSBSim, add copy from jsbsim-code repo 2017-01-12 12:30:42 +00:00
Erik Hofman
f54e03d7c6 Merge branch 'next' of ssh://git.code.sf.net/p/flightgear/flightgear into next 2017-01-12 11:45:08 +01:00
Erik Hofman
9f6422b5e2 only start the sounds when the soundmanager becomes active 2017-01-12 11:44:53 +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
Erik Hofman
2098593531 Do not proceed in update() until is_active() returns true 2017-01-11 15:14:08 +01:00
James Turner
ac8fb6fd24 Add some additional check to NavCache opening.
Hoping to capture why opening the DB read-write fails in some cases
on Windows.
2017-01-10 10:44:18 +00:00
James Turner
9441f0d656 Work-around OS-X event-input shutdown crashes. 2017-01-09 16:54:15 +00:00
Erik Hofman
596ba557f1 Detect the absence of SSE2 hardware as soon as possible and bail out if it is not found but FligthGear is compiled with SSE2 support 2017-01-06 16:30:51 +01:00
Erik Hofman
9a71f6348f A new batch of updates, slowly moving forward 2017-01-06 15:02:35 +01:00
Florent Rougon
d762db2db8 Fix null pointer dereference introduced by 8aec4a0cef 2017-01-06 13:07:00 +01:00
Erik Hofman
cf935b5882 Try to prevent a possible device-by-zero 2017-01-05 14:35:50 +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
206b272210 Add additional nameForType aliases 2017-01-03 15:16:23 +00:00
James Turner
f062fd0f60 Fix missing FGPositioned nameForType data. 2017-01-03 15:14:26 +00:00
James Turner
8aec4a0cef Silence a clang warning. 2017-01-03 15:11:12 +00:00
Florent Rougon
16fdfac7ae QtFileDialog: allow showing hidden files 2016-12-30 02:12:59 +01: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
Florent Rougon
a6afda53bb Split flightgear::initApp() to make it usable even without FGGlobals initialized
- Add an optional argument to flightgear::initApp(): doInitQSettings.
  This argument defaults to true, preserving initApp()'s behavior in
  this respect. If this argument is set to false, FGGlobals doesn't have
  to be initialized.

- New function flightgear::initQSettings(), called by
  flightgear::initApp() when its 'doInitQSettings' argument is true.
  This allows initializing the QSettings exactly when it is needed.

- New function flightgear::checkKeyboardModifiersForSettingFGRoot().
  The code it contains used to be run from initApp(), which is
  undesirable because:

    1) initApp() is not only called at FG initialization (fgMainInit()),
       but also from QtMessageBox(), from QtFileDialog::exec() and twice
       from Options::setupRoot(). However, checking the Alt and Shift
       modifiers to set 'fg-root' in QSettings to the special value
       "!ask" only makes sense in fgMainInit(), not in these other
       places.

    2) This code relies on the QSettings to be set up, and therefore on
       FGGlobals. Thus, freeing initApp() of its dependency on FGGlobals
       requires splitting this keyboard modifiers checking code out of
       initApp().
2016-12-29 11:33:19 +01:00
Florent Rougon
0b1c356837 Make the FG installation prefix available to C++ code via config.h
CMAKE_INSTALL_PREFIX is now available as FG_INSTALL_PREFIX from
config.h.
2016-12-29 11:33:19 +01:00
Erik Hofman
2b9de5ceaa Make it possible to choose a different electrical circuit instead of the defaukt systems/electrical/outputs/turn-indicator by specifying the xml tag <electrical/> 2016-12-29 09:55:54 +01:00
James Turner
95e09de1ff Remove a log message. 2016-12-28 22:01:29 +01:00
Florent Rougon
d6313e52b5 Correctly initialize an SGPath from the APPDATA environment variable on Windows
This is likely to fix the problem preventing startup on Windows when the
username contains non-ASCII characters (cf.
<https://forum.flightgear.org/viewtopic.php?f=22&t=31320>). Thanks to
Headhunter76 for the useful report and to wkitty42 for doing the liaison
officer. ;-)

I can't actually test this, because I don't have Windows. Windows users
should report whether this works for them.
2016-12-28 16:57:26 +01:00
Erik Hofman
ffdfdcb6d7 Alter the sequence to allow type conversion 2016-12-23 16:01:49 +01:00
Erik Hofman
31ed6184a9 NExt batch of updates: more use of SIMD instructions. Still work in progress. 2016-12-22 15:14:52 +01:00
Erik Hofman
33f0b83b69 Viktor Radnai:
There is a Flightgear property called /sim/hitches/winch/automatic-release-angle-deg that can be used to simulate a safety feature built into modern gliders. If the cable angle gets too great during a winch launch, the hook will automatically release the cable. This usually happens when the glider gets almost on top of the winch at the top of the launch without releasing the cable.

Unfortunately winch launching has two separate implementations, one in Nasal for JSBSim, and another one in C++ for YASIM. The YASIM one does not implement this property so I wrote a patch to add this.
2016-12-22 11:49:15 +01:00
James Turner
eba1f3221f Fix a bug starting the property-tree mirror. 2016-12-21 10:26:31 +00:00
James Turner
57432c20ad Remove some stale code. 2016-12-21 10:26:31 +00:00
Erik Hofman
342f75d48c Add a missing break statement 2016-12-21 09:50:53 +01:00
Torsten Dreyer
c472788ad8 Httpd: fix slow websocket init 2016-12-20 11:46:02 +01:00
James Turner
d831751b11 Fix aircraft-history naming of variants. 2016-12-18 21:25:05 +00:00
Erik Hofman
8b466cb207 One last(?) MSVC fix 2016-12-15 20:08:25 +01:00
Erik Hofman
e845dab6e0 Fix an MSVC error 2016-12-15 10:49:09 +01:00
James Turner
0af316d7fc Nasal Time objects can use simulated time.
Previously timer objects defaulted to using wall-clock (real) dt which
does not reflect pause/speed-up. Keep this as the default for
compatibility but make it possible to request simulated time.
2016-12-11 16:10:57 +00:00
Florent Rougon
3dea0f73aa Use SGPath::fromUtf8() to construct an SGPath from a property node string value
This was missing in a few places of src/Autopilot/route_mgr.cxx.
2016-12-11 12:40:09 +01:00
James Turner
85f75dee4f Fix a couple of potential crashes on exit.
- Font cache shutdown explicitly
- Pending GUI snapshot cleared explicitly

Both of these are dependencies on the osgViewer / GLContext.
2016-12-10 23:24:09 +00:00
James Turner
4fb5bc8512 Property-Mirror websocket: fix removing props.
Special case handling when recently removed properties are re-added;
when this happens simply send a value change since it's much cheaper
over the wire and for the receiver. Poorly designed Canvas code does
this frequently (eg, every update)
2016-12-10 22:01:25 +00:00
Florent Rougon
a3560adc03 nav.dat parser: small changes
- Try to make log messages less cryptic.
- Lower the level of two of them to SG_INFO, as discussed on the mailing
  list (<https://sourceforge.net/p/flightgear/mailman/message/35537475/>).
- Add a const qualifier.
2016-12-10 09:45:51 +01:00
Florent Rougon
a2bf424118 Improve parsing of nav.dat and carrier_nav.dat
- Handle file I/O and parsing errors. This allows current
  <http://gateway.x-plane.com/navaids/LatestNavFix.zip> to be loaded
  instead of failing in an endless loop.

  Read the fields of a record with std::getline() followed by
  simgear::strutils::split(), itself followed by calls to std::stoi(),
  std::stof() and std::stod(). Stream extraction (>>) isn't very good
  here, because it can read for instance an int *and* a float from the
  string "3.14", i.e. extract 3 followed by 0.14 (thus falsifying the
  number of fields found...).

  Check the number of fields (not 100 % reliable since the last field,
  the navaid name, typically contains spaces---but we can detect
  some situations where the number of fields is definitely too low).

- Fix line numbering (sgstream.cxx's skipcomment() isn't fit for this
  purpose, because it can gobble any number of lines without the line
  number being increased).

- Don't use a hardcoded number of lines for the nav.dat loading
  percentage indicator; rely on sg_gzifstream::approxOffset() instead.

- Make navDBInit() and loadCarrierNav() throw an sg_io_exception upon
  I/O errors (not for parsing errors that only affect a record). They
  don't return a bool anymore (which wasn't checked by their only
  caller, anyway).

- Use the 'rowCode' variable name instead of 'rawType' for consistency
  with the *.dat specs.

- Small change in tests: (elev_ft < 0.01) replaced with (elev_ft <= 0).
  Doesn't change the behavior, since 'elev_ft' is an int. Can be
  reverted if someone really prefers the float comparison, I don't mind
  that much about it.

- Add missing headers and a few comments.

This commit does not change the contents added to the NavCache with
FlightGear's current $FG_ROOT/Navaids/nav.dat.gz, except for 4 bogus
navaids which are not added anymore (at LIBV, OPJA, RCFN and RCYU): see
<https://sourceforge.net/p/flightgear/mailman/message/35526617/>. They
are instead properly reported as coming from invalid nav.dat lines.
2016-12-10 01:02:30 +01:00
Florent Rougon
280cd52368 Security fix: don't allow the route manager to overwrite any file
Since the Save function can be triggered from Nasal with an arbitrary
path, we must check this path before overwriting the file.

(also add a missing include that is directly needed for this commit)
2016-12-09 17:15:06 +01:00
Erik Hofman
709936a265 MSVC fixes 2016-12-08 01:03:26 +01:00
Erik Hofman
7ec7a8b60c Add the first version of AISim but 2016-12-07 11:05:07 +01:00
Erik Hofman
7ed4a5162e Replace auto_ptr with unique_ptr 2016-12-07 11:03:54 +01:00
James Turner
b767a33f84 MirrorPropertyTree websocket fixes
- deal with ‘NONE’ properties correctly
- use a better method to send the initial tree on connection.
2016-12-05 21:27:38 +00:00
Torsten Dreyer
c3c0d25fe7 Fix Linux build 2016-12-03 22:46:31 +01:00
James Turner
47042b03f4 Expose an entire property tree via WebSockets.
Use a recursive listener to expose a property tree via a WebSocket.
Currently using a JSON-based encoding, will likely change to binary so
please don’t write code using this interface until the encoding
is stable and documented!
2016-12-03 14:23:48 +00:00
James Turner
54aec82c38 Search packages using the matches API 2016-11-30 21:33:16 +00:00
James Turner
1c4e3263f8 Multiple Flight-Plan clears are a no-op 2016-11-30 12:16:23 +00:00
James Turner
df2ab15e6c Quiet Canvas font-loading. 2016-11-30 12:15:54 +00:00
James Turner
825c8c2006 Nicer rendering of aircraft ratings. 2016-11-29 15:45:17 +00:00
Florent Rougon
80bf762556 Replace C++-version-dependent conditional code with the C++11 variant only 2016-11-29 16:35:31 +01:00
James Turner
53d50d9ba0 Tweak painting of aircraft ratings in launcher.
Should ensure the full text is visible with a wider range of font sizes.
2016-11-28 18:17:25 +00:00
James Turner
831053bd04 Fixes for HUD, model-manager listeners.
Make the HUD listener recursive (its tree is quite shallow) and 
manually watch the children of /models/model[n] nodes when they
are added.
2016-11-27 14:49:28 +00:00
James Turner
b0fcd78e9f Fix lazy-loaded thumbnail size for aircraft dirs. 2016-11-25 22:53:06 +00:00
James Turner
5db1f5cad6 Per variant authors/description data.
Will only work once the catalogs(s) are updated, and needs a
corresponding SimGear update.
2016-11-25 22:45:48 +00:00
James Turner
14942f4e8b Move Yasim properties to /fdm/yasim
As discussed on the mailing list, make this more consistent with JSBsim.
We could still define common locations for these values as well, but
waiting on positive answer to that discussion on the ML.
2016-11-25 17:41:05 +00:00
Torsten Dreyer
7f3fa4a3b7 Set fallback (hardcoded) startup airport to LSZH 2016-11-22 09:27:30 +01:00
James Turner
ee1a042847 respect servers online flag. 2016-11-21 22:01:06 +00: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
James Turner
780e0f5a02 Restore active aircraft variant also. 2016-11-20 22:42:48 +00:00
James Turner
4db129cb01 Guard against a null result from HID code.
It seems strange that CFGetTypeID on null would crash, but the reports
from users suggest this might be the case.
2016-11-20 22:42:48 +00:00
Torsten Dreyer
c4ea89dc97 Revert "temporarily add some noisy debug messages"
This reverts commit f538a6e1a1.
2016-11-20 11:39:46 +01:00
Torsten Dreyer
f538a6e1a1 temporarily add some noisy debug messages 2016-11-19 18:26:06 +01:00
James Turner
9bf337148d Expose c-of-g to property tree in YASim.
Patch by Henning Stalkhe
2016-11-18 16:40:38 +01:00
James Turner
1a6263f22a Don’t greedy load on-disk aircraft thumbnails.
Should make switching to the aircraft launcher tab more responsive when
using larger aircraft directories, such as a complete FGaddon checkout.
2016-11-18 16:39:00 +01:00
Torsten Dreyer
b652758330 Merge branch 'topics/mpdiscovery-via-dns' into next 2016-11-17 14:45:40 +01:00
James Turner
ad17df3e1b Refactor launcher delegate state tracking.
Instead of the two vectors we manually composed, used a single unified
vector of structs to store delegate information in the model. This
simplifies the logic for tracking the active variant (and in the future,
thumbnail).
2016-11-16 22:37:44 +01:00
Torsten Dreyer
994ea1674b replace many auto_ptr by unique_ptr 2016-11-14 22:20:46 +01:00
Torsten Dreyer
09949ff3e3 Some logging cleanup and ignore SRV records with port #0 2016-11-14 21:57:50 +01:00
James Turner
a3c4b2d953 Better searching for aircraft in the launcher.
Search more fields from the package.
2016-11-13 22:51:35 +01:00
James Turner
eaf779deb2 Use ground-network to improve MP start location.
Search for the closest ground-net node near but /not/ on, the requested
runway. This works fairly well, although for some airports the selected
node is surprisingly far from the runway.
2016-11-13 22:20:40 +01:00
James Turner
1c4656512a Enforce separation of ground-net and dynamics.
This ensures ground-network is retrieved through the airport only, and
hence can be done safely early in init, when ATC/AI/dynamics don’t
exist yet.
2016-11-13 14:05:20 +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
Torsten Dreyer
979010de4d Initial commit of mpserver discovery via DNS 2016-11-10 11:14:49 +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
b1b7f07edb Add FGGlobals::autosaveFilePath(); improve code related to {load,save}UserSettings()
Apart from providing a public method giving a path to the autosave file,
the main idea of this commit is to reduce redundancy where
globals->get_fg_home() was so far used in every place where the autosave
file is needed or saved. Use an optional argument for
FGGlobals::loadUserSettings() and FGGlobals::saveUserSettings()[1],
since it should be exceptional to access an autosave file in another
location than $FG_HOME.

Also add comments explaining how to avoid security pitfalls with
saveUserSettings() (cf. discussion around
<https://sourceforge.net/p/flightgear/mailman/message/35461636/>).

[1] Argument *added* to this method, for consistency with
    FGGlobals::loadUserSettings().
2016-11-09 11:46:39 +01:00
Florent Rougon
1b0a76943f Add public method to get the list of apt.dat files used by the NavCache
- The 'DatFilesGroupInfo' struct and 'DatFileType' enum are now public
  members of 'NavDataCache'.

- New public method NavDataCache::getDatFilesInfo() returning the
  'DatFilesGroupInfo' struct for a given type of dat files. For
  instance, this allows one to retrieve the ordered list of apt.dat
  files the NavCache would use if it were rebuilt at that time, as well
  as their total size.
2016-11-09 11:35:26 +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
Florent Rougon
c7c66d7a3b Fix handling of -- (end-of-options delimiter on the command line) 2016-11-08 22:23:51 +01:00
Florent Rougon
c169ef581f Remove ambiguity due to simgear/misc/sgstream.cxx's skipws I/O manipulator
For some reason, g++ may see a 'skipws' I/O manipulator from the
standard library (depending on the order of includes...) when compiling
src/Navaids/poidb.cxx. This I/O manipulator is then in competition with
one with the same name defined in simgear/misc/sgstream.cxx. Use std::ws
to remove all ambiguity (std:skipws does something quite different!).
2016-11-08 22:23:51 +01:00
Stuart Buchanan
55f64820df Fix display of OBJECT_BUILDING_MESH_DETAILED 2016-11-08 19:43:32 +00:00
Edward d'Auvergne
74622d9a04 Time: Calculation and exposure of the moon vector from the local position.
The new FGLight::updateObjects() function is now being passed into the global
events manager as a task rather than FGLight::updateSunPos().  The
updateSunPos() function has been renamed to updateBodyPos() and generalised for
any solar system body and is called twice by updateObjects(), once for the sun
and once for the moon.  The local position of the moon is then exposed at
"/ephemeris/moon/local/".
2016-11-08 11:16:24 +01:00
Edward d'Auvergne
b574728411 Ephemeris: Exposure of the moon's absolute attributes in the property tree.
This includes the moon's absolute position, age and phase.  For this, the new
simgear MoonPos::get*() functions are tied to the property tree at
"/ephemeris/moon/" using a new tieMoonPos() function.

In addition the moon illumination factor is exposed by tying the simgear
MoonPos::getIlluminanceFactor() function to the /environment/moonlight property.
This is a number ranging between 0 and 1 based on the log of the illuminance of
the moon outside the atmosphere.  It is calculated as

    factor = (log(I) - max_loglux) / (max_loglux - min_loglux) + 1.0,

The illuminance of the moon outside the atmosphere, I, is from equation 20 from:

   Krisciunas K. and Schaefer B.E. (1991). A model of the brightness of
moonlight, Publ. Astron.  Soc. Pacif. 103(667), 1033-1039 (DOI:
http://dx.doi.org/10.1086/132921).

For more background, see
http://forum.flightgear.org/viewtopic.php?f=47&t=28201&start=60#p270516 .
2016-11-08 11:16:24 +01:00
Edward d'Auvergne
6e62228c1d Time: The sun solver has been generalised to to handle any solar system body.
The functions fgSunPositionGST() and fgTimeSecondsUntilSunAngle() have been
renamed to fgBodyPositionGST() and fgBodyPositionGST() respectively, and both
require a new char argument specifying the body of interest.  This allows the
position of all solar system bodies to be calculated from the aircraft frame of
reference.
2016-11-08 11:16:24 +01:00
Edward d'Auvergne
0ba2e8708e Time: Renamed the sunsolver.cxx to bodysolver.cxx.
This is in preparation for generalising the code for handling all solar system bodies.
2016-11-08 11:16:24 +01:00
James Turner
5fe4486df1 Add ‘nearest node not on a runway’ to ground-net
This will be used shortly to find a better (not on the grass, ideally)
start position when using multi-player but requesting a runway start.
2016-11-08 09:27:52 +01:00