Compare commits

...

2776 Commits

Author SHA1 Message Date
James Turner
7fbdd9ad2f MSVC lacks stdint.h / inttypes.h
- we can't use simgear/misc/stdint.hxx here, since it's a C++
header and md5.c is compiled as plain C (no bool type available).
2014-02-10 18:03:38 +00:00
James Turner
24539968fd Replace md5 from RSA with OpenBSD version
- no more BSD-with-advertising-license
- files from http://sources.debian.net/src/dpkg/1.17.6/lib/compat
(with SG_ prefixes to avoid collision issues)
2014-02-10 18:03:13 +00:00
James Turner
f13b356531 Race-condition fix in get_effect.
Adapted from a fix by Jeff Biggs. (Shows up easier when using osgEarth,
and multiple osgDB pager threads)
2014-02-10 18:02:58 +00:00
Thomas Geymayer
477594d7bc Canvas: Fix bounding box calculation for paths with subpaths. 2014-02-08 00:25:03 +01:00
Thomas Geymayer
e955a18126 Canvas::Element: expose combined transformation matrix 2014-02-08 00:24:55 +01:00
James Turner
adec1c4507 Add desktop() accessor to SGPath
(Windows-only for the moment)
2014-02-01 09:23:21 +00:00
James Turner
172b8a032c Crash-fix: make mat-lib reference counted.
Make SGReaderWriterOptions own the material lib it's passing to
loader code, so it cannot be freed unexpectedly.
2014-01-23 09:18:39 +00:00
Torsten Dreyer
d6c8008978 No double-zero for the version number :-/ 2014-01-17 21:49:13 +01:00
James Turner
488ca0fcc5 Remove a noisy log message from the Terrasync code. 2014-01-17 17:46:46 +00:00
James Turner
dfd15cadab Bug-fix - short-circuit path validation.
When an SGPath is empty, don't bother stat()-ing. This avoids
an uninitialized-memory read inside the C-runtime on Windows.
2014-01-17 17:26:29 +00:00
James Turner
1613257bdc Ensure type tag of contextId binding is set.
(Otherwise defaults to DOUBLE).
2014-01-17 16:27:54 +00:00
Torsten Dreyer
1061580118 Version 3.0.0 2014-01-16 21:47:13 +01:00
James Turner
7184828a58 Support a 'clear' operation on SGBinding.
Needed to bug-fix a problem with the menubar on Mac - post-3.0 I will
change the behaviour of SGBinding's destructor to avoid the property
copies in other use-cases.
2014-01-15 21:56:26 +00:00
Thomas Geymayer
0428adff03 CanvasMap: Expose property screen-range.
Only allowing a hardcoded screen range of 200 units
is not very flexible...
2014-01-09 19:36:38 +01:00
James Turner
04246f0a63 HTTP: tweak response parsing.
Signal a parse failure via an exception, instead of via a status
code, since this is hard to disambiguate from a valid server-side
status code.
2014-01-07 16:22:10 +00:00
James Turner
61df58d651 Terrasync: update fixes.
- Fix a nasty issue when updating existing repositories, which could
cause repository corruption and hence repeated re-syncs.
2014-01-07 14:24:01 +00:00
James Turner
1bd9a440e8 HTTP: tweak for malformed header handling. 2014-01-07 14:24:01 +00:00
Thomas Geymayer
d82c8eb945 Socket: do not crash on writing to broken pipe.
Writing to a closed socket on all Unix/Linux systems raises
a SIGPIPE signal which immediately closes the program. Disabling
raising of SIGPIPE allows proper error handling by checking the
return values of send/sendto and getting the EPIPE in errno.
2014-01-06 12:17:59 +01:00
James Turner
becbad7ea4 Crash fix: use cache to find materials.
Add a thread-safe cache of the currently valid materials, to avoid
the osgDB thread making repeated SGCondition evaluations in conflict
with the main thread.

(Requires an accompanying FG change)
2014-01-06 08:26:48 +00:00
Thomas Geymayer
2335796a28 Fix track-to animation basic tracking without slave object 2014-01-05 19:38:03 +01:00
James Turner
c6330b64f6 Bugs 1207, 1301
Only apply the fix for time-zone offsetting on Windows, since Unix
is handling mktime differently. (Arguably we should also apply a
conversion for Unix systems, but the previous logic worked)
2014-01-03 19:51:58 +00:00
James Turner
df57a23512 #1207: Add helper to get Unix time in GMT
On Windows, time() is returning a value which if offset by the
selected time-zone. Provide a variant which is always in GMT.
2014-01-01 21:03:24 +00:00
Thomas Geymayer
aea71cf0af HTTPFileRequest: only save file if status == 200 2013-12-30 01:31:47 +01:00
James Turner
fb54386f8d Bugfix: remove SGSky minimum distance check.
Without this, various sky rendering modes exhibit artefacts in low-
visibility conditions. The cost of always rendering the dome is 
negligible. (And Rembrandt already had to work this way)
2013-12-19 17:20:06 +00:00
Rebecca Palmer
4d931b6109 Fix test failure on char-unsigned-by-default architectures (eg. ARM)
(from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=722115 )
2013-12-19 15:02:07 +00:00
Rebecca Palmer
407c7a10f5 Fix buffer overflow CVE-2012-2091 (thanks to Saikrishna Arcot)
https://bugs.launchpad.net/ubuntu/+source/simgear/+bug/1077624
(discussed in comments 65-78)
(This is already fixed in 2.12 but appears to have been forgotten in 2.99;
the other vulnerabilities described there are already fixed.)
2013-12-19 15:02:07 +00:00
James Turner
16fa4d1d17 Security: fix 0777 directory permissions to 0755. 2013-12-19 14:56:23 +00:00
James Turner
1ecccd43d4 Fix a typo breaking Mac build. 2013-12-15 20:55:02 +00:00
James Turner
2edbb1cf8b Reset: clear some property references. 2013-12-15 20:48:30 +00:00
Thomas Geymayer
8dccbe8029 SGPath: some tweaks/fixes/typo on permission checker. 2013-12-12 21:27:27 +01:00
Thomas Geymayer
031c833e4d SGPath: add support for custom PermissionChecker
Allow to add permission checks (read/write-access) for
eg. limiting access based on IORules.
2013-12-12 21:04:26 +01:00
James Turner
890cc46825 Reset: alternate property copying strategy.
Search the tree for leaves / sub-trees with a particular attribute set.
This permits both sparse selection as well as selection by sub-tree.

(This is needed for PRESERVE attribute, and once new reset is switched
on, will enable 'normal' copyProperties to revert to ignoring
attributes completely)
2013-12-10 17:37:37 +00:00
James Turner
6b0f7e8512 Quiet a message. 2013-12-09 23:28:52 +00:00
Thomas Geymayer
7a220921f0 Canvas: one global SystemAdapter is enough.
This also fixes elements requiring a SystemAdapter without
being assigned to a Canvas (eg. because they are desktop
elements).
2013-12-09 23:07:17 +01:00
Thomas Geymayer
7ef9acda5d Add ListDiff helper (for fast array differences). 2013-12-08 18:48:57 +01:00
Thomas Geymayer
2a6d62e6f7 Fix some unused/uninitialized variables. 2013-12-07 13:43:17 +01:00
Thomas Geymayer
42b50bd7f7 SGPropertyNode: add removeAllChildren() method 2013-12-07 13:42:15 +01:00
Thomas Geymayer
2c3f44ae11 Canvas: ensure all canvasses are destroyed
- For shutdown/reset make sure all properties describing a canvas
   are removed and also not restored after the reset.
2013-12-07 13:40:22 +01:00
Stuart Buchanan
b7662f16e5 Work around apparent OSG 3.2.0 normal binding bug. 2013-12-06 22:12:52 +00:00
Stuart Buchanan
5bc535a8d2 PagedLOD for random trees, buildings and objects. 2013-12-06 20:20:46 +00:00
James Turner
3ec9c7ae6e Canvas: clear elements in shutdown()
- without this change, elements aren't un-ref-ed and hence destroyed
until the actual dtor runs, which is too late (other systems may be
destroyed already)
2013-12-06 18:14:48 +00:00
James Turner
e326d0c756 Work around a clang/libc++ issue. 2013-12-06 18:03:35 +00:00
Thomas Geymayer
7c5434a99f cppbind: don't leak nasal references for Ghost methods. 2013-12-04 11:15:11 +01:00
James Turner
26d9256ee9 Reset: hook to clear the effects cache. 2013-12-04 09:12:51 +00:00
James Turner
053e761d8f Reset: don't leak EffectPropertyListener.
Track and free listeners from effect expressions.
2013-12-03 21:36:18 +00:00
Clément de l'Hamaide
5861b52cff Implement UTF-8 to Latin1 converter 2013-12-01 18:48:05 +01:00
Thomas Geymayer
66193d7283 cppbind: Fix detecting derived Ghosts 2013-12-01 12:35:02 +01:00
Thomas Geymayer
dfb07f359e cppbind: make ghost_type static to keep same pointer on reset.
Using a static naGhostType ensures that always the same
address is used for the same ghost and prevents ghost_types
from getting invalid (eg. on reset).
2013-12-01 01:18:13 +01:00
Thomas Geymayer
6fe1433497 Canvas: allow removing placement factories. 2013-11-24 15:39:03 +01:00
bcoconni
01ace109ba Fixed a crash: the singleton needs to be instantiated the first time SGCommandMgr::instance() is called 2013-11-24 14:50:11 +01:00
bcoconni
8e01acaa12 Added more explicit error messages to the property lists parser.
More specifically, each time an error or a warning is issued the location of the corresponding XML tag (file name an line number) is reported.
2013-11-24 12:20:26 +01:00
James Turner
7bbec8dbcb Reset: allow re-init of Nasal Ghosts.
After discussion with Thomas, reset needs the scenario this assert
was designed to guard against, so removing it for now.
2013-11-23 20:06:47 +00:00
James Turner
10375086ed Allow Command-manager singleton to be deleted.
(Shutdown can delete commands in an orderly way)
2013-11-23 20:00:23 +00:00
James Turner
dd367daac9 Fix another SVN crash on failure. 2013-11-19 21:33:50 +00:00
Martin Spott
27063d0c32 Repository name preferred 2013-11-16 10:44:17 -08:00
James Turner
80ff0282c3 Give terrasync a custom HTTP UA. 2013-11-16 09:45:40 +00:00
James Turner
e973e406a3 Fix some SVN errors/crashes. 2013-11-15 11:47:36 +00:00
bcoconni
c64776029e Removed the 'using::std' instructions from the headers as per James Turner request.
Also took this opportunity to add a check in XMLVisitor::savePosition() against a null pointer.
2013-11-14 22:07:29 +00:00
bcoconni
5d7d0a922d Added the ability to access the file name and position (line, column) from which the XML visitor is getting its data 2013-11-14 22:07:29 +00:00
Christian Schmitt
c2c96c4219 apt_signs: lower the log level for apt.dat syntax errors. Nobody seems to care... 2013-11-14 18:41:20 +01:00
James Turner
3e9ed08c53 Reset: use ref-counting to own subsystems.
Change the subsystem-group and manager code to use shared-ptr references
to subsystems, instead of holding a raw pointer. Hence the manager becomes
the owning ref to most subsystems.
2013-11-12 23:12:45 +00:00
James Turner
b7df9026c0 Reset: Terrasync root can change, can be shutdown. 2013-11-12 23:04:13 +00:00
James Turner
6527c6357b Reset: clean event-manager shutdown 2013-11-12 22:23:19 +00:00
James Turner
fad333256c Reset: DeletionManager can be uninstalled 2013-11-12 22:23:14 +00:00
James Turner
8753811fe1 Remove exceptions on missing texture names 2013-11-12 22:23:09 +00:00
James Turner
237752ff62 String case conversion, UTF-8 conversion. 2013-11-12 22:17:12 +00:00
Thomas Geymayer
743244a69c CanvasElement: ensure parent pointer can not become invalid. 2013-11-10 17:12:50 +01:00
Thomas Geymayer
9f89737986 track-to animation: fix "short" and "long" tracking. 2013-11-10 11:14:50 +01:00
Thomas Geymayer
508a5c5f66 track-to animation: 2dof rotation for slave object.
Slave objects can now rotate around two axis to always track the
target - even when it is outside the plane perpendicular to the
lock-axis of the root object. This allows for example animating
levers with non-parallel axis of rotation connected with a rod.
2013-11-08 00:51:18 +01:00
James Turner
d84394efa0 Tweak HTTP code to always sleep.
Check explicitly for the 'no channels' case and
sleep instead, to avoid busy-waiting. (This is a work-
around, the underlying issue still be be traced)
2013-11-06 15:11:46 -08:00
James Turner
dd613d48bc Reset: pin ctor and dtor of event manager. 2013-11-05 05:21:57 +00:00
James Turner
2e8e500d4f Reset: commands can be removed 2013-11-05 05:21:52 +00:00
James Turner
48f866dcc6 TerraSync: avoid assert on missing file 2013-11-05 05:17:57 +00:00
Thomas Geymayer
ec4d3e4f9b Make new gcc happy (include cmath) 2013-11-04 10:48:26 +01:00
Thomas Geymayer
38ddfab1e0 Canvas: improved clipping and new property clip-frame.
- Update clipping rect if canvas view or texture size
   changes.
 - Add new property "clip-frame" to specify coordinate
   frame for "clip" coordinates. Coordinates can be
   global, relative to the parent or relative to the
   element itself.
2013-11-03 20:12:45 +01:00
Thomas Geymayer
353b7e4438 SGPropertyNode: extract enum value with getValue 2013-11-03 20:11:06 +01:00
Thomas Geymayer
7076c9a0ff HTTP: finish core request before calling any callback. 2013-10-28 20:34:11 +01:00
James Turner
2f42a8714c Terrasync: don't busy wait when no requests are running. 2013-10-28 14:51:52 +00:00
Thomas Geymayer
fdf6fc32ff HTTPFileRequest: create directory if it does not exist 2013-10-28 12:38:39 +01:00
Thomas Geymayer
f2188b33c6 HTTP: Rename urlretrieve/urlload to save/load. 2013-10-27 23:38:46 +01:00
Thomas Geymayer
f93fead8f2 io: refactor and improve HTTP modules.
- refactor code used multiple times spread over sg/fg into
   one single location.
 - allow aborting requests.
 - Provide two common request types:
  * FileRequest: Save response into file
  * MemoryRequest: Keep resonse in memory (std::string)
 - extend HTTP::Client interface:
  * urlretrieve: Save url to file (shortcut for making a
                 FileRequest)
  * urlload: Get respons into memory (shortcut for making
             a MemoryRequest)
2013-10-27 19:05:49 +01:00
Thomas Geymayer
050f3791cc New class simgear::Map extending std::map interface. 2013-10-27 19:05:49 +01:00
James Turner
94326fd964 Windows logging changes
- can log to the debugger (MSVC output window) via OutputDebugStr
- logging to the console is optional, triggered by new
  requestConsole hook()
2013-10-26 21:04:16 +01:00
James Turner
f26f3b606d Fix handling of SGPath::rename
Windows handling of ::rename differs from POSIX when the new name
exists. Check for this case on Windows and remove the file manually.
(This allows a work-around in SVNDirectory to be removed)
2013-10-26 21:03:00 +01:00
Thomas Geymayer
7cbfa76be4 cppbind: automatic conversion of SGReferenced derived pointers. 2013-10-26 01:04:16 +02:00
James Turner
d896e71ae9 Add total bytes downloaded tracking. 2013-10-24 23:35:44 +01:00
Thomas Geymayer
ca79d99ec4 canvas::Element: add getter for parent element. 2013-10-23 17:11:03 +02:00
James Turner
95f77ef81d Ooops, fix INSTALL rule.
We need the rule, just not the export, for now.
2013-10-23 14:18:39 +01:00
James Turner
c4e7d26b70 Comment out Cmake export experiments for now.
This is breaking CMake 2.6, so commenting out for the moment, until
I understand how to support this portably.
2013-10-22 13:42:59 +01:00
James Turner
ea49a1a07b Fix GPS activation on Windows.
Bug 1190, fix route-manager -> GPS activation on Windows
(and probably a couple of unrelated issues).
SGPropertyChangeCallback was missing a suitable copy-constructor,
leading to incorrect behaviour on compilers where the operation
is not elided. Such as MSVC.
2013-10-22 00:42:31 +01:00
James Turner
784223c67f Fix Dir warnings on Windows.
Test result of GetLastError so we don't log a warning in the
'nothing matched' case. Makes early startup logging much
more pleasant, especially when scanning aircraft dirs.
2013-10-21 23:51:19 +01:00
James Turner
77aa2c9a9d Smoother download rate from HTTP
Crude filtering (low pass) of the download rate, over a 400msec
time window.
2013-10-21 23:08:55 +01:00
James Turner
48145fb234 Fail HTTP request with missing/illegal protocols.
Instead of throwing, run the failure handler for requests with
either a missing spec or something other than http:// (eg, https
or ftp)
2013-10-20 23:20:49 +01:00
James Turner
49730cadee Placement can contain multiple nodes.
- Allow placement to have multiple children added.
- Remove legacy position setting APIs, enforce use of SGGeod
2013-10-20 20:44:42 +01:00
Thomas Geymayer
0b197501e1 Add SGPropertyNode::setValueReadOnly.
Helper to set value of relative node and mark
read only. Use eg. for exposing configuration
and build values to the property tree.
2013-10-20 12:03:41 +02:00
James Turner
8b0c246a7b Avoid a divide-by-zero on malformed BTG files.
Encountered while testing v850 airports; some airports
generate materials with no tris, and hence no indices.
This causes a divide-by-zero when computing the index stride.

Detect this, and convert the BTG reader to throw exceptions
in error conditions, and to catch this and report the
appropriate result code.
2013-10-17 20:13:50 +01:00
James Turner
9c4face1ae Fix float-int conversion bug caught by Clang 2013-10-17 20:13:49 +01:00
James Turner
952e2e6631 Fix unused-var warnings from Clang. 2013-10-17 20:13:49 +01:00
James Turner
4766910413 Terraysnc: don't block requests when inactive.
Add the same check for data files so we don't block when terrasync is
disabled.
2013-10-17 17:29:06 +01:00
James Turner
3c2f97a8d2 Re-order install(EXPORT ) lines.
Certain cmake builds/versions complain when a dependent target is
exported but dependencies are not. Export SimGearCore before
SimGearScene.
2013-10-17 17:12:02 +01:00
James Turner
f75730f165 Initial work on syncing non-scenery data.
This is some initial pieces to synchronise other pieces of base
data than scenery via the sync mechanism. An additional sync slot is
added to avoid scenery or other data blocking each other.
2013-10-17 16:39:29 +01:00
James Turner
b596e62a61 Remove some iostream debugging.
Accidentally committed this debug stuff, remove it.
2013-10-17 16:35:36 +01:00
James Turner
1349d48339 Export SimGear config to cmake.
Experimenting with this, should make FindSimGear module unecessary,
and avoid mis-matched SG/FG cmake settings in the future.
2013-10-17 16:10:18 +01:00
James Turner
d69ea5fda6 Kill off EMBEDDED_SIMGEAR 2013-10-17 16:09:39 +01:00
Thomas Geymayer
9b68062ba7 Add helper to get osg::Node path as string. 2013-10-17 13:28:54 +02:00
Thomas Geymayer
b217019723 Nasal: do not print invalid elements for error backtraces. 2013-10-16 23:33:06 +02:00
Thomas Geymayer
a37a254a68 Canvas: simplify code by using new nasal function conversion. 2013-10-15 17:46:42 +02:00
Thomas Geymayer
5258699f20 cppbind: convert Nasal functions to C++ boost::function. 2013-10-15 17:46:31 +02:00
Thomas Geymayer
483bebb003 cppbind: fix bad class hierarchy for bad_nasal_cast. 2013-10-15 16:38:38 +02:00
Thomas Geymayer
8ca8052a8d Nasal: use correct function pointer in naCall (with user data) 2013-10-15 14:21:45 +02:00
Thomas Geymayer
d68b1144b8 Nasal: recursive method calling.
New functions naCallMethodCtx and naCallMethod to replace
NasalSystem::callMethod from FlightGear. This has just added an
unneeded level of indirection and fits better directly into Nasal.
naSetErrorHandler can be used to register an error handler/logging
function.
2013-10-15 12:08:42 +02:00
Thomas Geymayer
42c39b6be3 Canvas: use new naGCSave/naGCRelease functions. 2013-10-15 00:49:13 +02:00
Thomas Geymayer
bb82b9d168 Nasal: add naGCSave/naGCRelease for preventing objects being garbage collected.
These new functions are meant to replace the gcSave/gcRelease
methods of the NasalSystem class in FlightGear, as passing an
adapter to SimGear from FlightGear is quite a lot of useless work
just for being able to save objects.
2013-10-15 00:19:32 +02:00
Thomas Geymayer
b1f865d461 cppbind: add to_nasal_helper for enums. 2013-10-14 23:03:36 +02:00
Thomas Geymayer
8e75c6be50 HTTP: check url for scheme and report instead of failing with assert. 2013-10-13 12:06:17 +02:00
Thomas Geymayer
06a5f9188d Don't let exceptions escape from commands. 2013-10-13 12:00:52 +02:00
Thomas Geymayer
370a991208 cppbind: Catch exceptions before reaching C code. 2013-10-13 11:40:27 +02:00
Thomas Geymayer
6deb77dd4d Canvas: allow also C++ callable entities as event callbacks. 2013-10-12 00:29:37 +02:00
James Turner
9e3172cb04 Another attempt to make MSVC happy!
C89 requires variable declarations upfront.
2013-10-09 12:26:29 +02:00
James Turner
426c6b9a72 Linux needs <cstring> 2013-10-09 11:58:51 +02:00
James Turner
d148bdedcd Fix MSVC build, no C99 so no round().
(Doesn't use SGMisc<T>::round, since Nasal is pure C)
2013-10-09 11:52:54 +02:00
James Turner
23140e3bf7 Avoid a data copy decoding base64 data.
Use an out parameter to avoid a buffer alloc/copy/free cycle
when returning base64-decoded data.
2013-10-09 10:03:30 +02:00
James Turner
2f023803e7 Refactor HTTP content-encoding support.
Move content-encoding handler into its own file, which 
simplifies the main code. As part of this, fix a bug where we
didn't flush the ZLIB buffers on response completion.
2013-10-09 10:03:28 +02:00
James Turner
d658b5fc38 Use std::string.append, avoid string copying.
Removes a hot-spot on the SVN update path.
2013-10-09 10:03:27 +02:00
James Turner
68cd84c330 Make base64 decode significantly faster.
Use a reverse lookup table instead of a call to string.find for
each input byte, much speedier.
2013-10-09 10:03:27 +02:00
James Turner
0bd82a43d3 Check for DAV status parse failures. 2013-10-09 10:03:26 +02:00
James Turner
7fdf42b699 Reset: Nasal additions to force GC, clear saved refs. 2013-10-09 09:59:50 +02:00
James Turner
aeb0e9aac3 Reset: event manager can be unbound. 2013-10-09 09:59:40 +02:00
James Turner
1099a3bdf0 Reset: model placement can drop OSG nodes. 2013-10-09 09:59:33 +02:00
James Turner
aa3458f69c Reset: model lib can drop static root. 2013-10-09 09:59:21 +02:00
Stanislaw Halik
0186cbb7b7 cmake: prevent Boost barfing out too many warns 2013-10-03 21:49:38 +01:00
Stanislaw Halik
fa36e94c4b fix static build with recent GNU binutils
Signed-off-by: Stanislaw Halik <sthalik@misaki.pl>
2013-10-03 21:49:38 +01:00
James Turner
ad83e70cf5 Extend built-in Nasal math.
- rename mod() to fmod() to prevent collisions with the
version in math.nas (which has different handling of negatives)
- implement pow, tan, acos and asin natively
- add round(x, [p]), which rounds away from 0.0, and takes an
option precision. I.e you can round(479, 50) and get '500'; useful
in many digital cockpit displays.
2013-10-03 17:40:17 +01:00
James Turner
4a0377c0a1 Rename WaitingSyncItem -> SyncItem.
More accurate name (we have these for items which are not waiting),
and also shorter.
2013-09-30 21:59:18 +01:00
James Turner
83a3241830 Fix a signed/unsigned compare warning 2013-09-30 16:44:04 +01:00
James Turner
f299b351e3 Expose active tiles via API, sync by SGBucket.
Provide an API to query which tiles are currently being synced. This
allows the higher levels (TileManager in FlightGear) to safely wait on
TerraSync before loading tiles.

Doing this exposed some bugs in scheduling tiles to sync by integer
lat/lon, related to round-towards-zero with -ve values (western /
souther hemispheres). To resolve these, and also reduce spurious
syncs, switch to an explicit API for requesting tiles by SGBucket.
This keeps TerraSync fully aligned with the TileManager queue, which
has many benefits for both high and low visibility situations.
2013-09-30 16:35:45 +01:00
James Turner
3880e4ef47 Say which ocean tile we generated. 2013-09-30 12:08:10 +01:00
James Turner
f205e918d9 sprintf -> snprintf in bucket code. 2013-09-30 12:07:57 +01:00
James Turner
42b0b9306b Make code quieter at log-level=DEBUG. 2013-09-28 14:45:30 +01:00
James Turner
483659c319 HTTP: adjust request-connection assignment.
Prefer existing, idle connections to creating new connections,
even when below the max-connection limit. Gives much better re-use
and pipeline-ing, and hence reduced setup time/trips.
2013-09-28 14:03:39 +01:00
James Turner
add14dd27c Reposition hook for terrasync.
When re-init-ing the sim, tell TerraSync what's going on (we don't want
to actually reset it, since that would disturb in-flight downloads).
Add an explicit method so it can reset its last lon/lat, and hence do
the initial sync at the new location correctly.
2013-09-27 20:28:43 +01:00
James Turner
61516a5e97 Terrasync: Expose transfer rate as a property. 2013-09-27 18:23:51 +01:00
James Turner
17418039e1 HTTP bugfix + enhancement.
Track 'waiting for response' state explicitly, so we don't
falsely report IDLE when waiting for a response.

Expose bytes-per-second download rate as metric.
2013-09-27 18:20:03 +01:00
James Turner
25cae61211 Allow TerraSync to be inited early.
Add explicit subsystem state tracking so we can safely init()
terrasync very early during startup, and hence overlap lengthy operations
(Shared Models sync and initial NavCache build)
2013-09-26 12:11:48 +01:00
James Turner
db98c7440e Parallel sync of items.
When using built-in sync code, separate items into distinct slots.
Slots process items sequentially, but each slot works in parallel (using 
a single shared HTTP engine). This allows tiles to be synced in parallel
with airports/shared models data, greatly increasing responsiveness
to get tiles synced on initial launch.
2013-09-25 16:31:10 +01:00
James Turner
3783ae2234 Rename WaitingTile to WaitingSyncItem.
We already synchronise other things besides tiles, and will soon want different
behaviour based on the type of item we're syncing (so we can synchronize some items in parallel). Rename the struct to be clearer, and add an enum encoding the type of item for future use.
2013-09-23 18:20:16 +01:00
James Turner
3e8732b230 Libsvn / APR dependency is removed.
Remove any use of libsubversion / API in Simgear, and always
compile the built-in SVN client code.
2013-09-23 18:05:37 +01:00
James Turner
b39bca9458 Fix no-svn build (Win64 only at present) 2013-09-20 09:18:43 +01:00
James Turner
d263334030 Attempting to fix import/export linkage on Windows.
Hopefully this tells the Expat headers not to do any clever
declspec(import) or export stuff, which we don't want since we only
use the symbols within SimGearCore, and don't export them.
2013-09-19 22:07:41 +01:00
James Turner
b2cea62189 Even more forcing of include file names.
(It's a good thing Windows doesn't ship Expat, since apparently
every other platform does)
2013-09-19 21:58:23 +01:00
James Turner
d6b886c69b Change got lost in the move/rename, not good. 2013-09-19 21:47:40 +01:00
James Turner
38fb9ea41e Intermediate static libs have issues.
Switch back to including the bundled expat sources directly in the
targets, since transitive linking of static libs is very awkward.
Makes static build happy again (let's see what else breaks)
2013-09-19 21:42:28 +01:00
James Turner
a922aaa68e Move bundled Expat to new home.
Renamed bundled Expat headers to avoid any
possibility of accidental including system headers when
using bundled Expat, or vice-versa. Should help with SVN
crashes reported by Thomas.
2013-09-19 20:12:32 +01:00
James Turner
4f2e36ca46 rand(), not random(), for Windows. 2013-09-19 08:57:34 +01:00
James Turner
f367627cac Fix HTTP unit test.
Also fix a signed/unsigned warning I caused.
2013-09-18 22:55:11 +01:00
James Turner
7a7fcf10ad Fix missing include for non-Mac 2013-09-18 22:13:04 +01:00
James Turner
b9bd2734eb Persistent SVN update cache.
Make the already present cache of updated URLs persistent, with a
definable lifetime, currently 24 hours. This ensures terrasync-ed
resources are checked less often (max once per day) instead of each
FGFS launch, which should greatly cut down requests to the backend.
2013-09-18 21:40:35 +01:00
James Turner
9c7bd4f5d5 HTTP Client improvements
- max connections limit, and parallel connections to a single host where possible.
  (Will permit updating terrain and Models / Airports / data in parallel)
- add LGPL headers
- give HTTP::Client a private impl class, to keep header simple.
2013-09-18 12:17:38 +01:00
James Turner
362d47f91f Kill legacy PPM support in screen-dump 2013-09-18 12:17:29 +01:00
James Turner
a18792c397 Printf format sanitising.
Refactored version for next, use a new helper in
simgear::strutils.
2013-09-15 13:30:12 +01:00
James Turner
0e2ddb2f16 Bah, tested on the wrong compiler, so missed a file. 2013-09-14 18:05:53 +01:00
James Turner
bcfadd6657 Prefix GCC version constant.
From: Markus Wanner <markus@bluegap.ch>
2013-09-14 17:29:59 +01:00
Thomas Geymayer
021cf1a2b4 Remove temporary file and add to .gitignore 2013-09-07 14:28:46 +02:00
James Turner
acf86be516 Rename MD5 code.
Linux crashes with this code seem to relate
to multiple instances of these symbols. Prefix
the SimGear versions to prove/disprove this.
2013-09-04 08:45:06 +01:00
James Turner
dd93eb88f2 Ensure sglog() singleton is threadsafe.
Slightly simplistic, but definitiely correct, method
for ensuring singleton creation is threadsafe. Can
be optimised if lock contention is ever an issue.
2013-09-04 08:45:06 +01:00
James Turner
e06f9e35b3 Tweak for 64-bit Linux linkage. 2013-09-04 08:45:06 +01:00
James Turner
c0424aba7e SG part of fix for TerraSync models.
Ensure we search the TerraSync models tree before the FG_ROOT one,
since the TerraSync one contains newer files and updates to the base
one.
2013-08-29 22:13:43 +01:00
Thomas Geymayer
b468254d73 Fix #1163 2013-08-17 17:47:23 +02:00
Tom Paoletti
15e3e92ec2 Performance optimization: empty() instead of size()>0
empty() is guaranteed to be constant complexity for both vectors and lists, while size() has linear complexity for lists.
2013-08-16 16:48:35 +01:00
James Turner
ee403fd83a No need to deal with OSG versions pre 3.0 2013-07-29 22:53:31 +01:00
James Turner
05f266ac10 HTTP SVN fixes, cap max update-report depth. 2013-07-28 21:07:40 +01:00
James Turner
f52c0026dd Better reporting when an HTTP request fails. 2013-07-28 21:06:17 +01:00
Thomas Geymayer
a284107249 Canvas: ensure render order equals order in property tree.
Prevents also changing the render order if changing eg. the size
of a Canvas.
2013-07-26 23:31:46 +02:00
James Turner
a2e25e7940 Fix for #587, crash on break/continue.
Look for use of break/continue outside of a loop context,
and report a parser error instead of crashed. Thanks to
Philosopher for the patch.
2013-07-23 21:58:38 +01:00
James Turner
d45a0161cf Initialise token precedence rule.
Thanks to Philosopher for the catch.
2013-07-23 21:51:47 +01:00
James Turner
c7a5d15e7a Bug 585, assignment to multiple l-values.
Disambiguate multiple-values from function invocation. Will merge
to release branch after testing.
2013-07-23 09:45:22 +01:00
James Turner
3cb2241b1d Bug 737, crash parsing default args.
Reject function evaluation explicitly when building
default arguments.
2013-07-23 09:45:22 +01:00
Thomas Geymayer
b236821661 Canvas: Ensure all element types are initialized before first usage.
If setting properties on a group a check is performed if
this property exists on any possible child element, and
only if this is the case the property is stored in the
groups style.

Previously elements have been only initialized during
their first usage, leading to ignored styles if they
have been set on a parent element before instantiating
an instance of the actual element type.
2013-07-20 15:45:02 +02:00
Thomas Geymayer
fc75b0bd21 Canvas::Text: add line-height property. 2013-07-19 23:38:08 +02:00
Thomas Geymayer
a9fc84d568 Canvas: clip region rounding and catch negative size. 2013-07-19 23:37:04 +02:00
Thomas Geymayer
b15c6d887d Canvas: don't crash with invalid clip rect 2013-07-18 15:35:44 +02:00
Thomas Geymayer
c2f89978ff canvas::Element: Fix bounding box calculation of groups 2013-07-18 14:16:13 +02:00
James Turner
a004153223 Bump version on development trunk. 2013-07-17 20:29:22 +01:00
Thomas Geymayer
dde2bbcbe7 nasal::String: add ends_with method 2013-07-15 22:26:11 +02:00
Thomas Geymayer
7bd572f3ec Fix inverted checks... 2013-07-13 14:06:11 +02:00
Thomas Geymayer
486011dceb Fix for OSG without OSG_INIT_SINGLETON_PROXY 2013-07-13 11:37:24 +02:00
Thomas Geymayer
01c45633b7 Canvas::Group: Print warning message if using expired Group instead of crashing 2013-07-12 18:00:53 +02:00
Thomas Geymayer
5320d0ecaa Fix render order of canvas elements 2013-07-12 16:13:06 +02:00
Thomas Geymayer
757ba03918 CSSBorder fix: width/height swapped 2013-07-06 12:05:19 +02:00
Thomas Geymayer
948db69cc9 interpolate without values is used to abort interpolating -> no warning 2013-07-04 19:46:27 +02:00
Thomas Geymayer
92f363926e Replace auto_ptr to prevent possible undefined behavior 2013-07-04 16:09:04 +02:00
Thomas Geymayer
d0ff144753 Canvas: Fix removing text elements.
Removing text elements failed due to prefering removing the
style property with the same name. Add a flag to each style
indicating whether it can be inherited. The text property
is only applicable to text elements and can not be inherited.
Now groups can not have a text property, avoiding the name
clash with the text element.
2013-07-04 14:11:54 +02:00
Thomas Geymayer
943efbb3ed Canvas Event System: add missing currentTarget field. 2013-07-04 00:53:49 +02:00
Thomas Geymayer
6962de4b1f Canvas: fix property inheritance.
- Do not override style of children if they have own values set.
 - Retrieve style of parent if own style value has been removed.
2013-07-03 00:05:20 +02:00
Thomas Geymayer
6f7c0c23d1 Canvas: prevent bubbling of mouseenter and mouseleave. 2013-06-30 21:27:03 +02:00
Thomas Geymayer
14eccc70da Restore compatibility with stable OSG (3.0.1) 2013-06-30 21:25:21 +02:00
Thomas Geymayer
d4b48cec5d Canvas: clear mousedown/click if mouse leaves canvas. 2013-06-29 14:29:38 +02:00
Thomas Geymayer
2d23c5351f Canvas: Improve checks to mark events as handled. 2013-06-29 14:16:39 +02:00
Thomas Geymayer
b5dfaf170a Canvas: Ensure events are dispatched to canvas with no element hit. 2013-06-29 14:14:12 +02:00
Thomas Geymayer
c372591f36 Canvas: Ignore hidden element on event traversal. 2013-06-29 14:12:59 +02:00
Thomas Geymayer
36d1308aa6 Canvas: fix distance check for click events. 2013-06-29 14:11:19 +02:00
Thomas Geymayer
b0d6ed3844 Canvas: trigger missing events on mouseup.
On mouseup send mouseout/mouseleave to old element and
mouseenter/mouseover to new element. This fixes hover
actions after dragging.
2013-06-29 11:33:44 +02:00
Torsten Dreyer
5818366d92 Bump version number to 2.12.0 2013-06-28 12:09:30 +02:00
James Turner
e5bca74b9d std::string namespace fixes. 2013-06-27 10:14:08 +01:00
Thomas Geymayer
82dd1e4be9 Set binding after color array (required by OSG 3.1.8) 2013-06-27 00:38:44 +02:00
Alex Romosan
d0b77639c2 Ensure compatibility with OSG 3.1.8. 2013-06-26 23:54:09 +02:00
James Turner
6edb0f66d5 Fix crash when telnet or other protocols close.
http://code.google.com/p/flightgear-bugs/issues/detail?id=1144
2013-06-26 21:50:27 +01:00
James Turner
c458c13af7 XCode warning fixes. 2013-06-22 16:15:41 +01:00
James Turner
bb7875edd4 Fix a warning spotted by Emilian. 2013-06-22 16:15:30 +01:00
James Turner
6f54fb90eb Object names for STG groups / nodes. 2013-06-22 14:27:53 +01:00
James Turner
4d1e7c536f Fix preview exclusion of sliders. 2013-06-22 14:27:18 +01:00
James Turner
59cc200f92 Fix pick callbacks on scenery.
Ensure pick callbacks work over the whole pick group, otherwise
the visible render group is hit first, and resolves to the ground
pick callback instead.

This fixes the hangar doors at KSFO and Moffett.
2013-06-22 11:59:42 +01:00
Thomas Geymayer
c6093430ae Canvas: Fix creating/forwarding of mouseenter/mouseleave events. 2013-06-20 23:13:47 +02:00
James Turner
23172bcdd0 Windows SGPath::desktop() impl
Basic SHGetSpecialFolderPath wrapper, with dynamic
finding of the function since linking to shell32.dll
is painful. Obviously could be generalised to other
CSIDLs in the future.
2013-06-19 23:58:57 +01:00
James Turner
aea2dab0d7 Fix preprocessor boolean ops for MSVC 2013-06-19 09:04:15 +01:00
James Turner
4d26e144ab SVN client - prefix error constants.
Avoid Windows clashes on common names (NO_ERROR, etc)
2013-06-19 08:42:47 +01:00
Thomas Geymayer
c391fcd345 Canvas: fix updating placements after non matching placements 2013-06-18 23:07:20 +02:00
Thomas Geymayer
ece743342a canvas::Text: Make font resolution user configurable 2013-06-16 10:49:46 +02:00
Thomas Geymayer
02babbe340 canvas::Text: set font resolution to actual texel size. 2013-06-14 23:33:26 +02:00
Thomas Geymayer
e27b6d050c CanvasGroup: Do not try to remove already removed children. 2013-06-14 19:47:09 +02:00
Thomas Geymayer
86e2de8d10 Fix #1139
Always set TEST_LIBS as applications/tools also need to link
them, even if tests are disabled. Also allow disabling building
of sg_pkgutil.
2013-06-12 23:56:04 +02:00
James Turner
b4526f926d Use CoreServices, not Cocoa, for FSFindFolder 2013-06-12 22:11:43 +02:00
Thomas Geymayer
14f04878d1 CanvasGroup: allow derived classes to provide more/other child factories 2013-06-11 22:09:57 +02:00
Thomas Geymayer
830fb3b752 Use TEST_LIBS to include all libraries needed (on Mac) 2013-06-11 20:26:07 +02:00
Thomas Geymayer
9a336da359 Use global TEST_LIBS... 2013-06-11 19:41:29 +02:00
Thomas Geymayer
6cec49ce7e Missing library for Apple 2013-06-11 18:04:06 +02:00
Thomas Geymayer
6c28edea55 SGPath: new helpers and static members for home and desktop path 2013-06-10 21:37:00 +02:00
Thomas Geymayer
d7870d672e strutils: move unescape and simplify starts_with/ends_with 2013-06-10 21:36:13 +02:00
James Turner
5bd9228b4a Fix HTTP tests build. 2013-06-09 23:45:43 +01:00
James Turner
6392cf5a2f Fix Linux build of SVN code. 2013-06-09 23:14:25 +01:00
James Turner
6a2e2b704e Optionally, use internal code for SVN syncs. 2013-06-09 22:55:15 +01:00
James Turner
ecec803388 SVN read-only client code using our HTTP engine. 2013-06-09 19:19:03 +01:00
James Turner
848965e7f0 EasyXML: expose attributes easier. 2013-06-09 19:19:03 +01:00
James Turner
478af5f01e Base64 and hex helpers for strings 2013-06-09 19:19:03 +01:00
James Turner
14decb7387 simgear::Dir helpers
- remove all children of the dir
- check is the dir has children / is empty
2013-06-09 19:19:02 +01:00
James Turner
323d0d5ba0 HTTP engine tweaks for SVN support. 2013-06-09 19:19:02 +01:00
Thomas Geymayer
9bfa6ac1a1 Restructure Canvas/PropertyBasedElement
Nodes inside the osg scenegraph now hold a strong reference to
the according canvas element. Canvas elements in turn now only
hold a weak reference to the according node. This simplifies
for example the canvas::Group as it does not need to keep a
list of children on its own anymore. This is now stored inside
the scenegraph (as it was already before).

The restructuring will also allow to use a canvas::Group for
the canvas gui inside FlightGear and share for example the
handling of stacking based on z-index.
2013-06-08 11:28:49 +02:00
Thomas Geymayer
c8af817eeb CSSBorder: Do not return unitialized data. 2013-06-07 18:54:41 +02:00
Thomas Geymayer
d24d3ce487 Canvas: More helper functions and cleanup. 2013-06-07 16:45:34 +02:00
Thomas Geymayer
60a81dfbd8 CanvasGroup: Fix handling z-index while moving child to front. 2013-06-07 16:23:44 +02:00
Thomas Geymayer
8896a59dff Helper functions for SGRect and canvas::Element 2013-06-06 22:28:00 +02:00
Thomas Geymayer
7fe16d99be Canvas: clear event listeners on destroy
Removing all event listeneres on destroying a canvas
prevents circular references due to Nasal event listeners
keeping a reference to the canvas in their closure.

Also fix event handling with direct children of the root
group and add some more helpers to the Canvas.
2013-06-03 23:39:27 +02:00
Thomas Geymayer
c3af88dfc1 Canvas: set blend function for elements and prevent autoresize 2013-06-02 23:32:53 +02:00
Thomas Geymayer
5c8f0cc966 Make nasal::Ghost usable with weak_ptr 2013-06-02 21:20:47 +02:00
Thomas Geymayer
2a6c50c893 More helper methods for Canvas and PropertyBasedElement. 2013-06-02 21:19:37 +02:00
Thomas Geymayer
7a8d796ac1 Move BlendFunc parsing to separate file for easier reuse. 2013-06-02 20:41:03 +02:00
Thomas Geymayer
8b3b71bce3 Support for parsing basic CSS color keywords. 2013-05-31 19:18:36 +02:00
Thomas Geymayer
83da4e9248 Canvas Image: fix updating while showing nested canvas. 2013-05-31 19:17:30 +02:00
Thomas Geymayer
2c879095d9 Canvas: add chainable helpers to Path for adding segments. 2013-05-31 19:16:42 +02:00
Thomas Geymayer
13344fbb62 Canvas: separate CSSBorder parsing from image. 2013-05-31 19:14:39 +02:00
Thomas Geymayer
2fe9ad595f Canvas: bug fixing and add some helpers. 2013-05-31 19:07:55 +02:00
Stuart Buchanan
0f798289f0 Use square textures for trees, with shrunk UV coordinates. 2013-05-19 21:29:58 +01:00
Thomas Geymayer
01104cc1d3 Canvas: Add local_pos to mouse event and fix transformation of event positions with multi-level nested canvases. 2013-05-13 00:34:09 +02:00
Thomas Geymayer
d61b5827fd Canvas: proper forwarding of dirty and visible flags within nested canvases. 2013-05-13 00:26:13 +02:00
Stuart Buchanan
d18cc81531 Avoid UV bleeding issues on trees by using a strip of textures. 2013-05-10 20:03:48 +01:00
Thomas Geymayer
c96d7ae226 Use simulation time for spin and timed animations 2013-05-10 01:11:46 +02:00
Thomas Geymayer
9535aef59b Extend SGPickCallback to allow passing more information to callbacks 2013-05-09 21:31:27 +02:00
Thomas Geymayer
82f6fca06f Add (optional) uv coordinates to SGPickCallback 2013-05-09 12:40:59 +02:00
Thomas Geymayer
627b36a53b Prevent timer endless loops 2013-05-06 23:26:45 +02:00
Thomas Geymayer
2af78a3874 Allow adding a contition to locked-track animation 2013-05-02 00:47:51 +02:00
Stuart Buchanan
7c7109edf4 Reduce the height of tree UV coordinates to work around mipmap issues. 2013-05-01 22:01:45 +01:00
Thomas Geymayer
0fa23b83e6 Extend locked-track animation to support a slave element.
This allows tracking elements while at the same time changing the
rotation of both animated elements to fill the available distance
to the target element. This allows for example animating gear
scissors or other connected objects like gear doors and their
actuators/arms (possibly connected to the gear strut).
2013-04-28 23:46:25 +02:00
Thomas Geymayer
e53c71543a Move and rework pow to math/SGMisc 2013-04-28 15:43:02 +02:00
Thomas Geymayer
fa64f7b6aa Work around MSVC linker bug with classes derived from i/ofstream 2013-04-27 23:44:32 +02:00
Thomas Geymayer
eaac3a64f8 Fix linker error for test 2013-04-26 23:48:25 +02:00
Thomas Geymayer
4eabc45dfc Fix animation tests for low precision floating point 2013-04-26 00:19:00 +02:00
Thomas Geymayer
5c5e2a0f2f Remove debug output (and shorten test names) 2013-04-26 00:13:35 +02:00
Thomas Geymayer
559a5d146a Add trackTo (locked-track) animation 2013-04-25 23:23:16 +02:00
Stuart Buchanan
df46c58cb8 Reduce the texture coords for trees.
Support winter, summer and snow textures on single texture sheet.
2013-04-20 21:05:55 +01:00
Thomas Geymayer
1f43132363 Canvas: rework style setter system.
Style setters are now only setup once for each element type and
not for each element instance as before. A static map holds the
setters for each element type. Also an animation type is stored
which will later allow to animate properties of Canvas elements
without specifying and animation type.
2013-04-20 00:22:37 +02:00
Thomas Geymayer
17369a20de CanvaImage: Enable texture repeat for images 2013-04-15 21:09:41 +02:00
Thomas Geymayer
c83dae4c70 Comparison operators for SGSharedPtr 2013-04-13 16:21:04 +02:00
James Turner
c2f44a51c4 Restructure to avoid ordering issues.
Create a pick group for each object, instead of a single one. This
can be optimised in the future but this structure is backwards-
compatible with existing usage, which is more important.
2013-04-13 14:40:55 +01:00
Thomas Geymayer
3da44d1215 Nasal: add naVec_removelast. (Thanks to Philosopher) 2013-04-12 12:32:03 +02:00
James Turner
f6709e357f Support for proxy pick objects.
Pick, knob and slider animations support additional object-names,
which are always invisible and untransformed (in the case of knobs/
sliders). These objects act to extend the hover/pick area, making small
switches and knobs more usable. (Especially for users with smaller
screens / windows).
2013-04-05 17:12:58 +01:00
James Turner
45d5511fd7 Remove stray debug. 2013-04-02 18:10:09 +01:00
Thomas Geymayer
198c5d23fd nasal::Ghost tweaking to allow using with osg::oberser_ptr. 2013-04-01 13:35:41 +02:00
Thomas Geymayer
c41caeaf64 Ensure every scenery model has own SGModelData.
This makes Nasal unload hooks of scenery objects working again.
Previously the same SGModelData instance was used for all objects
which never got destroyed and therefore was not able to call any
unload callback.
2013-04-01 13:22:28 +02:00
Thomas Geymayer
b6c542b0e7 nasal::Ghost tweaking and to_nasal_helper for SGGeod. 2013-03-23 12:47:06 +01:00
Thomas Geymayer
2d62275a08 Fix uninitialized member.
Thanks to Chris for the catch.
2013-03-20 23:44:26 +01:00
Thomas Geymayer
971ea81861 cppbind: add from_nasal_helper to convert Nasal ghosts to C++ shared pointer 2013-03-19 18:36:55 +01:00
Thomas Geymayer
9e9cc7859c Interpolation system tweaking and add helpers to SGPropertyNode to interpolate its value 2013-03-17 23:48:01 +01:00
Thomas Geymayer
8898f5fe52 Tweak interpolator and allow passing list of interpolation steps 2013-03-16 16:36:20 +01:00
Thomas Geymayer
40be69ae8e Remove unecessary dependency from libSimGearCore on libSimGearScene. 2013-03-16 12:19:23 +01:00
Thomas Geymayer
17eec81071 Fix headless build 2013-03-16 10:35:30 +01:00
Thomas Geymayer
c9bbbd18ec New interpolation/animation system.
Inspired by jQuery.animate() properties can be interpolated using
different easing functions and specifying an animation duration.
Additionally animations can be chained to get table-based
animations like with the current SGInterpolator, or also create
looped animations or other more complicated curves.

Currently this system is not used yet, but it is intended to
replace SGInterpolator and allow more advanced animations of
eg. also colors, for example, for the canvas.
2013-03-15 23:37:17 +01:00
Thomas Geymayer
e08eda18d5 CMake: Create list of libs for testing only once 2013-03-15 23:21:38 +01:00
James Turner
d2c03a6651 Fix pick-callbacks with no action.
Ensure pick animations work only to show a tooltip. Thanks to Emilian
for noticing I broke this
2013-03-12 21:14:31 +00:00
Thomas Geymayer
0a1e920659 Ensure canvas is updated before displaying image containing a canvas 2013-03-11 21:22:43 +01:00
James Turner
cd58df820e Standardise location (in XML) of hovered elements.
Hovered bindings are always direction children of the pick animation, since having different hovered behaviours per-action makes no sense.
2013-03-11 18:07:27 +00:00
James Turner
1a5467aec8 Collect properties from expression/condition trees.
Initial ground-work to support efficient updating of condition/expression results; allow collecting all the dependent property values from the hierarchy, so they can be observed. Also add a very small test-case for this.
2013-03-11 16:53:52 +00:00
Thomas Geymayer
0dcb64dca3 slider - fix shifted check while dragging 2013-03-10 23:10:26 +01:00
James Turner
b703102d9b Part of fixing bug 1055.
Add machinery to convert hateful legacy Windows encodings to UTF-8.
2013-03-10 13:38:29 +00:00
James Turner
3c2ef75b50 Tweaks for pick callback cursors. 2013-03-10 12:03:09 +00:00
James Turner
4fa530354d Knob/slider - clean up internals.
Add support for a global sensitivity parameter to scale drag response.
2013-03-08 16:31:02 +00:00
James Turner
eeeb30dc3f Work on knob/slider animations.
Rename some values, and support mouse-dragging.
2013-03-07 18:40:37 +00:00
PlutoniumHeart
870fc2e53e Replacing strdup with _strdup in MSVC 2013-03-06 23:58:38 -07:00
Thomas Geymayer
79ae0da927 Fix some warnings 2013-03-07 00:17:45 +01:00
Thomas Geymayer
e179bda57a add static_pointer_cast for SGSharedPtr 2013-03-06 23:17:02 +01:00
Thomas Geymayer
8e0c15e32e cppbind: allow adding free functions accepting nasal::CallContext and do some cleanup 2013-03-06 17:00:38 +01:00
Thomas Geymayer
ff844f6760 May MSVC likes this more... 2013-03-05 18:12:17 +01:00
Thomas Geymayer
bc96ac85f4 cppbind: Add some methods to nasal::CallContext 2013-03-05 17:27:49 +01:00
James Turner
33b328e3d5 Fix priority of pick animations. 2013-03-05 08:39:44 +00:00
James Turner
dcda8d1c7a Add a pick priority lower than the default. 2013-03-04 23:33:21 +00:00
James Turner
5fd2bd225f Support motion-tracking in pick callbacks. 2013-03-04 23:11:40 +00:00
Thomas Geymayer
2db8859076 cppbind: Tweak from_nasal error reporting 2013-03-04 23:15:13 +01:00
Thomas Geymayer
6eff167a28 Silence MSVC 2013-03-04 18:42:32 +01:00
Thomas Geymayer
9fecb69b84 cppbind: tweaking from_nasal/to_nasal. 2013-03-04 16:26:28 +01:00
Thomas Geymayer
0539aa38e5 cppbind: faster from_nasal for bool and fix VS warning. 2013-03-04 00:30:30 +01:00
James Turner
fe9caad391 Max catalog age configurable per-catalog.
Allows for short-validity catalogs for development use.
2013-03-03 23:03:09 +00:00
Thomas Geymayer
ceae2928aa cppbind: refactor to_nasal for better name lookup.
Using template parameter dependent name lookup it is
now possible to create to_nasal_helper overloads
for custom types and having them used for automatic
type conversion with binding methods/member on
nasal::Ghost objects.
2013-03-03 23:42:40 +01:00
Christian Schmitt
0e6934abe5 Add a missing define for minizip, needed on some installations of zlib 2013-03-03 23:35:43 +01:00
Thomas Geymayer
a2e7c92f99 cppbind: Allow getter without from_nasal defined and setter without to_nasal. 2013-03-03 20:55:57 +01:00
Thomas Geymayer
643a8717b4 Make old gcc happy 2013-03-03 20:16:21 +01:00
Thomas Geymayer
f21127fd4a cppbind: rework to allow binding nearly everything.
It is now possible to register all types of member function
and free functions as methods for nasal::Ghost objects.
The return value and arguments are converte automatically
to the required types.

Also usage is simplified by removing replacing the old
method and method_func with a single method function
which only needs a name for the method and something
callable.
2013-03-03 19:28:39 +01:00
Peter Sadrozinski
0bc8005100 Add new api to retreive a list of SGBuckets within a bounding rectangle 2013-03-03 19:21:05 +01:00
James Turner
67efc1f68f Look for MSVC 3rdparty deps differently.
Check for the 3rdparty dir in the parent of build dir, not the parent of the source dir. For the recommended build layout, this is the same location, but for super-builds using fgmeta it's not (and the source tree should not be touched).

If this causes anyone issues, please let me know, since it's possible more flexibility is needed to set the path explicitly.
2013-03-03 16:06:51 +00:00
James Turner
dfebf60e68 Simplify CMakeLists now package code is enabled. 2013-03-03 16:01:06 +00:00
James Turner
26e7d134ce Package management tweaks. 2013-03-03 15:03:25 +00:00
Thomas Geymayer
c414242f13 sg_netChat: let getTerminator return const char* for compatiblity with FlightGear 2013-03-03 01:19:35 +01:00
Thomas Geymayer
33e60725b1 sg_netChat: Use std::string to prevent crash with old strdup.
Thanks to Godspeed for noticing this code crashing with MSVC.
Using std::string should fix this.
2013-03-03 01:12:01 +01:00
James Turner
f21b0985cc pkgutil can show detailed info about a package. 2013-03-02 17:02:08 +00:00
James Turner
71e9548c20 Lots more work on package support.
Delegate is hooked up in the demo util, and Install forwards control to the delegate too.
2013-03-02 16:30:39 +00:00
James Turner
fc64abea5c LGPL license on package files. 2013-03-02 15:15:52 +00:00
James Turner
413e89c955 Package dependencies. 2013-03-02 15:14:09 +00:00
James Turner
439041c2f4 Enable package code by default. 2013-03-02 14:43:19 +00:00
Thomas Geymayer
530de4d809 cppbind: Prepare for improved bindings.
- Improved Nasal/C++ bindings will follow. For now just test if
   all compilers are happy with intended approach.
 - Add to_nasal overload for std::map<std::string, T>.
2013-03-02 00:13:48 +01:00
Thomas Geymayer
5e45bdeeda Add optional user_data to Nasal C functions.
A user_data pointer and another pointer to an optional
deleter function is stored in unused parts of the naPtr
union. The previous behavior of extension functions does
not change. Only one additional boolean comparison is
required upon each function call to check whether user
data is available.
2013-03-01 12:22:51 +01:00
Thomas Geymayer
081eba903f Visual Studio fix 2013-03-01 00:33:47 +01:00
Thomas Geymayer
0def045611 cppbind: Fix SGPath from_nasal_helper 2013-02-28 23:46:55 +01:00
Thomas Geymayer
e20cc6a90f Nasal cppbind: support more member function types 2013-02-28 23:43:42 +01:00
Thomas Geymayer
7dd83dd2d1 Fix boolean conversion 2013-02-28 22:23:30 +01:00
Thomas Geymayer
1240807b9f ODGauge/Canvas: add option "additive-blend" to use additive alpha blending 2013-02-28 22:04:16 +01:00
James Turner
ad7d6624de Fix some signed/unsigned comparisoms. 2013-02-28 19:45:19 +00:00
James Turner
06b089ba13 Updated package-management code.
Use mini-unzip code to extract, since we don't need all the features of libArchive, and the deployment issues become simpler.
2013-02-28 18:31:28 +00:00
Thomas Geymayer
e1302bcf17 CanvasImage: Fix border abs/rel calculations; add slice-width property 2013-02-28 01:09:27 +01:00
Thomas Geymayer
cfdc7db79a sgstream_test needs linking with zlib 2013-02-26 12:53:56 +01:00
Thomas Geymayer
50de873453 Canvas: ensure z-index is updated on adding new child. 2013-02-26 12:49:04 +01:00
Christian Schmitt
a4ae7b2059 sgstream: detect two directly following CR/LF EOL correctly in skipeol,
supply a testcase for this.
2013-02-26 11:56:14 +01:00
Mathias Froehlich
d90abdcb44 scenery: Make static scenery static. 2013-02-25 06:55:35 +01:00
Mathias Froehlich
4a31045fd9 spt: Make the range multiplier configurable. 2013-02-25 06:42:55 +01:00
Mathias Froehlich
249155987d spt: Normalize the bucket box meta filename lengths. 2013-02-25 06:42:55 +01:00
Mathias Froehlich
2ae7fc244b spt: Expose the paging levels to osg options.
The levels at which page nodes are built is exposed by an
osg database pager option SimGear::SPT_PAGE_LEVELS which could
contain a blank separated list of levels where paging occurs.
Also the database pagers paths are searched for static lower
level of detail tiles in case they are available.
2013-02-25 06:42:55 +01:00
Mathias Froehlich
fafa70c6bc spt: Use vbos for geometry. 2013-02-25 06:42:40 +01:00
Mathias Froehlich
49162a7a64 stg: Defer loading models into a paged lod node.
This defers loading the models into a paged lod node
that is evaluated at a later point in time. That should
help for memory problems with higher visibilities.
2013-02-25 06:42:40 +01:00
Thomas Geymayer
328e6b3e28 Update bounding box if calling update() on canvas elements 2013-02-24 20:44:02 +01:00
Thomas Geymayer
5441db9b18 Support image slice/scale-9 for CanvasImage. 2013-02-24 17:57:19 +01:00
Thomas Geymayer
06bfa4f1a1 Fix package management compiling with linux 2013-02-21 14:03:08 +01:00
James Turner
a530712491 Initial work on package management.
Basic library infrastructure, catalog download/refresh, and package install,
uninstall and update. Disabled at cmake time by default, and not yet hooked
into FlightGear.
2013-02-20 16:17:22 +00:00
James Turner
3c8cfe9b76 Fix MSVC compilation, thanks to Fred. 2013-02-18 13:56:41 +00:00
Eric van den Berg
57b4ce96e4 added physical constant cp 2013-02-18 08:58:52 +00:00
Hooray
63c7d64143 fix mingw 2013-02-18 08:58:52 +00:00
Thomas Geymayer
1784327c47 CanvasImage: Use image/canvas size rather than texture size 2013-02-15 12:32:31 +01:00
Thomas Geymayer
a63ec83d5f CanvasImage: Use normalized coordinates by default.
Using absolute sizes by default lead to problems,
as while creating the image the size of the later
texture is not available.
2013-02-14 17:32:19 +01:00
Thomas Geymayer
d661516b02 Expose whether CanvasElement is visible 2013-02-13 12:09:15 +01:00
James Turner
ba020245f9 Fix jpeg-httpd compilation. 2013-02-11 12:51:20 +00:00
James Turner
79fefc1ff9 Support arbitrary parameters to bindings.
Use this to supply window X/Y to hover bindings.
2013-02-10 15:07:55 +00:00
James Turner
eac169b6da Grrrr. 2013-02-09 15:45:36 +00:00
James Turner
a60d293759 Tweak APi for GCC happiness. 2013-02-09 14:11:48 +00:00
James Turner
b0063f8db6 Command-manager supports functors.
Will be used to support native Nasal commands, which was tricky with pure function pointers before. Can also be used to avoid some trampoline functions in the code, but this can happen gradually.
2013-02-09 12:40:44 +00:00
Thomas Geymayer
632abdd87b Fix CanvasText horizontal alignment.
Don't reduce width of bounding box below character width
even if outline of rendered character is smaller. This
prevents trailing spaces from being ignored and also
fixes continuously chaging alignment (especially with
monospace fonts).
2013-02-09 12:17:45 +01:00
James Turner
d9b01ca5de Foundations of hover support in pick-callbacks. 2013-02-09 11:11:53 +00:00
James Turner
adb7db9229 Ensure individual log-level setting works. 2013-02-08 20:17:27 +00:00
James Turner
e4f7aec965 Linux needs explicit <algorithm> include. 2013-02-08 20:07:11 +00:00
James Turner
768a8c1062 Give terrasync a buffered log. 2013-02-08 19:37:47 +00:00
James Turner
318c5000ce Logging tweaks.
More pieces to support logging to buffers in the GUI.
2013-02-08 19:37:29 +00:00
James Turner
70f334e1a3 Fix GCC warnings about signed/unsigned compare. 2013-02-08 12:58:02 +00:00
James Turner
279b53a705 Move BufferedLogCallback to its own class.
Reduces includes in logstream.hxx, which is included by everyone and hence needs to be lightweight.
2013-02-08 12:58:02 +00:00
James Turner
a72a3ce5f3 Fix stderr log filtering.
Thanks to Stuart for pointing this out!
2013-02-08 12:58:02 +00:00
Thomas Geymayer
979aea5212 Add SGMisc::seek helper 2013-02-08 12:12:15 +01:00
James Turner
34d3c63384 Fix bucketBoxTest linkage. 2013-02-07 17:53:34 +00:00
James Turner
cf4af2692b Fix property tests static linkage. 2013-02-07 17:51:42 +00:00
James Turner
d335ca5a8d A couple more tests fixes. 2013-02-07 17:48:58 +00:00
James Turner
9cac2c1457 Fix math test linkage. 2013-02-07 17:42:00 +00:00
James Turner
523b992b4c Windows logging tweaks.
Restore the freopen calls, though I am unsure exactly what they achieve.
2013-02-07 17:23:31 +00:00
Christian Schmitt
02be490466 Missing headers 2013-02-07 18:20:57 +01:00
James Turner
45ae3978f6 Fix handling of ZSTREAM_END result from zlib.
Avoid getting stuck when ZSTREAM_END occurs with no more bytes written out.
2013-02-07 13:01:56 +01:00
James Turner
f983194d7e Buffered log-callback.
Allow a particular set of log messages to be retained indefinitely, for (presumably) later display somehow, such as in the GUI.
2013-02-07 13:01:56 +01:00
James Turner
ab8373b989 Rewrite logging code.
Support multiple backends, and make it thread-safe. Use an internal thread to push log entries to backends, to avoid blocking the submitting thread for any time.
2013-02-07 13:01:56 +01:00
Thomas Geymayer
4bef2c48eb Remove debug output 2013-02-07 10:10:38 +01:00
Thomas Geymayer
21e2a769eb Fix PropertyObject bug and interface improvements.
- Fix overwriting of parent node if PropertyObject::node() is
   called for a non-existing node.
 - Prevent implicit conversion from const char* and
   SGPropertyNode*
2013-02-07 01:25:55 +01:00
Stuart Buchanan
fd8369142a Building performance improvements.
Use sensible LoD range of 10km and gradual fade-out to 20km rather
than fixed 20km+ LoD range.  Also make deeper quad-tree to make
culling easier.
2013-02-06 21:53:57 +00:00
Thomas Geymayer
5dea221ad5 Expose reloading Canvas placements 2013-02-06 01:19:24 +01:00
James Turner
235c29913a Make the knob mouse-wheel direction configurable.
Add a global setting to control the mouse-wheel direction of the knob; a future commit will expose this in the FG GUI.
2013-02-03 17:21:50 +00:00
James Turner
0870407f65 Add 'release' bindings to knob animation.
Currently this fires on button release, but also after any mouse-wheel movement (since they are sent as buttons). This feels slightly wrong, but can't decide how a spring-loaded know would work, when interacting via the mouse-wheel. Comments welcome.
2013-02-03 17:11:05 +00:00
James Turner
e8156c6bd9 Knob animation: shifted mode binding.
As part of this, pass the osgGA GUIEventAdapter down into the pick callbacks, which seems reasonable to me. If anyone can foresee issues with this, please let me know and I can adjust the API.
2013-02-03 16:33:30 +00:00
Thomas Geymayer
e7f9486aa1 Nasal String wrapper and allow adding methods to string objects.
- Add nasal::String for wrapping Nasal string data and accessing
   string methods (which eg. could be exposed to Nasal)
 - Allow adding functions from C/C++ which are callable on
   Nasal strings.
2013-01-31 19:07:33 +01:00
James Turner
53b9fd2110 Support preview mode in the model loader.
This makes fgviewer / fgfs --viewer mode useful with models containing Rembrandt light volumes.
2013-01-31 16:46:02 +00:00
James Turner
4d4e474464 Initial prototype of knob animation. 2013-01-31 00:15:09 +00:00
James Turner
a58b41e7d2 Pick animation moved to its own file.
Preparatory work for adding more pick animations which will share some
internals with this code.
2013-01-30 21:51:41 +00:00
Mathias Froehlich
4db05e97c5 spt: The bucket size case is already handled above. 2013-01-29 07:01:58 +01:00
Mathias Froehlich
3a668232c8 spt: Introduce a third layer of paged nodes. 2013-01-29 07:01:50 +01:00
Eric van den Berg
d2622a5d86 added some physical constants to constants.h
goes with fgfs merge request #38
2013-01-28 16:56:07 +00:00
James Turner
d11db8a67a Prepare for optionally embedded SimGear. 2013-01-26 15:31:17 +01:00
James Turner
98b6102e56 State-machine correctness tweaks. 2013-01-25 12:05:16 +01:00
James Turner
0db8613a21 StateMachine tweaks. 2013-01-25 09:29:31 +01:00
James Turner
94a6cb2cff Tolerate lack of C99 in MSVC. 2013-01-23 16:01:46 +01:00
James Turner
5b92575ed3 Fix state-machine test linkage with static libs.
Thanks to Thomas for the catch.
2013-01-22 20:56:57 +01:00
Thomas Geymayer
47b02c0480 Missing include 2013-01-22 19:20:41 +01:00
James Turner
691be54ca2 Keep Linux happy. 2013-01-22 18:53:51 +01:00
James Turner
22ea8ebe25 State-machine structure, initial work. 2013-01-22 18:08:44 +01:00
James Turner
bd71635c49 Add left/right Nasal library functions. 2013-01-22 18:06:50 +01:00
James Turner
830bc3eac3 More native math functions in Nasal. 2013-01-22 18:06:50 +01:00
Mathias Froehlich
2d72bf4308 spt: Put the sea level textured tiles also under a transform node. 2013-01-20 15:33:25 +01:00
Mathias Froehlich
f4e694afa7 spt: Consistently return references in the loader. 2013-01-20 15:33:25 +01:00
Mathias Froehlich
55610bae70 spt: Use SGBox to build up the bounding spheres for the tiles. 2013-01-20 15:33:25 +01:00
Mathias Froehlich
08351e0df2 bucket: Make no bucket cross the 0 and 180 deg longitude border.
Change the bucket tiling at the poles not to cross the
0deg longitude and not to cross the 180deg longitude line.
This lets some special cases disappear for the buckets as well
as for the hierarchical level of detail spt loader.
Also change the last degree tiles from spanning 360 degrees to
12 degrees. Before we had 8 nested rings which neither helps
scenery paging nor culling. With that change the chunks are
about the same order of size than any other tile. Also the
tile shapes are much more friendly for culling and paging.
Also in presence of the current scenery, this polar tiles contain
as of today just totally broken geometry which tells me that
also the scenery generation process did not like these rings
for the tile shapes.

The impact on the current scenery is low. With this change the
polar regions do no longer load the tiles that are available
in the current scenery builds. The last degree tiles are broken
in this scenery version anyway. The next degree that is changed
will really loose some tiles that were sensible as of today.
All these areas are replaced with sea tiles by the old paging
structure. So, you will have at least ground below you when you
fly there. A hopefully comming soon scenery rebuild will
use this new tiling structure and thus will be the first one
providing closed polar caps.
2013-01-20 15:33:25 +01:00
Torsten Dreyer
7489771ad2 Bump version to 2.11.0 2013-01-17 19:22:07 +01:00
Thomas Geymayer
ea8023e51f Canvas: Provide sane default bounding box (For Image & Text) 2013-01-09 12:11:19 +01:00
Thomas Geymayer
8a9693a28e Fix canvas mouse intersection test
Bounding box of drawables use other coordinate frame
then bounding sphere of MatrixTransform...
2013-01-05 00:44:19 +01:00
Thomas Geymayer
724fba4af9 canvas::Element: parse full 3x3 matrix
This doesn't change any existing behaviour but allows specifying
full 3x3 matrix to eg. perform a perspective transform needed
for some HUDs.
2013-01-01 14:18:39 +01:00
Thomas Geymayer
beca1cbf96 Allow nasal::Ghost to only wrap classes by their shared pointers
This removes support for exposing and managing classes by just
raw pointers as this made lifetime management of instances
from C++ to Nasal and especially the other way round nearly
impossible. Always using smart pointers saves us from a lot
of headaches.
2012-12-29 17:49:22 +01:00
James Turner
b74d2ae9fa Notify all requests on name lookup failures.
Since there's no active request during a name lookup failure, explicitly fail all sent and queued requests, so the Request subclasses can take regular failure action.
2012-12-29 14:36:38 +00:00
James Turner
ec82a0154b Expose the current members of a subsystem group. 2012-12-28 14:54:00 +00:00
James Turner
0ea8dbea10 Add SGPath to the Nasal conversion helpers. 2012-12-28 14:53:31 +00:00
James Turner
a131f44247 OS-X specific sleep helper, more stable. 2012-12-23 23:30:40 +00:00
Thomas Geymayer
0423aedffc Revert to old way of including everything from SGMath.hxx 2012-12-23 01:30:41 +01:00
James Turner
afc89cdd95 Tweak libSvn usage: fixes a crash on Mac.
Work-around a crash on certain Mac builds (I can't tell why other work fine) where the called parameters to apr_pool_create_ex are problematic. Explicitly pass the default values for the function.
2012-12-22 23:55:37 +00:00
Mathias Froehlich
541606e00d hla: Lower the log level of two alerts.
Trying to interpret the object template in a yet
unimplemented format is not worth an alert.
2012-12-22 10:12:45 +01:00
Torsten Dreyer
c53fd5fc9a feature freeze for 2.10.0, new version number 2012-12-18 21:57:02 +01:00
Thomas Geymayer
bc3dd06b26 Missing file... 2012-12-17 10:53:52 +01:00
Thomas Geymayer
fd39808ed8 Nasal cppbindings: automatic conversion of vec2 to/from Nasal 2012-12-17 00:29:14 +01:00
Thomas Geymayer
a1b7cb5330 Fix memory leak if nasal::Ghost creation fails 2012-12-16 21:31:19 +01:00
Thomas Geymayer
ac27fae712 Canvas: Remove old event handling code 2012-12-16 19:02:21 +01:00
Thomas Geymayer
f6270ec395 Canvas: create mouseover/mouseout events 2012-12-16 18:52:32 +01:00
James Turner
e9c70f8b1c Improve HTTP behaviour when name lookup fails.
Don't endlessly re-send requests when name lookup fails; inform the next layer up so it can decide whether to retry.
2012-12-15 15:09:33 +00:00
Thomas Geymayer
50688e1159 Rename simgear::Rect to SGRect and make interface more similar to SGBox 2012-12-13 23:37:21 +01:00
Thomas Geymayer
8417fea3bf Overload Rect::contains and add compound assignment operators to PropertyObject 2012-12-13 00:30:11 +01:00
James Turner
f5150d32af Whoops, fix bad #ifdef to disable sound. Bug #958 2012-12-12 11:16:29 +00:00
Thomas Geymayer
2263823f75 Create new FBO if Canvas render target size chanages
As doesnt seem to work to just resize the texture, if changing
the size of the Canvas render target a new FBO is created and
placed on all active placements.
2012-12-09 23:08:07 +01:00
Thomas Geymayer
a882263033 Canvas: MouseEvent now contains screen and client pos 2012-12-08 15:01:01 +01:00
James Turner
24d2431522 Work on making OpenAL a compile-time option.
ENABLE_SOUND=0 now works when configuring SimGear, and libSimGearScene can be linked without OpenAL. However, more testing of FlightGear in this mode is needed before it's officially supported!
2012-12-07 15:26:24 -05:00
Thomas Geymayer
fd27e7bd43 Canvas: basic support for rectangular clipping (like CSS clip property) 2012-12-07 18:36:37 +01:00
Thomas Geymayer
4dfe36cdc1 Canvas: Fix handling drag events and some cleanup. 2012-12-07 18:35:20 +01:00
Thomas Geymayer
fc49be1e05 Implement Canvas single/double/tripple click handling.
- Implement click event creation like specified in
   DOM Level 3:
   * Check for max move distance between mousedown/up
     and clicks
   * Check for click timeout
   * Count clicks and report double clicks
2012-12-06 23:16:36 +01:00
Thomas Geymayer
d06d94c767 Canvas: Propagate style changes on groups to children 2012-12-06 11:33:51 +01:00
Stuart Buchanan
66786651b0 Fix RNG so it is passed in from above rather than generating the same
seed continuously.
2012-12-05 22:10:45 +00:00
Thomas Geymayer
e9b499b82d Extend Canvas to retrieve bounding box of groups 2012-12-04 23:58:08 +01:00
Thomas Geymayer
e6e3e686c6 canvas::Element: print warning instead of crash on removing unknown transform 2012-12-02 23:55:34 +01:00
Mathias Froehlich
1e6ba0cdc4 hla: Add SGQuat data elements. 2012-12-02 17:30:08 +01:00
Mathias Froehlich
75db4c29b8 hla: Add integer valued vector types. 2012-12-02 17:30:08 +01:00
Mathias Froehlich
914d3e6a2b math: Add integer valued vector types. 2012-12-02 17:30:08 +01:00
Mathias Froehlich
ff678a5ad7 hla: Remove obsolete typedefs. 2012-12-02 17:30:08 +01:00
Thomas Geymayer
46442ef50c First working version of DOM like Canvas event handling
- Now it is possible to attach listeners to canvas
   elements and also the canvas itself, which get
   called upon different mouse events (Currently
   only basic mouse events supported. click/dblclick
   etc. are missing)
2012-12-02 13:22:37 +01:00
ThorstenB
7d8fde82e6 Fixed incomplete copy&paste issue. 2012-12-01 11:07:10 +01:00
ThorstenB
99cf057906 #946: some libraries not found on Ubuntu/Debian
Ubuntu/Debian introduced "multiarch" library directories, which is
unsupported by CMake <= 2.8.10. Add manual search paths as a workaround.
Currently it is only needed for libsvn, but it is needed for any lib
which is converted to the new directory standard.
2012-12-01 11:00:50 +01:00
Frederic Bouvier
59d3d66f91 Look for Boost 1.52.0 and OpenRTI under Windows 2012-12-01 10:59:58 +01:00
Mathias Froehlich
be73c0fe43 hla: Use a different extrapolation method for HLALocation. 2012-12-01 08:02:30 +01:00
Mathias Froehlich
e5afc6f029 SharedPtr: Avoid double dereference when calling clear(). 2012-12-01 08:02:29 +01:00
Thomas Geymayer
8816d0a9ac Add method canvas::Group::getElementById
- canvas::Group: New method to get a (possibly
   nested) child by its id.
 - nasal::Ghost: Also support recursive parent
   hashes.
2012-11-30 00:06:17 +01:00
Thomas Geymayer
229837b14c Fix some compiler warnings. size_t/int/unsigned conversions and extra ';' 2012-11-29 20:20:40 +01:00
Thomas Geymayer
94b068a40f Use better method names and add comments 2012-11-29 17:52:52 +01:00
Thomas Geymayer
2f0dfc4d74 Add methods to get arguments passed to function from Nasal 2012-11-29 01:23:15 +01:00
Christian Schmitt
3391c44107 SGThread: compile under MSVC 2012-11-28 18:29:15 +01:00
Peter Sadrozinski
35aae588b8 SGThread: Add capability to get current thread id 2012-11-28 11:23:30 +01:00
Thomas Geymayer
c19585e22a Simplify/Make VS happy 2012-11-27 15:14:54 +01:00
Thomas Geymayer
77946585b1 Canvas: Prepare for DOM Level 2 like event model. 2012-11-27 13:51:00 +01:00
Thomas Geymayer
88a35fd162 cppbind: Automatic conversion of derived ghosts and some cleanup/fixes 2012-11-27 13:02:36 +01:00
James Turner
7d8d4a03fb Make SGLockingQueue::pop usable.
Since there's no external lock, it was impossible to check the queue was non-empty before a pop, without a race condition. To avoid this, tolerate an empty queue and return a default constructed value.
2012-11-25 22:36:15 +00:00
Mathias Froehlich
1a68d34663 hla: For setting data types recurse into array data elements. 2012-11-25 22:27:14 +01:00
Mathias Froehlich
72a0ff706d hla: Use an implementation file for SGLocation. 2012-11-25 22:27:04 +01:00
Mathias Froehlich
420e43d47d sphere: Implement sphere inside sphere. 2012-11-24 09:55:34 +01:00
Mathias Froehlich
3c749d4774 hla: Route failures in message processing into the HLA layer. 2012-11-24 09:55:26 +01:00
Mathias Froehlich
d4310a7f3b hla: Make use of SGLocation. 2012-11-24 09:55:16 +01:00
Mathias Froehlich
f892d88c10 math: Implement SGLocation.
New simple class to encapsulate a cartesian position
and orientation pair with few handy methods.
2012-11-24 09:54:57 +01:00
ThorstenB
d226709836 Change logging class for tie/untie messages.
It's enough to see them in "general".
2012-11-23 20:44:17 +01:00
ThorstenB
fbfd03fe5c Add logging class for navaid systems. 2012-11-23 20:41:03 +01:00
ThorstenB
f513001798 #942 segfault with --log-level=debug when random buildings enabled 2012-11-22 21:55:11 +01:00
Christian Schmitt
31aa0ddabe Implement runway guard lights and tweak the hold short lights animation a bit 2012-11-22 16:42:56 +01:00
Thomas Geymayer
767184cf3c Extend CanvasSystemAdapter to provide access to Nasal gcSave and gcRelease 2012-11-22 00:54:56 +01:00
ThorstenB
fe86a9ed02 Fix compiler error with disabled sound support.
("source" is undefined in SGSampleGroup::stop).
Also fixes two related compiler warnings (unused var "sample").
2012-11-21 20:17:58 +01:00
Thomas Geymayer
9be53e746f Allow canvas::Placements to have own properties 2012-11-21 13:05:19 +01:00
Thomas Geymayer
8b6f50d0cc SGPropertyNode::fireCreatedRecursive: don't fire for node itself by default 2012-11-21 11:58:07 +01:00
James Turner
80dc28bfb5 Modernise the mat lib header, remove 'using std' 2012-11-20 17:10:13 +00:00
James Turner
983e1abf48 Work on ENABLE_SOUND.
Restructure SGSampleGroup, to make #ifdef-ing the OpenAL calls easier. No functionality change.
2012-11-20 12:20:21 +00:00
ThorstenB
ff65b82671 Keep (deprecated) SGTime::update method for a while
allowing dependent projects to adapt.
2012-11-19 23:42:51 +01:00
James Turner
0b26c69222 Remove duplicate members in SGSampleQueue.
Remove duplicate members shared by SGSoundSample and SGSampleQueue (which inherits from it). Change SGSoundSample to expose some members as protected data for access by the sample-queue, and hence share nearly all the methods. Also remove 'inline' keyword from virtual methods.
2012-11-19 15:33:53 +00:00
Thomas Geymayer
904d714d6d Get Canvas/PropertyBasedElement by name 2012-11-18 16:27:05 +01:00
James Turner
2aed93a576 Fix HTTP test for revised POST semantics. 2012-11-17 19:51:57 +00:00
James Turner
d1af42e9ad Tweak HTTP handling for POST requests.
Tolerate slightly malformed request URLs (no slash following the host specified), and use a better check when POST-ing to decide the request-body data source.
2012-11-17 18:08:38 +00:00
Thomas Geymayer
9f31addfa5 Fix for old gcc which got broken by fix for VS 2012-11-16 16:49:35 +01:00
Thomas Geymayer
d56ea7e6c4 Fix for VS bug 2012-11-16 15:49:43 +01:00
Thomas Geymayer
1cbe271ad5 Nasal bindings: Always pass object by reference 2012-11-16 12:24:47 +01:00
Thomas Geymayer
33db3c377f One more fix for old gcc 2012-11-15 23:31:18 +01:00
Thomas Geymayer
a0535ef64d Fix compile errors for old gcc 2012-11-15 22:17:43 +01:00
Thomas Geymayer
392ba18ff7 Canvas/C++ bindings: automatically detect dynamic type of polymorphic exposed classes 2012-11-15 21:17:33 +01:00
Thomas Geymayer
e872f9e928 Work around Visual Studio bug 2012-11-13 12:35:12 +01:00
Thomas Geymayer
04685a8179 C++/Nasal bindings: allow registering free function as member 2012-11-12 23:28:00 +01:00
Thomas Geymayer
55fbe68e62 Missing include and more doxygen improvements 2012-11-12 13:57:10 +01:00
Thomas Geymayer
f51e1f0cc8 Fix file headers 2012-11-12 12:25:08 +01:00
Thomas Geymayer
d31b62d44d Add nasal::Ghost class for exposing C++ classes to Nasal 2012-11-12 12:11:41 +01:00
Mathias Froehlich
9fd90e26f7 hla: Remove HLADataElement::Path based attribute handling. 2012-11-11 20:39:59 +01:00
ThorstenB
dbea0c9361 Geoff McLane: realpath for Windows using _fullpath.
Also switch cygwin to use POSIX call.
2012-11-11 19:26:51 +01:00
Mathias Froehlich
201cb61f84 hla: Use HLADataElementIndices for HLAInteractionClass. 2012-11-11 17:09:31 +01:00
Mathias Froehlich
71141e830a hla: Use HLADataElementIndices for HLALocation. 2012-11-11 14:27:35 +01:00
Mathias Froehlich
7dc8bf3aa4 hla: Fixes for the data element index implementation. 2012-11-11 14:27:34 +01:00
Thomas Geymayer
0fef94cfdb Add from_nasal helper and fix to_nasal for std::vector. 2012-11-10 14:34:18 +01:00
ThorstenB
a9b45967ce gz wrapper to write and read "container files".
Packs arbitrary data (strings, property trees, binary blobs, ...) into a
single file.
Use this for storing/loading user-data only, not for distribution files
(scenery, aircraft etc).
2012-11-10 10:44:19 +01:00
ThorstenB
0928bca531 Proper fix for gzfilebuf choking on some files.
When reading a new block of data, and the first byte of the new block is
0xff (_signed_ char -1), then this must be converted to _integer_ 0xff
(+255), not -1 - which would indicate an error condition (EOF==-1). All
valid _data_ character must be returned as non-negative, see
streambuf::underflow spec, or compare with
http://www.opensource.apple.com/source/zlib/zlib-12/zlib/contrib/iostream/zfstream.cpp
or
http://www.raspberryginger.com/jbailey/minix/html/zfstream_8cpp-source.html
2012-11-10 10:12:01 +01:00
ThorstenB
77f73a79df gzfilebuf choked when reading large, heavily compressed files.
Apparently a 4K buf isn't enough. 64K seem much better ;-).
Real solution may be an adaptive buffer size in gzfilebuf.
2012-11-09 22:04:11 +01:00
Stuart Buchanan
279445d6bc For clouds, use a RNG seed that only changes every 10 minutes.
This allows multi-process deploymentes to keep their clouds in sync.
2012-11-09 20:25:53 +00:00
Thomas Geymayer
54778ee1e1 Some basic C++/Nasal binding helpers
- Add nasal::to_nasal for converting different C++ types
   to the according Nasal types.
 - Add nasal::Hash, an OOP wrapper around Nasal hashes.
2012-11-09 19:28:27 +01:00
Thomas Geymayer
4efcda534d Workaround for VS10 Bug/Remove superfluous class qualification 2012-11-09 10:36:42 +01:00
Thomas Geymayer
45ac5cb2fa Canvas cleanup and restructuring
- Add some methods for easier using the Canvas from C++
 - Add some documentation to Nasal
2012-11-09 00:05:11 +01:00
Mathias Froehlich
6d045a9403 hla: Introduce HLADataElementIndex. 2012-11-08 22:51:02 +01:00
Mathias Froehlich
8c57a77d7e hla: catch exceptions in processMessages() 2012-11-08 22:50:52 +01:00
Mathias Froehlich
1f585d6719 hla: Use raw pointers for HLAFederate::_insert methods. 2012-11-08 22:50:39 +01:00
Mathias Froehlich
6c111f55aa hla: Warn about creating an object class or interactions classes twice. 2012-11-08 22:50:26 +01:00
Mathias Froehlich
b01693f426 Remove osg header from non simgearscene file. 2012-11-08 22:50:10 +01:00
ThorstenB
e37232aeb4 Disable build options unsupported for Windows. 2012-11-08 20:01:38 +01:00
ThorstenB
1c1c7dad7b zfstream: use the correct buffer size 2012-11-08 00:04:48 +01:00
ThorstenB
b70b81f4cc sgstream: implement gzipped output file stream (gzofstream)
Add missing output implementation for gzfilebuf.
2012-11-07 23:45:01 +01:00
ThorstenB
e3cf41a666 zfstream: fixed mixed white spaces
otherwise unchanged
2012-11-07 23:45:01 +01:00
James Turner
851a307c23 Test for, and fix, materials handling in BTG code.
It's possible (and happens!) to have less than 2^16 vertices or tex-coords, but more than 2^15 objects (tris) with the same materials. This was breaking our version 7 vs version 10 detection logic. Pete found the issue, I'm simply committing a version of his fix.
2012-11-07 21:10:00 +00:00
Thomas Geymayer
183d3749f0 Fix SGPropertyNode tests 2012-11-07 09:31:56 +01:00
ThorstenB
3fe513f9e0 Fix property find_last_child/addChild.
Initial "addChild" should have index #0 (not #1).
Also extend test cases.
(Test case shows addChild(append=false) isn't working as expected!?)
2012-11-07 00:53:32 +01:00
Thomas Geymayer
81bee2bbc6 Jenkins has some problems with bind and lambdas. Let's try it with ordinary function pointers... 2012-11-06 19:34:23 +01:00
Thomas Geymayer
34719da000 Clean up Canvas element creation 2012-11-06 18:48:00 +01:00
Thomas Geymayer
df8a3d9c60 SIMGEAR_HEADLESS define is not needed anymore 2012-11-05 18:06:13 +01:00
Thomas Geymayer
53dea9b069 Move parseColor to scene/util
parseColor is used to parse a CSS color string into an osg::Vec4
which is only available in SimGearScene. If someone needs the
function also in SimGear headless mode we have to think about
where to better place this function.
2012-11-05 17:58:24 +01:00
Thomas Geymayer
186bae2bd4 Proper headless build fix 2012-11-05 13:35:06 +01:00
Thomas Geymayer
f83c8828f0 Fix windows and headless build 2012-11-05 12:59:15 +01:00
Thomas Geymayer
509d064286 No need to link to ShivaVG anymore 2012-11-04 23:48:51 +01:00
Thomas Geymayer
2d039e393a Include ShivaVG into libSimGearScene 2012-11-04 20:00:53 +01:00
Thomas Geymayer
9ab88d9387 Commited too fast... 2012-11-04 19:22:37 +01:00
Thomas Geymayer
882a2a0e52 Remove OpenVG dependency from header file 2012-11-04 19:21:33 +01:00
Thomas Geymayer
c6ce1d8c67 Fix adding ShivaVG include directory 2012-11-04 16:51:07 +01:00
Thomas Geymayer
77e1a2e4be Fix signed/unsigned comparison warning 2012-11-04 15:26:41 +01:00
Thomas Geymayer
b99f53fda3 Refactor Canvas and add some helpers.
- Refactor Canvas from FlightGear and fix lazy rendering with
   recursive canvases.
 - New classes PropertyBasedElement and PropertyBasedManager for
   creating subsystems controlled by the property tree.
 - New method parseColor to parse CSS 3 conformant color strings
   (only basic color schemes supported)
 - New Rect class representing a rectangle.
2012-11-04 14:12:05 +01:00
Mathias Froehlich
a7f64cf7aa scenery: put stg loaded models under a common lod node. 2012-11-01 07:19:38 +01:00
Thomas Geymayer
8ebc0f2b24 Add VGInitOperation for initializing OpenVG 2012-10-31 01:38:59 +01:00
Thomas Geymayer
5330dc34bc Helper for property controlled subsystems
- Subsystem which manages a list of elements which
   are controlled through the property tree.
 - Fix a ShivaVG compiler warning.
 - Add some helper functions to trigger property removed/add
   events for a whole property tree.
2012-10-29 16:11:35 +01:00
Frederic Bouvier
4854a9e320 No bzero in MSVC 2012-10-29 08:48:55 +01:00
James Turner
71be1a9e28 HTTP enhancements.
Support content-encoding and improve pipelining support.
2012-10-27 18:03:51 +01:00
Thomas Geymayer
d0ae09c7e2 Link with ShivaVG 2012-10-25 01:02:38 +02:00
Thomas Geymayer
a25bd06138 ShivaVG: Support for pseudo non-zero fillrule 2012-10-25 01:02:23 +02:00
James Turner
1b55076897 Fix a Clang warning in Shiva. 2012-10-25 00:44:48 +02:00
Thomas Geymayer
5eac7974c9 Add missing glx.h include and fix some warnings. 2012-10-25 00:44:47 +02:00
James Turner
3afd6e9f51 Fix OS-X compilation. 2012-10-25 00:44:47 +02:00
Thomas Geymayer
05c107ba9c Allow filling paths and do some clean up/fixing. 2012-10-25 00:44:47 +02:00
Thomas Geymayer
99b00daf87 Add ShivaVG sources 2012-10-25 00:44:47 +02:00
Christian Schmitt
8ddb99f62f pt_lights: 9 seconds+ break for the ODALS flash sequence is a bit too much. Set it to 2 seconds. 2012-10-23 19:09:56 +02:00
Peter Sadrozinski
47dec485e5 Add SGGeod read and write to gzFile 2012-10-22 15:34:16 +02:00
Thomas Geymayer
f191b4f35c Move FGODGauge from FlightGear to SimGear.
This is a first step for moving the Canvas system to SimGear to
make it accessible to other applications (eg.FGRadar is going to
use it)
2012-10-19 11:56:32 +02:00
Thomas Geymayer
e24e3c0612 Add method SGPropertyNode::addChildren to create multiple children at once 2012-10-14 17:26:52 +02:00
ThorstenB
1dfac0a8b9 Avoid randomness when processing directories.
Order of files in file system order is random (maybe different for every
user). Determinsm is good, i.e. when loading Nasal scripts in a fixed,
known sequence, or config files, where the later may overrule settings of
the earlier.
2012-10-13 15:44:21 +02:00
Thomas Geymayer
f5cc151618 Extend addChild to allow using first unused index 2012-10-13 15:07:18 +02:00
ThorstenB
1ff3a61de6 Move uppercase function to strutils. 2012-10-10 21:31:57 +02:00
Stuart Buchanan
81d5b651d2 Change default tree-max-density-angle-deg to 30 and tree-zero-density-angle-deg to 45, as redommended by Thorsten Renk to account for our scenery generally rendering slopes shallower than they are IRL. 2012-10-10 19:57:16 +01:00
Stuart Buchanan
ea4ed7cdd1 Reduce tree and object cover on steep slopes, configurable through materials.xml 2012-10-05 21:59:13 +01:00
ThorstenB
e30ea5206f Fix Linux compile: "free" needs stdlib.h.
Also move to .cxx file to avoid another include dependency in the header.
2012-10-04 21:11:35 +02:00
James Turner
c188f6e3cb Initial work on making OpenAL private to the sound code. 2012-10-04 16:47:13 +01:00
Mathias Froehlich
2fb8999ac2 scenery: remove default zero reader writer options argument. 2012-10-03 22:04:47 +02:00
Mathias Froehlich
9c9bfc1a98 scenery: Make sure makeEffects has reader writer options. 2012-10-03 21:59:09 +02:00
James Turner
f7a87789ab Improve decode_bin output slightly. 2012-09-30 16:44:22 +01:00
Mathias Froehlich
7bcf02a0b4 Handle isnan at a more central place.
Do not distribute architecture specific
code across a lot of places.
2012-09-27 18:44:14 +02:00
Mathias Froehlich
fcd1733787 Fix line segment plane intersect. 2012-09-27 18:21:13 +02:00
Mathias Froehlich
c04ec5953f bvh: Build bigger leaf nodes for paged bvh nodes.
Flatten the leaf nodes in the paged bounding volume tree
as good as possible. The implementation still assumes a
whole world database which actually holds for our usual
scenery.
2012-09-27 18:21:13 +02:00
Mathias Froehlich
63aa16b97c scene: Factor out a common primitive functor.
This kind of work is done two times for different
flavours of bounding volume generation. Factor
out and use this in BVHPageNodeOSG.cxx and
BoundingVolumeBuildVisitor.hxx.
2012-09-27 18:21:13 +02:00
Mathias Froehlich
cafbf860be bvh: Make BVHPageNode::_Request fields private. 2012-09-27 18:21:13 +02:00
Frederic Bouvier
700b0bc776 Provide a definition for GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 2012-09-26 08:38:04 +02:00
Frederic Bouvier
98ca36e8f5 MSVC has no std::isnan 2012-09-26 08:36:56 +02:00
Stuart Buchanan
25130e3c82 Add alpha-to-coverage GL parameter to effects code. 2012-09-25 22:51:37 +01:00
James Turner
dc463d1c2c Macro to disable the copy-constructor.
Another toolkit I use has an explicit macro for this, which is nice for readability, so I've borrowed it here.
2012-09-24 23:18:57 +01:00
James Turner
89d30acbc5 SGTime: use SGGeod, quieter init.
It's common to use SGTime to calculate the the Julian Date, without providing time-zone information. Don't warn in these cases, since the behaviour is fine.
2012-09-24 00:02:11 +01:00
James Turner
be405d2311 Add another overload of SGGeodesy::direct 2012-09-23 21:43:42 +01:00
ThorstenB
acbe42775c Sound Manager: support subsystem reinit,
move initialization stuff to standard init phase.
Prevent AL calls when sound was never initialized.
2012-09-21 15:06:58 +02:00
ThorstenB
42d8772dd6 Avoid signed/unsigned compiler warning.
We don't really need a signed int here.
2012-09-21 12:55:40 +02:00
Christian Schmitt
81ef922f02 mat.cxx: fix an error reported by Valgrind 2012-09-19 10:10:14 +02:00
James Turner
d6e18c8a35 Support for incremental init of subsystems.
Allow subsystem init to be incremental, i.e requiring repeated init calls until a 'done' code is returned. Use this to support incremental init in groups and the manager. (It would also be possible to support it in an individual subsystem).

Note that if you use the existing init() calls, behaviour is unchanged.
2012-09-18 20:26:28 +01:00
Frederic Bouvier
4993a5c6c0 Sort fgfs source files in IDE folders - Don't work for headers though 2012-09-16 21:19:11 +02:00
Mathias Froehlich
052382af89 cmake: Make rti/hla compile again. 2012-09-16 21:13:56 +02:00
Mathias Froehlich
18f7102461 stg: Fix typo. 2012-09-16 18:43:05 +02:00
James Turner
ddbb2bea8a Option to use system, instead of built-in, expat
At least one Linux distribution packager of FG has complained that we're bundling expat in our binaries. To keep them happy, add the option (-DSYSTEM_EXPAT=1 at cmake time) to use the system expat instead.

For the moment (and simplicity), this requires building SIMGEAR_SHARED (which is fired to on by selecting the option).
2012-09-16 17:07:35 +01:00
ThorstenB
27131b43cb Add convenience method for tiedPropertyLists 2012-09-16 17:58:44 +02:00
James Turner
e8c2483432 De-virtualise SGSky to avoid a clang warning.
Clang was complaining that SGSky has virtual methods, but no virtual destructor. It turns out we're never subclassing SGSky - it's used directly. Hence, remove all the 'virtual' attributes from its methods.
2012-09-16 16:34:10 +01:00
James Turner
fd495574a4 Kill off MIPS compatibility header.
CMake has never supported the MIPS compatibility headers, or indeed building using MIPSpro. If someone wishes to re-add MIPS/IRIX support, I'm hoping they will be using a compiler with functional standard library headers!
2012-09-16 16:27:22 +01:00
James Turner
12f85b3d1f Add an SG_UNUSED macro to SimGear.
Imitate Q_UNSUED from Qt, and provide a Simgear 'unused var' warning suppression macro. Fix up one place where the previous warning suppression attempt (assigning to self) was still producing a warning under clang.
2012-09-16 16:25:11 +01:00
James Turner
47d88bcfa7 Standardise SimGear libraries, for static vs shared.
Always create only two SimGear libraries: SimGearCore and SimGearStatic, regardless of whether we're building static or shared. This requires an updated to FindSimGear.cmake module, for the static configuration.
2012-09-16 16:04:08 +01:00
Christian Schmitt
e4dacaf0d2 pt_lights: softly fade in and out the blinking lights 2012-09-14 17:07:07 +02:00
Christian Schmitt
2906a2d007 pt_lights: add some randomness to the blinking interval of the hold short lights 2012-09-14 10:14:31 +02:00
Stuart Buchanan
3000fdc33c Improve memory occupancy and load time of random buildings. 2012-09-12 22:45:12 +01:00
Christian Schmitt
076bde34a2 Scene: use better clipping mode for material textures.
This eliminates the black borders on runways between threshold and
designation textures and also between two designation numbers.

Thanks to Emilian for tracking this down!
2012-09-12 12:26:01 +02:00
Christian Schmitt
836c563c89 Signs: if the size is not allowed by the spec, print out a more meaningful warning
to help identify the problematic line.
2012-09-04 10:31:36 +02:00
ThorstenB
78c0419007 Fix libsvn detection for some Linux distros
Distros like Debian/Ubuntu use architecture-specific directory structures
(like /usr/lib/x86_64-linux-gnu) which we cannot hardcode/guess, so we
really need to search the default paths.
2012-09-03 23:51:38 +02:00
Frederic Bouvier
9dd5b91cea Support MS VS2012 2012-09-03 17:32:26 +02:00
Frederic Bouvier
b4c8b00c0e Try to discover the most recent Boost version installed in MSVC_ROOT (Windows only) 2012-09-02 12:43:21 +02:00
Frederic Bouvier
430e72b424 Ugly hack to please Boost 1.51.0 2012-09-02 12:22:20 +02:00
Christian Schmitt
135a8102f0 Remove plib dep references from documentation files 2012-08-29 12:08:27 +02:00
Christian Schmitt
c9cf4ad02a Remove plib reference 2012-08-28 13:04:25 +02:00
Christian Schmitt
3001809bc3 Remove unused source files 2012-08-28 12:59:33 +02:00
Julian Ospald
9e77ff328e CMake: fix underlinking 2012-08-28 11:30:49 +02:00
Mathias Froehlich
efddcb18a3 bvh: Fix headless build. 2012-08-27 18:00:01 +02:00
Mathias Froehlich
54ff2bec90 scene: Allow ground based elevations in stg files.
PLEASE do not use this feature for many objects over
fine tesselated ground. But for convenience make this work.
2012-08-26 15:08:55 +02:00
Mathias Froehlich
287ed83de7 btg: Lights are much better visible. 2012-08-26 15:08:48 +02:00
Mathias Froehlich
dd13924a67 bvh: add missing include. 2012-08-26 15:08:42 +02:00
Mathias Froehlich
a050a3b80f scenery: OptionsReadFileCallback for use with reader writer options.
The new callback has a default implementation of the callback
methods that do call back into the registrys callback before
calling the registrys implementation directly.
This is meant to be used together with ReaderWriterOptions that
still want to call back into the normal callback chain of the
registry.
2012-08-26 15:08:33 +02:00
Mathias Froehlich
f1201eaebc scene: Reorganize stg loading.
This is in preparation loading the non btg objects
in a seperate page node. Reorganize this code again.
2012-08-26 15:08:20 +02:00
Mathias Froehlich
68dd50ecbc stg: Add flag to load only specific parts of the stg files.
The flags are meant to be used for fgelev and for an ai
module that will probably only need ground elevation queries
in those reagions where the aircraft simulated there will roll
that is on airports.
2012-08-25 08:47:09 +02:00
Mathias Froehlich
2129cf5aa6 bvh: Implement paging for osg derived bvh trees. 2012-08-24 21:25:26 +02:00
Mathias Froehlich
cf1bdcef46 bvh: Add an abstract pager implementation.
Implement a paging implementation for bounding
volume hierarchy nodes. We will need this for
hla clients that need ground queries.
2012-08-24 21:25:17 +02:00
Mathias Froehlich
7a879e2abf bvh: Introduce BVHMaterial independent of SGMaterial.
The bounding volumes in core should not depend on scenery.
Therefore reference material properties relevant for the BVH
tree in BVHMaterial.
2012-08-24 21:25:11 +02:00
Mathias Froehlich
22878b6f89 bvh: Move the basic bounding volume tree functionality into core.
The basic boundignvolume implementation does only need math and
geometry. As such it is agnostic to the scenegraph being used.
Only the parts building this query structure from terrain
depend on the implementation of the terrain.
So, move this into the simgear core component.
2012-08-24 21:24:57 +02:00
James Turner
e99064ca18 Refactor mat.hxx header.
Avoid many includes in mat.hxx, so ground testing code (e.g., Yasim) doesn't end up pulling in many OSG and scene classes.
2012-08-22 19:02:46 +01:00
James Turner
b93661508e Fix more Linux warnings/errors.
(I'm away from the VM I would normally use to test such things before pushing, apologies for the churn)
2012-08-21 23:49:30 +01:00
James Turner
27ade6c420 Fix tests linkage when building static libs. 2012-08-21 22:55:04 +01:00
James Turner
473249d605 Unbreak Linux: malloc() needs <cstdlib> 2012-08-21 22:49:36 +01:00
James Turner
62cf65ce0f Remove a couple of lingering alut references. 2012-08-21 19:25:33 +01:00
James Turner
c4f6aa2f90 Remove ALUT usage from SimGear .
Adapt the freealut code into a WAV-file reader. As a side-effect, it would now be possible to deploy WAV files compressed with gzip, since we use ZLib's gzread functions to read from disk.
2012-08-21 13:24:35 +01:00
Frederic Bouvier
9ca112c362 Compatibility fix 2012-08-18 14:53:48 +02:00
ThorstenB
cdcc17ee37 Christoph Korn/PlayDeb.net: support additional architechtures 2012-08-17 23:48:41 +02:00
Frederic Bouvier
4f3e1587b1 Restore auto-detection of SVN libs on Windows 2012-08-15 23:02:29 +02:00
Mathias Froehlich
b18c92f515 hla: Add virtual method for creating data elements. 2012-08-12 12:06:42 +02:00
James Turner
3270edcf87 Mac changes for Subversion bundling. 2012-08-11 15:21:52 +01:00
Tim Moore
c0e8dd97ae change dynamic variance of effect attributes
Previously, any effect attribute that was set via effect parameters i.e., was
not a constant value, was marked with data variance DYNAMIC. Now, only
attributes that get their values from the property tree are so marked.
2012-08-06 11:04:42 +02:00
Mathias Froehlich
3a0ae3df58 hla: Do not call time advance with non positive increment. 2012-08-04 14:38:10 +02:00
Tim Moore
d6361dfee4 Merge branch 'timoore/optimizations' into next 2012-08-03 22:33:57 +02:00
Tim Moore
b61692b667 add libosgGA to OpenSceneGraph libraries used with tests
The DeletionManager needs osgGA. This becomes apparent when building shared
libraries.
2012-08-03 22:32:39 +02:00
Tim Moore
2815688c7e Merge branch 'timoore/optimizations' into next 2012-08-03 20:15:36 +02:00
Tim Moore
78a78a17cc DeletionManager
Class for safely deleting objects that may be active in different threads.
This is now used in the implementation of spin animations.
2012-08-03 20:10:53 +02:00
Tim Moore
e202d4e4a5 bug: 823 change rotation animation to use a subclass of SGRotateTransform
The animation is implemented in the computeWorldToLocalMatrix() and
computeLocalToWorldMatrix() virtual functions. Doing the animation in a cull
callback breaks picking.

Fix for http://code.google.com/p/flightgear-bugs/issues/detail?id=823
2012-08-03 20:10:00 +02:00
Stuart Buchanan
8b585db238 Allow a <parameters> section of a material definition, to pass parameters straight into the effect. 2012-08-01 21:06:59 +01:00
James Turner
e288549c9e Make dependent template lookups explicit.
Clang (in Xcode 4.4) is being strict about dependent lookup rules, so apply the recommended fix-it.
2012-07-31 00:57:09 +01:00
Mathias Froehlich
f71f129e3b hla: Remove reference to deprecated VariantDataType. 2012-07-29 20:58:07 +02:00
Mathias Froehlich
ee688166ab hla: Remove deprecated ObjectModelFactory interface. 2012-07-29 20:44:58 +02:00
Mathias Froehlich
ed66c37de2 hla: Remove deprecated AttributeCallback. 2012-07-29 17:33:19 +02:00
Mathias Froehlich
a5c6f8023b spt: Disable particle systems under a PagedLOD. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
c82da8c9c8 hla: Add HLABoolDataElement. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
07d1358e08 hla: Make HLAFixedRecordDataElement work with delayed data type setting. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
1212109c03 math: Remove obsolete commented out code. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
d4db4fcac3 hla: Remove deprecated methods from HLAObjectClass 2012-07-21 12:55:53 +02:00
Mathias Froehlich
1f46c79396 hla: Remove deprecated tick method. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
199419ae62 hla: Remove deprecated types and methods from HLADataElement. 2012-07-21 12:55:53 +02:00
Mathias Froehlich
39a4d55866 hla: Remove deprecated HLAVariant* in favour of HLAVariantRecord* 2012-07-21 12:55:53 +02:00
Tim Moore
c84e1d0f0e Merge branch 'timoore/optimizations' into next
Some changes aimed at reducing the cost of the huge scene graph.
2012-07-20 00:37:39 +02:00
Tim Moore
302deeb122 set name string for update callbacks
This makes it easier to find nodes with update callbacks in the scene graph dump.
2012-07-20 00:34:47 +02:00
Tim Moore
b2a6cdec4e change optimizer options for models
Tristrips are old and busted, index meshes are the new hotness :)
2012-07-20 00:32:22 +02:00
Tim Moore
87676fad4d prune empty quadtree leaves created for random vegatation
A lot of empty primitive sets were being left in the per-tile random vegatation quadtree.
2012-07-20 00:30:53 +02:00
Tim Moore
75087095b1 Replace rotation animation update callbacks with cull callbacks
Update callbacks are expensive because they force large parts of the scenegraph to be traversed
by OSG.
2012-07-19 00:42:38 +02:00
ThorstenB
d0a5032723 Add warning for in-source-directory builds. 2012-07-17 19:18:05 +02:00
ThorstenB
2d6a7c2cf7 Add dot-files to gitignore. 2012-07-17 19:14:45 +02:00
ThorstenB
56e9158dee Bump simgear version to 2.9.0 2012-07-17 18:48:38 +02:00
Frederic Bouvier
3ba312116b Add a node mask bit for permanent lights (needed by Rembrandt) 2012-07-16 20:06:53 +02:00
Frederic Bouvier
e6ab3ddb7d More node mask fix 2012-07-14 13:00:30 +02:00
Stuart Buchanan
8ed0fec364 Fix degenerate random building placement case which resulted in buildings
being placed outside of the triangle bounds.
2012-07-13 20:00:06 +01:00
Frederic Bouvier
ddfdbd75b8 Precipitation don't cast shadows 2012-07-13 17:53:00 +02:00
Stuart Buchanan
00e21af5bb Correct index used by building.eff for lightmap. 2012-07-12 16:31:27 +01:00
ThorstenB
51a17a7a0f Suppress unnecessary "failed alias" warnings
when requested alias matches existing alias anyway (identical aliases can
be created on repeated sim resets)
2012-07-07 16:05:02 +02:00
Stuart Buchanan
fa58672f09 Fix bug where two references to a png object mask used against
a dds terrain texture resulted in the object mask being flipped twice,
having no overall effect!
2012-07-06 21:38:15 +01:00
Stuart Buchanan
4f7f5023df Fix further possible memory leaks by using osg::ref_ptr for vertex
arrays in random buildings and random vegetation.  Also change
normals on trees to be per-vertex as some graphics cards apparently
find this easier to deal with.
2012-07-05 00:10:07 +01:00
Stuart Buchanan
4838a9690e Fix a memory leak in random buildings. 2012-07-04 19:50:20 +01:00
ThorstenB
edcbfb52eb Add SimGear RPM package spec file.
Example for Linux package builders.
2012-07-02 21:51:40 +02:00
Frederic Bouvier
5af8bb7c8e Working 'noshadow' animation 2012-06-30 16:25:21 +02:00
ThorstenB
3fa835d74c Bump version to 2.8.0
since "next" is already frozen for 2.8 and is prepared for building the
first release candidate.
For details on versions see http://wiki.flightgear.org/Release_plan
2012-06-26 23:17:07 +02:00
ThorstenB
035ff3e1ea Update README/INSTALL documentation. 2012-06-26 22:43:48 +02:00
Frederic Bouvier
2c54237fe5 Don't render ocean tiles in the light pass 2012-06-25 17:55:46 +02:00
Frederic Bouvier
00c61204a4 Fix a typo 2012-06-25 11:58:49 +02:00
Frederic Bouvier
284aa3a444 Add header file to the cmake project 2012-06-25 11:58:22 +02:00
Frederic Bouvier
f0b7a27fd4 Duplicate light effect when animation is requested. Make dimmed lights work in multiplayer 2012-06-24 23:06:12 +02:00
ThorstenB
a781eea10e #744: Raise warning level when reporting missing svn library.
Status message are almost invisible - use warning message instead, so
builders/packagers actually notice a missing dependency.
Also add some useful hints.
2012-06-24 20:04:26 +02:00
ThorstenB
8e42e5bdba Fix error handling in SGSampleGroup::stop
Move error check to correct location: needs to be done immediately after
the alSourceStop call - and only if it was called at all.
2012-06-24 19:18:47 +02:00
James Turner
ad4a9eeaa5 Remove (un-maintained) MSVC projects from the tree prior to the next release. 2012-06-23 10:26:28 +02:00
Christian Schmitt
190e6b3958 Taxiway signs: print out more meaningful error messages on wrong size
settings and fall back to the default value in such cases.
2012-06-22 14:39:45 +02:00
James Turner
8a33223483 Use standard version of FindPackageStandardArgs, no need to copy it. 2012-06-21 10:21:26 +02:00
James Turner
0e4eab1569 Improve ALUT framework detection (for Mac)
Latest Xcode no longer searches /Library/Frameworks by default which exposed an issue here. Search for the header by the correct name to trigger special -F handling in cmake.
2012-06-20 19:44:16 +02:00
Stuart Buchanan
9d6e27c85c Do not attempt to reposition non-existant clouds.
Defensive workaround to Issue 678.
2012-06-19 22:04:17 +01:00
ThorstenB
9720f8ca16 Patch clean-up 2012-06-19 22:15:33 +02:00
Harald JOHNSEN
5b3dccc1f7 - stop sounds when removing a sound group 2012-06-19 22:14:14 +02:00
Markus Pargmann
e0df014acf Signs change <= to < 2012-06-18 20:47:05 +02:00
Markus Pargmann
de3d433ead Airport sign size 3 bugfix 2012-06-18 20:47:05 +02:00
Frederic Bouvier
3407db3dd6 Avoid an annoying OSG warning 2012-06-17 17:52:17 +02:00
Christian Schmitt
b10a40ff8d Taxiway signs: support all variants from the apt.dat 850 spec and
read size values from the optional stg column
2012-06-13 19:45:13 +02:00
Christian Schmitt
ec22623f1c Add helper method for optional stg values
Anders Gidenstam: Style and indentation.
2012-06-12 21:04:22 +02:00
Frederic Bouvier
7e8fb16507 Static or shared objects are not light volumes (but can include some) 2012-06-11 09:12:47 +02:00
Frederic Bouvier
a634d7c361 Terrain tiles are not light volumes 2012-06-11 09:11:52 +02:00
Harald JOHNSEN
aae77a7983 remove some warnings for MSVC
don't start to play sounds that are out of range of the listener
2012-06-08 15:23:54 +02:00
ThorstenB
3f6f34e7e1 Drop obsolete TODO 2012-06-08 13:53:15 +02:00
ThorstenB
eff1541ba3 Add INSTALL and README.cmake files. 2012-06-08 13:20:03 +02:00
Frederic Bouvier
e7e06c89e1 Fix lights when added as submodels 2012-05-31 20:22:40 +02:00
Frederic Bouvier
a41d5b1609 Restore lights in the Rembrandt renderer 2012-05-30 22:18:57 +02:00
James Turner
edbea633f3 Merge a tweak from Tat to keep Mac 10.5 from crashing on realpath 2012-05-30 11:08:11 +01:00
James Turner
950af5375c KIll of SimGear route code, it's no longer used by anything. 2012-05-30 11:07:36 +01:00
Stuart Buchanan
c6d2e32f05 Add logging for the total number of random buildings generated. 2012-05-25 19:47:45 +01:00
Mathias Froehlich
3796ce4d86 Runway signs: avoid adding empty group without signs. 2012-05-21 07:25:14 +02:00
Anders Gidenstam
ffb67f4014 Clement de l'Hamaide: Add support for pitch and roll for OBJECT_SHARED and OBJECT_STATIC in .stg files.
Pitch and roll behave the same as pitch-deg and roll-deg offsets in
model XML files.
2012-05-20 22:21:38 +02:00
Frederic Bouvier
d479686804 Try to exclude unwanted geometry in the additional light pass 2012-05-20 15:42:55 +02:00
Frederic Bouvier
1387f47a79 Remove redundant inclusion of SGMath.hxx 2012-05-20 11:49:31 +02:00
Frederic Bouvier
65784896e1 Revert "Hack to avoid redrawing the whole scene another time when only light volume are requested"
This reverts commit e692e7c119.
2012-05-19 20:41:58 +02:00
Frederic Bouvier
e692e7c119 Hack to avoid redrawing the whole scene another time when only light volume are requested 2012-05-19 19:39:38 +02:00
Mathias Froehlich
23d4628d88 ReaderWriterSPT: Cull out tiles that we look at from downside.
Add a cull callback that culls away complete tile areas that
we look at from the far away downside.
2012-05-19 16:09:58 +02:00
Frederic Bouvier
38c335c339 Allow to change texture buffer name on the fly 2012-05-18 12:27:08 +02:00
ThorstenB
e69d1b5a82 #767 related: fix sound resource management
Use _smgr->release_buffer instead of direct alDeleteBuffers.
2012-05-12 23:35:10 +02:00
Frederic Bouvier
6695b918ea Allow to specify buffer name from parameters in effects 2012-05-12 00:16:19 +02:00
Frederic Bouvier
2b9072417b Use names to identify deferred buffers
Change effect syntax for buffers
2012-05-12 00:16:17 +02:00
James Turner
6cf2224146 Updated sign case UV calculation from Christian. 2012-05-11 10:00:35 +01:00
James Turner
a1f74729ab build signs for an STG into single geometry. 2012-05-11 09:50:26 +01:00
James Turner
71443d1c9a Phase 1 - single geometry per material 2012-05-11 09:50:26 +01:00
Stuart Buchanan
a83f5deaac Updates to buildings and trees
1) Clean up after ourselves - remove memory leak
2) Face buildings the right way
2012-05-10 23:03:38 +01:00
Christian Schmitt
234e778e8f Add support for double-sided taxiway signs and create 3D models for them 2012-05-05 13:39:07 +02:00
Christian Schmitt
0bdeaeb4e2 Remove unused SGMakeRunwaySign function. 2012-05-05 13:39:07 +02:00
Frederic Bouvier
cc37713a66 Remove redundant inclusion of math/SGMath.hxx 2012-05-05 11:19:20 +02:00
ThorstenB
6129de31f0 Fix C compiler warning.
"no-overloaded-virtual" warnings are a CXX-compiler feature
2012-05-05 09:46:11 +02:00
ThorstenB
0908f86714 Fix rpmlint/Linux packager complaints
about outdated/invalid FSF address in some license headers.
2012-05-05 01:41:45 +02:00
ThorstenB
31ed79fe43 Fix rpmlint/Linux packager complaints
about outdated/invalid FSF address in some license headers.
2012-05-05 00:30:16 +02:00
ThorstenB
1af2ad12bf openSUSE "more architectures" patch
(Alpha anyone? ;-) )
2012-05-05 00:18:26 +02:00
ThorstenB
44db6d9e44 Move vector property templates to separate header file.
Fixes the "weirdness" with MSVC complaining about incomplete class specs,
since forward declarations (SGMathFwd.hxx) are used in props.hxx only.
Only the few extended (vector) property templates require including the
full SGMath.hxx (with MSVC) - and these are used in few places.
2012-05-05 00:07:07 +02:00
ThorstenB
6e662fe4d6 Ganael Laplanche: fix include dependencies for FreeBSD support 2012-05-04 23:24:10 +02:00
ThorstenB
067ff4f8ed Fix signed vs unsigned compiler warnings 2012-05-04 23:13:54 +02:00
Stuart Buchanan
91cf3d4def Fixes to Random Buildings:
1) Correct texture mapping so textures aren't flipped!
2) Add constraints to medium buildings (not taller than they are wide)
2012-05-04 21:12:41 +01:00
Frederic Bouvier
1eb846a93a Revert "Temporary hack to make the new version of expat build under windows"
A proper fix has been provided

This reverts commit 655971208f.
2012-05-04 20:48:04 +02:00
James Turner
56661afc05 Change how HAVE_EXPAT_CONFIG_H is defined, to hopefully fix MSVC properly. 2012-05-04 10:10:46 +01:00
Frederic Bouvier
655971208f Temporary hack to make the new version of expat build under windows 2012-05-04 09:09:11 +02:00
James Turner
d3ab2d3fbc Missed files from previous commit, needed for Windows. 2012-05-03 18:55:13 +01:00
James Turner
65aca6607e Update to latest expat for improved BOM / encoding handling.
(Related to http://code.google.com/p/flightgear-bugs/issues/detail?id=635)
2012-05-03 17:29:16 +01:00
Stuart Buchanan
e44eb39046 Emissive lighting for random buildings. Requires up to date fgdata. 2012-05-01 22:35:42 +01:00
ThorstenB
ab7d2a4bcc Allow "texture-path" XML entries to be present but empty.
This had worked with previous FG versions and is used by many models -
so it shouldn't be treated as an error now.
2012-04-30 18:29:44 +02:00
Frederic Bouvier
87c744b88b Use observer_ptr to cache light effects 2012-04-29 13:25:15 +02:00
Frederic Bouvier
dfc4b1564f Nasal is C code, not C++ 2012-04-29 00:17:38 +02:00
Stuart Buchanan
db6e99f885 Use Effects system for random buildings. 2012-04-28 23:11:52 +01:00
James Turner
35681e3adf Strange, somehow missed this file in last commit. 2012-04-28 23:08:05 +01:00
James Turner
a5ca531aac Nasal Ghosts can optionally specify member get/set functions. 2012-04-28 22:25:57 +01:00
Stuart Buchanan
2daf895d00 Reduce the number of Drawables generated by the random buildings by reducing the number of levels of the quad tree, and reducing the number of different
fade-out distances generated.
2012-04-28 20:02:42 +01:00
Stuart Buchanan
1041445a22 Change random object placement to a grid-like scheme to reduce building overlap. 2012-04-28 19:58:09 +01:00
Christian Schmitt
f712bc9294 Implement blinking hold-short line lights
This is supported by the apt.dat 850 format and latest TG
2012-04-26 15:02:33 +01:00
James Turner
2d174d0b14 Convert random buildings to avoid use of BIND_PER_PRIMITVE.
(which pushes me to a slow OSG path)
2012-04-26 00:18:47 +01:00
ThorstenB
dd54f6938e #717: Disabling advanced weather crashes the sim
Protect from a NULL-pointer segfault in SGCloudField::removeCloudFromTree
when disabling advanced weather (may just fix a symptom).
2012-04-25 21:08:37 +02:00
Frederic Bouvier
6e0e74a7d9 No round function for MSVC (forgot the template argument) 2012-04-25 08:59:04 +02:00
Frederic Bouvier
6a90696820 No round function for MSVC 2012-04-25 08:54:57 +02:00
Stuart Buchanan
f9bf403fc0 Random buildings - initial commit. 2012-04-24 22:00:35 +01:00
James Turner
0c13fb7ae4 Fix latent bug in Nasal hash cget / cset functions, where the embedded string length
was set to an incorrect marker value.
2012-04-23 22:29:54 +01:00
ThorstenB
9a113bdb44 Revert "Add virtual destructor to SGReferenced."
As suggested by Mathias, will use different solution.
This reverts commit 4abcf3215f.
2012-04-23 19:41:09 +02:00
James Turner
69ef461e6d Merge commit 'refs/merge-requests/22' of git://gitorious.org/fg/simgear into merge-requests/22 2012-04-23 12:21:50 +01:00
ThorstenB
4abcf3215f Add virtual destructor to SGReferenced. 2012-04-21 20:50:07 +02:00
Frederic Bouvier
4b607d6484 Revert "Remove ambient component of additional lights" because this was Yet Another Bad Idea
Ambient light is attenuated so it is possible to achieve smooth edges with it

This reverts commit fe8ba57c94.
2012-04-18 19:56:31 +02:00
Frederic Bouvier
fe8ba57c94 Remove ambient component of additional lights
It creates artifacts at edges of light volumes and should come from the main light source (sun and moon) anyway
2012-04-16 08:25:59 +02:00
Frederic Bouvier
de191107a9 light animation: avoid that similar effects are merged 2012-04-14 23:16:23 +02:00
Frederic Bouvier
77b8b278ea Ensure uniform are there before trying to use them 2012-04-14 18:00:42 +02:00
Frederic Bouvier
4758447370 Add a <dim-factor> parameter in the light animation
<dim-factor> contains a <property> element, and optionally <factor>,
<offset>, <expression>, <interpolation>, <min> and <max>
2012-04-14 09:57:20 +02:00
ThorstenB
77909577e4 Error messages when installing property aliases fails. 2012-04-05 20:03:07 +02:00
ThorstenB
1a835a2e1b performance monitor: start measurement interval with a fresh timestamp. 2012-04-05 19:30:00 +02:00
James Turner
8d0330675a Set the filename as the OSG object name on shaders - should have done this years ago :) 2012-04-04 16:44:23 +01:00
Frederic Bouvier
95a9d7a229 Revert "Disable LOD when rendering to the shadow map."
This reverts commit b95fb48a16.
2012-04-02 23:37:18 +02:00
ThorstenB
2fed46e222 performance monitor improvement
Record cumulative time consumed (all time) and current total time (current
measurement only) for subsystems.
2012-04-02 20:47:27 +02:00
ThorstenB
9ad070871a Use observer_ptr::lock for thread-safe pointer retrieval.
Also revert to using ref_ptr for the top-level EffectMap, since it holds
elements no one else references (and don't affect memory much).
2012-04-02 20:47:27 +02:00
Frederic Bouvier
b95fb48a16 Disable LOD when rendering to the shadow map.
Produce few NaNs at start
2012-04-01 23:06:32 +02:00
Mathias Froehlich
29462005b7 Fix typo in SGGeodesy.
Pointed out by Carl Godkin.
Thanks!
2012-04-01 17:50:49 +02:00
Frederic Bouvier
4de05629ee Shadow map now available in effects 2012-03-31 22:40:39 +02:00
ThorstenB
2b62411a78 Remove dead code. 2012-03-28 22:55:40 +02:00
ThorstenB
6fa4c7e138 Add file name to error message. 2012-03-28 22:54:27 +02:00
ThorstenB
ece38a6dbf Fix growing memory consumption issues
References in simgear's cache maps prevented effects, textures, clouds,
trees and lights from being unloaded at run-time (ref-counter could never
reach 0). Changed cache maps to use OSG 'observer' pointers instead, so
reference counters aren't influenced, though cache maps still hold an
(observing) pointer. Also take care when finding a cache entry with empty
content (i.e. texture was unloaded).
2012-03-28 22:53:30 +02:00
Mathias Froehlich
a592488f3e scenery: Remove redundant setting the property root.
The same value was extracted out of the same options value
in the code above. So, skip resetting to the same value.
2012-03-28 07:47:31 +02:00
Mathias Froehlich
191675cc79 scenery: Only run SGModelData in the topmost model.
It looks like that we loose the nasal script stored
in the property tree when this callback is issued
multiple times.

This should fix
 http://code.google.com/p/flightgear-bugs/issues/detail?id=714
2012-03-28 07:44:41 +02:00
Mathias Froehlich
df2e5bf39f Revert "scenery: Use correct property root in xml loading."
This helps for one symptom but it does not fix the
underlying problem. So ...

This reverts commit 986d2cc42a.
2012-03-28 07:34:36 +02:00
ThorstenB
ac29faf3bb osg::Uniform::get does not return a value on error.
Fixes "usage of uninitialized data" errors reported by valgrind.
2012-03-26 21:00:10 +02:00
Frederic Bouvier
94eabf6220 Merge Specular and Emission buffers 2012-03-25 14:14:14 +02:00
Frederic Bouvier
40bc0cbd48 Compile under MSVC 9 2012-03-25 14:14:12 +02:00
ThorstenB
b55e9df70a Don't crash when "avionics == NULL". 2012-03-22 23:54:01 +01:00
Mathias Froehlich
986d2cc42a scenery: Use correct property root in xml loading.
Really query for the root node when loading xml files.
This should fix
 http://code.google.com/p/flightgear-bugs/issues/detail?id=714
2012-03-22 08:38:16 +01:00
ThorstenB
0b8bfd9ed8 More checks/error messages for missing files,
checking return value of findDataFile.
2012-03-17 10:15:31 +01:00
ThorstenB
eff0c610e2 More consistent indentation. 2012-03-17 10:02:43 +01:00
ThorstenB
ca97e67511 Avoid segfault when a texture file is missing.
Always check the return value of "findDataFile". If it's empty, always
provide the _original_ path being searched in an error message. Otherwise
we eventually just get useless 'Can't find file "".' error messages
(and also a segfault here, since osgDB::readImageFile("") returns NULL).
2012-03-17 10:02:13 +01:00
James Goppert
47c2dce26d Removed include breaking headless build. 2012-03-16 23:04:24 +01:00
James Goppert
619163d40e Fixed mingw build. 2012-03-16 23:04:24 +01:00
Mathias Froehlich
b11c13fb9f scenery: Really, most people don't care for the noise. 2012-03-16 07:27:44 +01:00
Mathias Froehlich
a5435b7d8c scenery: Make stg loader files members of the loader. 2012-03-16 07:22:16 +01:00
Mathias Froehlich
b5fb829468 scenery: TileEntry and TileCache have moved back to flightgear. 2012-03-15 20:43:31 +01:00
Mathias Froehlich
43fceaf3a4 scenery: Move the stg read code.
Move the code reading the stg files
into ReaderWriterSTG.cxx.
2012-03-15 20:33:12 +01:00
Mathias Froehlich
8cb8395a24 scenery: ModelLoadHelper is no longer needed. 2012-03-15 20:08:38 +01:00
Mathias Froehlich
2a2be51b8f scenery: move static ReaderWriter proxies around.
Not yet sure where they end, but make sure they are currently pulled.
... now watching jenkins.
2012-03-15 19:45:51 +01:00
Mathias Froehlich
5a5d65134e scenery: Accumulate stg files until we find an OBJECT_BASE.
This should recover most of the old scenery loading behavior
before the last change. The z-fighting due to model duplication
does not happen over solid ground. Sea tiles are still broken.
2012-03-15 08:02:35 +01:00
Mathias Froehlich
0a96f4e145 scenery: Allow switching off particle systems on scenery load. 2012-03-11 14:20:33 +01:00
Mathias Froehlich
ba21713329 scenery: Allow switching off bvh generation. 2012-03-11 14:20:07 +01:00
Mathias Froehlich
32ef925a79 hla: Add convenience function to set version by string. 2012-03-11 09:21:47 +01:00
Mathias Froehlich
c62c778c88 hla: Enalble creating object instances without object class.
This enables creating HLAObjectInstance instances without
valid initial object class pointer. This is useful for local
implemented object instances.
2012-03-10 14:26:19 +01:00
Mathias Froehlich
2f0a6fdb67 hla: Remove old comment. 2012-03-10 08:30:02 +01:00
Torsten Dreyer
70ec13e10b Make the sky disable cutoff distance configurable 2012-03-09 20:58:24 +01:00
Mathias Froehlich
3693e3600c scenery: rework stg loading code.
This change reworks the code block loading the stg files.
It fixes a long standing problem where we end up loading
similar models from different entries of the scenery
path at the same geographic location. This usually results
in models that appear to have z figting, even if the isolated
model does not show z fighting at all.
As a result the lookup sequence for models and scenery has
changed a bit. This should be closer to what it supposed to
be and did not show any problems on the areas and sceneries
I tested.
2012-03-08 07:15:14 +01:00
Frederic Bouvier
69debc6777 Revert "Put airport lights in RenderBin to enable glow"
This reverts commit 1fa27f2d19.
2012-03-07 20:48:53 +01:00
Frederic Bouvier
84d7488061 Revert commit 7864516... Increase point sprite size for runway lights 2012-03-07 20:16:14 +01:00
Mathias Froehlich
fbb7c84409 scenery: Remove unused argument from runway signs. 2012-03-07 06:36:27 +01:00
Frederic Bouvier
a7379c88f4 Revert "Allow the not operator in expressions" - this is not required for
effects

This reverts commit 92074f0d3c.
2012-03-06 23:15:18 +01:00
Mathias Froehlich
cc8977b83d hla: include config.h and compiler.h in implementation files. 2012-03-05 06:59:37 +01:00
Mathias Froehlich
50380bc6c5 hla: Provide access to the parent federate. 2012-03-04 21:35:16 +01:00
Frederic Bouvier
92074f0d3c Allow the not operator in expressions 2012-03-04 21:24:54 +01:00
Frederic Bouvier
1e889c4d07 Implement point light 2012-03-04 20:21:52 +01:00
Frederic Bouvier
617a09d89a Fix path in include directive 2012-03-04 20:21:51 +01:00
Frederic Bouvier
2af409f54d Save work on shadows 2012-03-04 20:21:49 +01:00
Frederic Bouvier
6d3766e913 Move noise functions from scene/material to scene/util 2012-03-04 20:21:47 +01:00
Frederic Bouvier
9b130f099f Move Noise from scene/material to scene/util 2012-03-04 20:21:46 +01:00
Frederic Bouvier
20414e6ef4 Smaller point light for vasi 2012-03-04 20:21:44 +01:00
Frederic Bouvier
78645169bf Increase point sprite size for runway lights 2012-03-04 20:21:42 +01:00
Frederic Bouvier
a276e7e379 Remove now useless StateAttributeFactory::getNoiseNormalMap() 2012-03-04 20:21:41 +01:00
Frederic Bouvier
1dfde64ac2 Use bigger point sprites for airport lighting 2012-03-04 20:21:39 +01:00
Frederic Bouvier
1fa27f2d19 Put airport lights in RenderBin to enable glow 2012-03-04 20:21:37 +01:00
Frederic Bouvier
2822006d01 New buffer types for effects 2012-03-04 20:21:36 +01:00
Frederic Bouvier
288e63f0d8 Add noise texture and noise normal map to StateAttributeFactory 2012-03-04 20:21:34 +01:00
Frederic Bouvier
66c9187c95 Boolean uniforms are now updatable by properties 2012-03-04 20:21:32 +01:00
Frederic Bouvier
cbf8687e3d Add bloom buffer to effects 2012-03-04 20:21:31 +01:00
Frederic Bouvier
c9a80caff5 Create new buffer type : emission 2012-03-04 20:21:29 +01:00
Frederic Bouvier
f9857235fc Add new texture type in effects : lighting-buffer 2012-03-04 20:21:27 +01:00
Frederic Bouvier
c595a276a0 Include the light volume in the model 2012-03-04 20:21:26 +01:00
Frederic Bouvier
b582cd230e Implement a cache of light effects 2012-03-04 20:21:24 +01:00
Frederic Bouvier
ad6c04489c Add the light animation to the cmake system 2012-03-04 20:21:22 +01:00
Frederic Bouvier
ec7e59eda1 Full implementation of the spotlight by Effects 2012-03-04 20:21:21 +01:00
Frederic Bouvier
d929323e93 Add light animation to msvc9 project 2012-03-04 20:21:19 +01:00
Frederic Bouvier
5a96b283f6 Add preliminary spot light animation 2012-03-04 20:21:18 +01:00
Frederic Bouvier
d393e4a019 Add positioned uniforms and G-buffer textures to Effects 2012-03-04 20:21:16 +01:00
Mathias Froehlich
9700e46e47 spt: Make use of newly provided earth texture. 2012-03-04 20:10:22 +01:00
Mathias Froehlich
036c0034c3 hla: Fix the way derived classes accumulate attributes. 2012-03-04 19:56:43 +01:00
Mathias Froehlich
f5067b058c scenery: Do not use a seperate set of options for loading the model.
This fixes a problem introduced in commit
4e24095d8b.
Also this should fix Bug #698.
2012-03-04 17:09:24 +01:00
Mathias Froehlich
0d9b247da1 scenery: Only add trasnform matrices on successful loaded models. 2012-03-04 13:07:41 +01:00
Frederic Bouvier
a2b75e0d7a Compile SGReaderWriterOptions.cxx under Windows 2012-03-04 10:36:31 +01:00
Mathias Froehlich
c9165a565b Use an implementation file for SGReaderWriterOptions. 2012-03-04 08:40:56 +01:00
Mathias Froehlich
49d8b96768 Centralize osgDB::Option handling in SGReaderWriterOptions. 2012-03-04 08:33:21 +01:00
Mathias Froehlich
5ad6eb937b Make use of SGReaderWriterOptions::copyOrCreate in SGModelLib 2012-03-04 08:17:10 +01:00
Mathias Froehlich
f66e023ea8 Make use of SGReaderWriterOptions::copyOrCreate in SGMaterial. 2012-03-04 08:15:00 +01:00
Mathias Froehlich
72f1538ac2 Make use of SGReaderWriterOptions::copyOrCreate in ReaderWriterSTG. 2012-03-04 07:50:05 +01:00
Mathias Froehlich
4e24095d8b Make use of SGReaderWriterOptions::copyOrCreate in SGReaderWriterXML. 2012-03-04 07:42:31 +01:00
Mathias Froehlich
1473eabc7c Provide SGReaderWriterOptions::copyOrCreate(const osgDB::Options*).
This functions tries to preserve the database options as much
as possible and guarantees to return a non zero options
pointer.
2012-03-04 07:42:31 +01:00
Mathias Froehlich
11fd888ed8 Replace osgDB::ReaderWriter::Options to osgDB::Options.
This has changed in osg, so reflect that here.
2012-03-04 07:07:42 +01:00
Mathias Froehlich
8c78588ee1 Untangle osg singleton dependencies.
Take two. The ModelRegistry's are already derived from osg::Referenced.
So also introduce the osg dependent version in simgear/scene/util.
2012-03-03 18:57:48 +01:00
Mathias Froehlich
c74e212494 Revert "Use simgear internal stuff for the singleton class."
This reverts commit 80274596df.
2012-03-03 18:21:49 +01:00
ThorstenB
13f96cdcc9 Dir::tempDir not working on some systems.
Only worked when TMPDIR environment variable had a trailing slash (i.e.
"/tmp/" worked, but not "/tmp").
(Problem shown by simgear's "test suite". It's good to have tests!)
2012-03-03 17:06:51 +01:00
Mathias Froehlich
86e32035d7 Remove left over from osg/core dependencies.
This file should be obsolete doe to the latest changes.
2012-03-03 16:06:51 +01:00
Mathias Froehlich
80274596df Use simgear internal stuff for the singleton class.
This removes the other still present dependency on osg
in the future sgcore library.
It also remove the need for the NO_OPENSCENEGRAPH_INTERFACE
compile time definition.
2012-03-03 14:39:39 +01:00
Mathias Froehlich
2cc5e776b3 math: Remove SGMath osg dependency.
Move osg dependent stuff from SGMath into simgear/scene/util/OsgMath.hxx.
Update includes in simgear to reflect this change.
Note that this change also requires an updated flightgear version.
2012-03-03 13:35:20 +01:00
Mathias Froehlich
57a3b0fd1e math: Move lerp function into SGMisc. 2012-03-03 12:03:09 +01:00
Mathias Froehlich
9414874e1d scenery: inline SGGenTile into its single caller. 2012-03-03 12:03:09 +01:00
Mathias Froehlich
9e46820c57 scenery: Route loader options through the btg loader. 2012-03-03 12:03:09 +01:00
Stuart Buchanan
3020990121 Evaluate <condition> statements in materials.xml at tile loading time
rather than on startup.  This will allow changing between winter and
summer textures in-sim, and also allow more interesting regional
textures to be defined.
2012-03-02 23:04:18 +00:00
Mathias Froehlich
27219e0f58 hla: Fix timeAdvanceAvailable handling when no federate is regulating. 2012-03-02 22:25:47 +01:00
Mathias Froehlich
098441f5fb hla: Add propper attribute dirty handling. 2012-03-02 21:51:59 +01:00
Mathias Froehlich
a07ca86207 hla: Timestamp support down to the DataElements. 2012-03-02 21:36:08 +01:00
Stuart Buchanan
e4e3760b3d Fix masked rotation so that it's clockwise from above. 2012-02-28 21:05:54 +00:00
ThorstenB
811147d08e Fix string comparison 2012-02-28 08:39:19 +01:00
Mathias Froehlich
a563cfd0f2 hla: Fix buffer overrun in SGMath vector types. 2012-02-28 07:19:21 +01:00
Mathias Froehlich
92f7445bb9 hla: Rework toplevel HLA classes.
Better seperation between the rti and the hla level
of classes. Decouple object model setup from the
need to connect at a federate. Fix alignment computations
for the standard hla data types. Work towards an
interaction class abstraction. Add more flexibility in
deriving from the base classes and adding callbacks.
2012-02-28 07:16:11 +01:00
Stuart Buchanan
a72d858034 More robust checking of file extensions courtesy of the SGPath. Thanks to Mathias FROHLICH. 2012-02-27 21:27:27 +00:00
Stuart Buchanan
39d45e9e0a Handle dds object masks properly:
1) Only flip the object-mask if the texture xor the object mask is dds
2) Handle NTFS file systems where the extension may be .DDS rather than .dds.
2012-02-26 22:38:38 +00:00
Stuart Buchanan
4fae9039c1 Correct spacing between buildings. 2012-02-26 22:38:04 +00:00
Mathias Froehlich
124db3da8e hla: Introduce backend factory infrastructure.
Not finally ready, but provide a factory infrastructure
to improove plugability of different rti backend implementations.
2012-02-26 08:50:06 +01:00
ThorstenB
4bf4091ef7 Remove obsolete comment... 2012-02-24 22:47:18 +01:00
ThorstenB
b7fa1d4f02 #537 linker issues due to clock_gettime/librt dependencies
Simplify dependency check and make it work for Debian.
2012-02-24 22:20:37 +01:00
ThorstenB
f1c2afacc4 Revert "Try to fix MSVC template instantiation issue with SGVec dependencies."
This reverts commit 8aed0e75df.
2012-02-24 22:00:58 +01:00
ThorstenB
8aed0e75df Try to fix MSVC template instantiation issue with SGVec dependencies. 2012-02-24 21:47:00 +01:00
Stuart Buchanan
cf2619613d Stop objects from overlapping the edge of the triangle in which they are placed. This should stop buildings encroaching roads etc. 2012-02-23 20:10:02 +00:00
ThorstenB
2a9d39f201 Allow (ab)using findDataFile to also search directories again. 2012-02-19 14:39:19 +01:00
ThorstenB
ae0b8eb3b3 Make tsync part of libSimGearCore when building shared libraries 2012-02-19 14:39:19 +01:00
Mathias Froehlich
63081c94a1 hla: Add new header containing some enums. 2012-02-18 17:13:45 +01:00
Mathias Froehlich
c39926dd72 hla: Rename AttributePathPair to StringPathPair.
This way of addressing attribute data elements
should also be used for parameters. So, name it a little
more neutral.
2012-02-18 16:49:17 +01:00
Mathias Froehlich
4683e7e9c9 hla: Do not introduce an empty enumerated data type.
This fixes a bogous enumerated data type that is
up to now introduced into the data type map.
2012-02-18 13:20:25 +01:00
Mathias Froehlich
dc9163f801 hla: rename HLAVariantData* to HLAVariantRecordData*
Rename to the true name that is used in the standard.
2012-02-18 11:44:00 +01:00
Mathias Froehlich
42cc699263 HLAFederate: introduce read*ObjectModelTemplate.
Introduce read{RTI13,RTI1516,RTI1516E}ObjectModelTemplate
methods. Deprecate the current readObjectModelTemplate method
and provide a short term upgrade path.
2012-02-18 11:00:28 +01:00
ThorstenB
37457fcb33 Remove obsolete ignore pattern for automake generated headers. 2012-02-17 23:46:06 +01:00
Torsten Dreyer
441dc41715 Don't untie a property when loading from xml
executing the fgcommand loadxml implicitely untied every previously
tied property if a property type was given in the property element.
That made it impossible to autosave aircraft data for tied properties.
This patch should fix this. It adds an inconsitency, though:
if a property with a given type is read in which has been tied to
before and the property types do not match, the property type in the
xml file will be ignored.
2012-02-15 14:54:02 +01:00
ThorstenB
811f156ad1 #658: better bugfix for findDataFile issue
Fixes the more basic probelm of "SGModelLib::findDataFile" resolving an
empty file name to the fgdata (directory) path. findData_File_ should
never return a _directory_ path, only valid _file_ names.
2012-02-11 10:55:13 +01:00
ThorstenB
2a0e9d31e1 #658: avoid crash when Textures.high is missing
Don't resolve the empty file name, which would result in the fgdata
directory path (instead of a path to a file). Eventually this resulted in
a segfault, partly due to a bug in "osgDB::readImageFile", which reports
"success" when given a directory (instead of a file) path, though it
doesn't return a valid image object.
2012-02-11 10:00:03 +01:00
Stuart Buchanan
c473cd7213 Fall back to taking tree textures from Terrain/ if they are not found under
Terrain.high, consistent with the other textures in materials.xml.

Also fix comment.
2012-02-10 22:49:20 +00:00
Olaf Flebbe
1af8aacd1d disable annoying clang warning 2012-02-10 22:42:27 +01:00
ThorstenB
5eb9acd8b6 Olaf Flebbe: Avoid infinite recursion in simgear::Dir::create
when using it with a relative path.
2012-02-10 22:42:27 +01:00
Stuart Buchanan
6bc9eb950f Retire tree-density and wood-size, as they have been superseded by object masking. 2012-02-07 21:12:41 +00:00
Stuart Buchanan
593c884f14 Random object and vegetation masking based on bitmap file.
Also adds a property controlling vegetation density.
2012-02-05 23:05:57 +00:00
ThorstenB
9d20de068c Move JPEG dependency
Alas, JPEG_FACTORY is in SimGearScene, not SimGearCore...
2012-01-29 14:39:48 +01:00
ThorstenB
96c2e4d3ab Correct dependency of shared simgear libraries with enabled JPEG_FACTORY. 2012-01-29 14:28:49 +01:00
Mathias Froehlich
165d2ea978 Improve the compressed texture message. 2012-01-19 07:34:47 +01:00
Stuart Buchanan
0702272097 Switch Impostors off by default, set reasonabl LOD and Impostor ranges. 2012-01-17 22:15:14 +00:00
Stuart Buchanan
965c8ccfd2 Improved 3D clouds
1) Impostors
2) One drawable per cloud rather than a single drawable shared by all clouds.
2012-01-17 22:14:57 +00:00
Torsten Dreyer
b20a49b018 bump version number to 2.7.0 2012-01-17 08:35:57 +01:00
Torsten Dreyer
5a6b760847 bump version number to 2.6.0 2012-01-17 07:46:13 +01:00
Mathias Froehlich
7e2dc443ec Use the original filename for the compressed image message. 2012-01-15 13:07:35 +01:00
ThorstenB
21f2e1f250 #599: Don't crash when a path does not exist. 2012-01-13 19:58:45 +01:00
ThorstenB
cee8c5b5c7 #199: ADd method to return the absolute (real) path. 2012-01-12 21:44:15 +01:00
Mathias Froehlich
7ee2633164 Do not disable the portability warnings on mac/win.
Since the message should help people doing textures to
provide texture files that run everywhere, do not omit
the messages just because the build platform did not
know these.
2012-01-12 18:49:54 +01:00
James Turner
6c31a721b8 #ifdefs for option GL texture compression constants - should fix Windows as well as Mac 2012-01-11 23:41:02 +00:00
Mathias Froehlich
8fc97ea1ce Log images containing data depending on an extension.
Print a descriptive warning on images that are given
in a texture format that do only work in presence of an
extension that might not be there at runtime.
2012-01-11 18:38:06 +01:00
ThorstenB
423eba3733 Alas. Fix #pragma magic for GCC <= 4.5.
push/pop was introduced for GCC4.6 only - so avoid it.
Also, properly fix the fgets warning.
2012-01-09 22:18:17 +01:00
ThorstenB
49a23fdc2e Fix final simgear GCC warnings. 2012-01-09 21:51:09 +01:00
ThorstenB
fddac2443d More #pragma magic.
Same magic as for SGSphere.
2012-01-09 21:49:34 +01:00
ThorstenB
182037ad67 Slightly better error message for invalid taxiway signs. 2012-01-09 20:27:27 +01:00
ThorstenB
5923956045 #587: don't crash on negative sizes 2012-01-09 20:21:28 +01:00
ThorstenB
a89b9f6158 #581, invalid gcc pragma syntax
Thanks to Olaf Flebbe.
2012-01-09 20:19:26 +01:00
Frederic Bouvier
d7931a28ce MSVC: don't try to compile unknown pragma 2012-01-03 21:20:37 +01:00
Stuart Buchanan
cc47d33b32 Adjust LoD ranges for 3D clouds so that they become visible at maximum range, taking into account the current cloud visibility range, and the possible size of the clouds themselves. 2012-01-02 23:10:20 +00:00
ThorstenB
68625e48b9 Fix compiler warning / test issue. 2012-01-02 23:04:40 +01:00
Erik Hofman
3496d64a52 sounds tied to listeners are never out of range 2011-12-30 11:16:58 +01:00
ThorstenB
f97ced2240 Add version suffix when building shared objects 2011-12-29 14:45:29 +01:00
Torsten Dreyer
3d44f1c825 Revert changes to xmlparse.[ch]
These files are copies from libexpat and should not be touched.
Thanks to Mathias for pointing this one out.
2011-12-26 11:40:57 +01:00
Torsten Dreyer
306c58e7ed Some more trivial warning fixes 2011-12-25 20:28:38 +01:00
Torsten Dreyer
82588b0daf Remove stray ';' 2011-12-25 20:12:48 +01:00
Torsten Dreyer
aef8f13290 Use of copy-constructors
explicitly initialize the base class in a copy-constructor instead
of implicitly calling the default constructor.
2011-12-25 20:11:06 +01:00
Torsten Dreyer
4ae7c90d49 Small warning fixes, mostly unused variables 2011-12-25 14:40:07 +01:00
Erik Hofman
cc2234bf54 Degarde lack of free sounds message from alert to bulk for this release. 2011-12-24 11:13:49 +01:00
Erik Hofman
368d280da2 surpress unitialized variuable warning for SGSphere() only 2011-12-20 10:08:20 +01:00
Erik Hofman
4faf727f1b Do not initialize _center to save unneeded initialization time. 2011-12-20 10:00:33 +01:00
Erik Hofman
f28e472f59 Throw a warning even is NDEBUG is defined 2011-12-19 15:34:11 +01:00
Erik Hofman
69c5d5c86e Intialize to prevent a 'may be used uninitialized' warning 2011-12-19 15:29:25 +01:00
Erik Hofman
f9332b813e Intialize to prevent a 'may be used uninitialized' warning 2011-12-19 15:28:11 +01:00
Erik Hofman
052ce499c9 Intialize the center to prevent a 'may be used uninitialized' warning 2011-12-19 15:25:58 +01:00
ThorstenB
54db2e0ab1 #479: avoid issues due to trailing path separators
Cut trailing separators when converting from string to sgpath.
Also, SGPath::fix does NOT replace ":". It only replaces "\" with "/",
so the "i!=1" check for Windows made no sense (rule #9: never believe
a source code comment).
2011-12-18 17:04:31 +01:00
ThorstenB
b261836f71 #512: fix compatibility issue with boost 1.48.0
Thanks to handigehansje.
2011-12-18 14:06:27 +01:00
Mathias Froehlich
a0290954d6 Return ReadResult::FILE_NOT_HANDLED for unknown extensions.
This fixes a problem with fonts no longer being correctly
loaded as a side effect of the spt meta object loader.
The readObject slot is obviously being called for several
unrelated file extensions. To make sure the search continues,
osgDB::ReaderWriter::ReadResult::FILE_NOT_HANDLED needs to
be returned in this case.
2011-12-17 19:11:26 +01:00
Frederic Bouvier
112eb04079 Add new files in the MSVC project 2011-12-17 16:45:19 +01:00
Mathias Froehlich
057cbe7cc3 Correct scenery load path extension. 2011-12-16 07:39:25 +01:00
Mathias Froehlich
945a9e0ac2 Implement osg native scenery paging.
Add an in memory osg scenery loader that provides
paged scenery loading using PagedLOD nodes.
2011-12-16 07:39:25 +01:00
Erik Hofman
a92ea7f822 No need to start non looping samples automatically when getting in-range. 2011-12-13 11:40:08 +01:00
Erik Hofman
b57b223a59 Add an out_of_range property to sound samples. If set the sound is set to non playing (which allows the OpenAL sound the be free'd) 2011-12-13 11:09:12 +01:00
Erik Hofman
f377c75dbd Add vi(m) .swp files and a [Bb]uild directory 2011-12-12 13:20:49 +01:00
Erik Hofman
8d3de8dee5 Free OpenAL sounds of objects that are farther away than the max_distance. 2011-12-12 13:19:43 +01:00
ThorstenB
cfdf992600 Improve logging classes.
Replace SG_GENERAL by more specific log classes in many places.
2011-12-11 13:57:54 +01:00
Frederic Bouvier
fd8c677b87 Update MSVC 90 project (moved files) 2011-12-10 18:50:08 +01:00
Erik Hofman
ff2eb6d2d3 Properly handle stereo wav files; remove data buffer and set buffer to FAILED_BUFFER 2011-12-07 10:41:57 +01:00
ThorstenB
97fcf48caa fix sound buffer resource leak
Openal doesn't remove buffers unless they were disconnected form
their source.
2011-12-04 21:25:42 +01:00
ThorstenB
e17b3a753e sound: fix "source" resource leak
Sound resources were eaten up when a sample could not be loaded.
Restores sound for aircraft attempting to use stereo files for sound effects.
However, when loading fails, sound code still tries to load the same file
again and again (always resulting in the same "stereo files not supported"
error), which slows down simulation.
2011-12-04 20:16:36 +01:00
ThorstenB
865b0a3e56 sound manager: report a few more errors 2011-12-04 17:10:58 +01:00
Frederic Bouvier
0d1ddc5f44 Fix a copy/paste typo in Effect depth attributes 2011-12-01 19:45:18 +01:00
ThorstenB
6780a0c8d4 Fixed lib64 auto-detection (again)
Reverting the "LIB_SUFFIX" change.
Assuming recent change was unintentional (otherwise let me know James! :) ).
2011-11-30 19:50:09 +01:00
James Turner
fee652d54a Fix header installation for shared build 2011-11-30 09:45:32 +00:00
James Turner
42b7c48671 Move some OSG-dependant code into scene/util. 2011-11-29 10:23:09 +00:00
James Turner
75afee59c3 Get all the tests linking with shared-simgear, and duplicate the awkward core functions into a new file, pending a proper cleanup. 2011-11-28 23:22:43 +00:00
James Turner
ae3f718fe3 Fix naming of core library, get IO tests linking shared, and exclude OSG symbols from the core lib by setting headless mode. 2011-11-28 23:05:05 +00:00
James Turner
4b02335637 Build system tweaks to support SIMGEAR_SHARED building two libraries. Work in progress, does not link yet. 2011-11-28 22:43:57 +00:00
ThorstenB
7a52c2fa71 cmake: add option to disable building tests 2011-11-26 16:39:40 +01:00
ThorstenB
ec5d067d28 CMake: Proper support for lib vs lib64 installation
Determine name of library installation directory, i.e. "lib" vs "lib64",
which differs between all Debian-based vs all other Linux distros.
See cmake bug #11964, http://cmake.org/gitweb?p=cmake.git;a=commit;h=126c993d
Also provide a script for older (<=2.8.4) cmake
2011-11-25 12:06:54 +01:00
Erik Hofman
3c9fec78fa Slightly rearrange the buffer removing code. This should make sure the source is always stopped (required by the OpenAL spec) before a buffer is removed and added to the free source list. 2011-11-23 09:41:13 +01:00
Erik Hofman
0a08ee836c Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-11-20 19:08:04 +01:00
ThorstenB
5f804cb0eb Add another subsystem group.
Sound subsystem wants to be the last in processing - so use a
separate group.
2011-11-20 15:50:56 +01:00
Erik Hofman
a0fd942048 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-11-20 10:19:52 +01:00
Frederic Bouvier
dad1577fe3 Update VS2008 project 2011-11-19 21:19:08 +01:00
ThorstenB
338f2311d4 Merge commit 'refs/merge-requests/17' of git://gitorious.org/fg/simgear into merge-requests/17 2011-11-19 15:25:22 +01:00
ThorstenB
27a1c0288b Separate module to monitor (subsystem-)performance.
Move some code from the subsystem manager to a separate module.
Add module to evaluate performance and expose statistics to properties.
2011-11-19 15:24:43 +01:00
ThorstenB
dd45be518f Improve error messages, report file name. 2011-11-17 21:26:02 +01:00
Christian Schmitt
a9c058ba9d Allow 6-lights VASI as well (2 bars a 3 lights). 2011-11-17 17:19:58 +01:00
James Turner
3e07423778 Fix a std:: namespace issue on Windows. 2011-11-13 21:27:15 +00:00
James Turner
63ccb3df4c std:: namespace fixes, and sink some code from the subsystem header into the implementation. (Hopefully more to follow) 2011-11-13 20:34:39 +00:00
James Turner
906ef85d90 using std:: fix 2011-11-13 20:33:25 +00:00
Frederic Bouvier
895edf4f17 Fix MSVC build 2011-11-13 20:06:39 +01:00
Mathias Froehlich
ff1c035d42 Use osgDB::read*File instead of dereferencing the osgDB Registry instance. 2011-11-13 18:35:18 +01:00
Mathias Froehlich
f61fe80f60 Consolidate the different ReaderWriterOptions classes. 2011-11-13 18:35:18 +01:00
ThorstenB
dfbdcc1bf0 Replace OpenThreads with SGThread to avoid useless OSG dependency.
Untangle SG subsystems by replacing direct TileCache call with callback.
2011-11-13 15:37:49 +01:00
ThorstenB
b09636f5ca Fixed typo. 2011-11-10 22:08:23 +01:00
Erik Hofman
8727e609f0 Also stop the source if it is paused when exit. 2011-11-10 12:52:17 +01:00
Erik Hofman
40fc2907a1 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-11-10 10:29:07 +01:00
Martin Spott
81fd5535fc OpenSceneGraph 3.0 required 2011-11-09 13:55:49 +01:00
Mathias Froehlich
ad079b8ed4 modellib: Add method for deferred model loading.
Add method that schedules a ProxyNode to do
just deferred model loading instead of full scenery paging.
Add support for ProxyNodes to CheckSceneryVisitor.
Use PagedLOD instead of our own derived method.
2011-11-08 21:31:18 +01:00
PSadrozinski
a543560f7d Adding Icecode GL's polygon-offset support for effects 2011-11-06 09:47:29 -05:00
Erik Hofman
bb2cc6ef2d Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-11-05 11:41:07 +01:00
Mathias Froehlich
977f23f0e7 Remove automake ignores. 2011-11-01 13:53:29 +01:00
James Turner
24c047c94e Remove the remaining Makefiles from the code. 2011-11-01 09:28:26 +00:00
James Turner
22b4aa4d8b Remove the automake / autoconf build files. 2011-11-01 09:26:22 +00:00
Erik Hofman
110753e92c Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-10-30 10:40:00 +01:00
Mathias Froehlich
be70656745 Add a HLADataElementVisitor implementation. 2011-10-30 10:23:59 +01:00
James Turner
d36e13e8ed Make tiedpropertylist quieter. 2011-10-30 07:55:44 +00:00
James Turner
2e9896a9ab Enhancements to property-object support, add a default ctor and some typedefs. 2011-10-30 07:55:29 +00:00
Csaba Halasz
ee06ec0c40 terrasync build fix: added #include <string.h> for strlen 2011-10-30 02:14:27 +02:00
ThorstenB
aa0e3e3c9f #453: Using = as Nasal function argument crashes FG
Keep Nasal parser from crashing when "=" function misses a left-hand
element, i.e. when parsing "sin(=)".
(Or do people writing such terrible syntax deserve a crash? ;-) ).
2011-10-29 21:20:46 +02:00
ThorstenB
3477e1a4f5 terrasync improvements
Detach from console to make "Ctrl-C" work for fgfs on Linux.
Immediately start synchronization of current position when
starting at run-time.
2011-10-29 21:15:29 +02:00
ThorstenB
a4b788980c Fix terrasync airport synchronization sequence
Airport A-J were skipped. Thanks to James for spotting this.
Also corrects actual sync order.
2011-10-29 21:13:12 +02:00
James Turner
519a843340 Move ALUT 1.0 variables inside the #ifdef, to avoid some compiler warnings. 2011-10-29 11:06:24 +01:00
Mathias Froehlich
269299d913 Remove sg_sleep.*. 2011-10-28 19:11:43 +02:00
Mathias Froehlich
cc4b16b50d Fix mac build. 2011-10-28 19:10:20 +02:00
Mathias Froehlich
d10bcc8a53 Hopefully fix jenkins build. 2011-10-28 19:05:46 +02:00
Mathias Froehlich
92db9682e0 Make use of SGTimeStamp::sleep*. 2011-10-28 18:45:23 +02:00
Mathias Froehlich
cd773e4764 Add sleep implementations to SGTimeStamp.
Implement sleeping to an absolute timestamp
as well as sleeping for a relative time in
SGtimeStamp.
The reason for including this into SGTimeStamp
is that the timestamps internals are required to
do accurate sleeps to and absolute timestamp
for the posix timer implementation.
2011-10-28 18:45:23 +02:00
James Turner
f14ffd5b1d Fix a bug affecting TerraGear, and extend unit-tests to cover this. (SGPath::file returned an empty string for paths with no directory separator) 2011-10-28 12:57:07 +01:00
James Turner
e34f597fe2 Add sound test programs to the CMake build. 2011-10-28 12:29:26 +01:00
James Turner
95ddc04a73 Fix assorted compiler warnings found by Clang 2011-10-28 12:07:35 +01:00
Torsten Dreyer
c6d5cbd52c Keep VC90 project file working with SGAtomic 2011-10-27 08:18:54 +02:00
James Turner
75b695664a Change (revert!) behaviour of SGPath::base, which broke TerraGear, when used with multiple file suffixes (hgt.zip, for example). Test cases updated to match TG-required behaviour. 2011-10-26 19:57:57 +01:00
James Turner
59ecf48b72 Support stream output by SGPath directly. 2011-10-25 21:44:57 +01:00
James Turner
2fb13c76f5 Address warnings found via Clang - especially related to destructor visibility with ref_ptrs of various kinds. 2011-10-24 18:09:42 +01:00
Mathias Froehlich
7438aea869 Fix SGAtomic mutex logic. 2011-10-23 23:27:38 +02:00
Mathias Froehlich
83772c87ac Rework SGAtomic, move more into the implementation.
Mainly move many cases into the implementation file.
2011-10-23 23:03:15 +02:00
James Turner
6250f675db Fixes for headless mode. 2011-10-23 17:56:28 +01:00
James Turner
a31639682b Use a compile test to see if we need to provide the GCC atomic built-ins ourselves, or not. 2011-10-23 15:59:27 +01:00
James Turner
576979c562 Make lat/lon points in the ocean tile configurable at run-time. Not hooked up to a property yet, but soon. 2011-10-23 11:26:19 +01:00
Erik Hofman
c53989adb8 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-10-23 10:39:26 +02:00
Stuart Buchanan
a1bb62f43c Fixes to 3D clouds
- Wrap 3D clouds (e.g. Global Weather) on the surface of a sphere rather than on a plane. Cloud altitude no-longer increases with distance from the start position
 - Fix altitude of individual clouds, which where being places approx 1/2 the sprite height too high. Note that this means sprite positions in the cloud are the center of the cloud rather than the bottom.
 - Improve LOD radii, which were far too large.
2011-10-22 21:28:09 +01:00
James Turner
5eec2e7889 Support for creating a source package via CPack 2011-10-22 15:37:17 +01:00
James Turner
f4bb236c04 Add FUZZY_COMPARE to me tar unit-test, tolerate lower-order imprecision in FPUs 2011-10-21 11:21:52 +01:00
James Turner
c82df0590d SGPath rename wrapper. Let's see what Win32 makes of it. 2011-10-21 09:36:33 +01:00
James Turner
43e13f0cf2 Remove-on-destroy option for simgear::Dir, to help with cleaning up temporary directories. 2011-10-21 09:36:10 +01:00
James Turner
63a8209a83 Remove using std:: from the metar header, remove HTTP support, add very basic unit-test harness. 2011-10-21 09:35:37 +01:00
James Turner
7984f055e2 string list joining, and a test case for that and splitting. 2011-10-20 11:12:54 +01:00
Erik Hofman
3104898c7c Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-10-18 18:32:57 +02:00
James Turner
8cb716fe8e std:: namespace fixes. 2011-10-17 09:50:35 +01:00
James Turner
9cdf5ab9a1 Add another helper to strutils, to compare version strings. 2011-10-17 09:50:21 +01:00
Csaba Halasz
bcf7ed501d Compile fix: add this-> in SGExpression.hxx due to two-phase name lookup (reported by gcc 4.7) 2011-10-16 14:00:39 +02:00
Frederic Bouvier
09b0dd2b2d Fix windows build 2011-10-15 09:42:15 +02:00
James Turner
04a47dfb8d Use mkdtemp where available, avoiding linker warnings about dangerous tempnam 2011-10-15 02:06:35 +01:00
James Turner
bc9b3f6ff1 Unit test for SGBinObj, and fix a bug in large-indice handling the test revealed. 2011-10-14 21:57:34 +01:00
James Turner
086a30e61a Add default constructor to simgear::Dir 2011-10-14 19:28:21 +01:00
Erik Hofman
cd8e7a1030 Warn for stereo files. 2011-10-03 08:34:20 +02:00
Mathias Froehlich
8e92c5d985 hla: fix typo resulting in an endless loop. 2011-10-02 15:13:06 +02:00
Mathias Froehlich
5708ec5a89 hla: provide main loop capabilities for HLAFederate. 2011-10-02 14:36:33 +02:00
Mathias Froehlich
f665431132 hla: lift the event loop logic from RTI to HLAFederate. 2011-10-02 10:11:10 +02:00
Mathias Froehlich
9e27511ef9 hla: Provide createJoin and resignDestroy methods. 2011-10-01 17:46:16 +02:00
Mathias Froehlich
344f876b0a hla: disable copying for HLA*Class. 2011-10-01 10:11:33 +02:00
Mathias Froehlich
10217a3b19 rti: Implement query{GALT,LITS} in the interface and RTI13. 2011-10-01 10:04:23 +02:00
Mathias Froehlich
778cc4c435 clouds: remove unused bump mapping flags. 2011-10-01 09:21:57 +02:00
Mathias Froehlich
bd999ca090 hla: Move callbacks into the rti federate implementation. 2011-10-01 09:10:57 +02:00
Mathias Froehlich
4d9980b0e6 HLAPropertyDataElement: add virtual qualifier to destructor. 2011-10-01 08:34:13 +02:00
James Turner
a459b8fdbb Make the common case the default: no library suffix for RelWithDbg or MinSizeRel builds. Of course you can still specify a suffix if desired. 2011-09-26 13:32:34 +01:00
Mathias Froehlich
c925c02e69 automake: add thread libs to the io tests. 2011-09-24 09:55:01 +02:00
James Turner
4566bece90 Alternate, WinSock friendly reporting for host lookup failures. 2011-09-16 16:43:09 +01:00
James Turner
403b7c14aa Fix a crash where hostlookup fails entirely, thanks to Andreas Gaeb for the catch. 2011-09-16 11:37:02 +01:00
Mathias Froehlich
b3e07077fa cmake: clear the svn libraries variable if not found. 2011-09-14 17:24:49 +02:00
Andreas Gaeb
f7cee2ed56 cmake: Add headers to library components
Add headers to library components so that they get
included into the IDE project files.
2011-09-14 08:56:17 +02:00
Torsten Dreyer
b7173100c8 Merge commit 'refs/merge-requests/11' of git://gitorious.org/fg/simgear into merge-requests/11 2011-09-12 17:26:01 +02:00
Frederic Bouvier
cb496379bc Typo 2011-09-12 12:20:03 +02:00
Frederic Bouvier
c37b9c95e6 Attempt to make FindSvnClient.cmake portable 2011-09-12 12:17:06 +02:00
Frederic Bouvier
919e01f26e Fix SVN detection for Windows 2011-09-12 10:54:03 +02:00
Frederic Bouvier
cad21935d6 Auto detect 3rd Party root for Windows 2011-09-12 10:53:18 +02:00
Mathias Froehlich
d290fdfc5f cmake: Use a default build type that builds fast executables. 2011-09-12 08:10:20 +02:00
Mathias Froehlich
c77161e2b0 cmake: add quotes to string split. 2011-09-11 23:27:03 +02:00
Stuart Buchanan
d2dfb81a09 Place clouds on a curved field, rather than completely flat, so
they curve with the earth surface. Note that this does not fix
"wrapped" clouds.
2011-09-11 22:11:27 +01:00
Stuart Buchanan
4acf7ce840 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-09-11 21:38:54 +01:00
Frederic Bouvier
2f6b84a2cc Lower the requirements on Cmake version (at least until Jenkins is updated) 2011-09-11 21:43:54 +02:00
Frederic Bouvier
2c00a4ac35 Enforce the use of Cmake 2.8 2011-09-11 20:48:50 +02:00
Stuart Buchanan
c27ca18674 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-09-09 18:42:56 +01:00
James Turner
7c7f3d4fcd Hopefully fix test compilation on MSVC 2008+CMake 2011-09-09 11:48:11 +01:00
Mathias Froehlich
8fba4b0cbe Fix win32 SGThread::join timeout. 2011-09-08 17:41:21 +02:00
James Turner
b0015ab6e8 Further Windows Cmake tweaks. 2011-09-07 20:41:55 +01:00
James Turner
3a210d6fa6 Make sgio tests friendly to Windows. 2011-09-07 20:12:35 +01:00
James Turner
b5a4a55370 Cmake Windows tweaks. 2011-09-07 19:58:26 +01:00
Mathias Froehlich
35a449c7d0 Update the automake based build system to the last changes. 2011-09-07 18:39:04 +02:00
James Turner
1305e16425 Work (in progress) on CPack packaging for SimGear 2011-09-07 16:54:28 +01:00
Mathias Froehlich
08003ceba9 Revert to simgears thread support.
For all source directories outside of simgear/scene,
which really depends very hard on osg, avoid using osg
classes. This should reenable the use of some basic and
scenegraph independent parts of simgear without the
the need for osg.
2011-09-07 17:32:43 +02:00
Mathias Froehlich
059db643bc Reimplement SGThread and friends.
Reimplement the threading stuff using either pthreads
or win32 threads. These simple classes should help us
to stay osg independent for simgears core classes.
2011-09-07 17:32:43 +02:00
Martin Spott
39731debdc Merge commit 'refs/merge-requests/10' of git://gitorious.org/fg/simgear into next 2011-09-05 14:17:00 +02:00
Torsten Dreyer
9ef56cbc48 Merge commit 'refs/merge-requests/7' of git://gitorious.org/fg/simgear into merge-requests/7 2011-09-02 12:11:42 +02:00
Stuart Buchanan
becea84955 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-09-01 19:55:11 +01:00
Dmitry Marakasov
ceac7b46fc Fix bashisms in configure.ac 2011-09-01 22:53:59 +04:00
Mathias Froehlich
594095a363 Introduce quaternion finite difference method.
This implements a function for the quaternion implementation
that computes the angular velocity that matches an explicit euler
step that propagates from a starting quaternion orientation to a
destination quaternion orientation.
2011-09-01 17:11:25 +02:00
James Turner
3397066343 One more Linux compile fix. 2011-08-31 07:26:11 -07:00
James Turner
d1d8c68bf1 Missing include on Linux 2011-10-14 12:05:31 +01:00
James Turner
d37bf8a4ae SGPath/Dir extensions to ease file handling in TerraGear. Also a unit-test, shocking. 2011-10-14 11:37:36 +01:00
James Turner
e4e31be7d4 Fix BTG writer for non-included index arrays. 2011-10-12 17:01:52 +01:00
ThorstenB
5ede8c12ba Make SGModelPlacement safe on reinit
Remove old model When init is called multiple times (i.e. reinit).
Also allow explicit removal of submodel (= init(0) ).
2011-10-11 21:28:37 +02:00
Torsten Dreyer
db509f4075 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-10-08 20:36:20 +02:00
Mathias Froehlich
85e58b4a49 hla: for rti13 queue all callbacks.
This is to avoid running into the rti13 ambassadors
recursion guards. Newer rti standards will not requires this.
2011-10-08 17:44:53 +02:00
Martin Spott
64b6a4ebf2 Add missing header for printf 2011-10-07 09:57:09 +02:00
Martin Spott
a0c48de39d Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-10-07 09:39:12 +02:00
James Turner
d9a281c493 Support for 32-bit vertex indices in BTG files 2011-10-06 21:28:55 +01:00
Torsten Dreyer
eb52f38c47 Stuart Buchanan:
A further fix to the cloud placement, to make it more accurate over longer distances.
2011-10-06 16:49:09 +02:00
Torsten Dreyer
c1f51d5be7 Stuart Buchanan:
Add additional lighting factors for 3D clouds so you can set the bottom, middle, top, and shade lighting factors.
2011-10-06 16:47:03 +02:00
Torsten Dreyer
08cb2039c5 Merge commit 'refs/merge-requests/12' of git://gitorious.org/fg/simgear into merge-requests/12 2011-10-06 16:42:36 +02:00
Mathias Froehlich
6485ea4051 hla: Add flush queue request, fix comments. 2011-10-05 21:03:52 +02:00
Frederic Bouvier
aa9e91f926 Fix win32 build of decode_binobj 2011-10-05 08:13:31 +02:00
Mathias Froehlich
70ac6614e8 hla: Remove interface functions that should not be called explicitly. 2011-10-04 21:07:24 +02:00
Mathias Froehlich
64ce231705 hla: Initially request update for subscribed unowned attributes. 2011-10-04 20:55:44 +02:00
Mathias Froehlich
7a98f89e1b hla: provide a more general property data element implementation. 2011-10-04 20:32:34 +02:00
Mathias Froehlich
264e336a49 hla: add missing file fir the last commit. 2011-10-04 20:27:59 +02:00
Mathias Froehlich
595328963a hla: provide a data type visitor building a default data element tree. 2011-10-04 20:21:12 +02:00
Mathias Froehlich
d951a55be0 hla: detect string and opaque data types. 2011-10-04 19:48:34 +02:00
James Turner
7ffc84fb86 Fix decode_bin linkage with GNU ld. 2011-10-04 17:53:53 +01:00
James Turner
5871b54172 Build decode_bin helper under CMake. 2011-10-04 15:06:12 +01:00
Mathias Froehlich
92976b7735 hla: remove the now unused HLAPropertyReference{,Set}. 2011-10-03 13:11:52 +02:00
ThorstenB
2e13c1fa4b Add convenience class for change listener callbacks. 2011-10-03 11:57:48 +02:00
Martin Spott
b5134f15b4 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-10-03 11:45:57 +02:00
Mathias Froehlich
bcb320b537 hla: Provide a directly property based api for property data element. 2011-10-03 11:21:27 +02:00
Martin Spott
1475964145 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-10-03 10:42:38 +02:00
Martin Spott
1802ccf374 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-10-01 22:05:53 +02:00
Martin Spott
3849de1931 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-26 16:23:58 +02:00
Martin Spott
1a46974cb9 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-26 11:18:56 +02:00
Martin Spott
25918b8b76 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-16 22:55:44 +02:00
Stuart Buchanan
20bd0737a2 Make tree textures consistent across runs by replacing rand() call with
something deterministic.
2011-09-15 21:11:00 +01:00
Martin Spott
31fdfbaf38 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-14 19:55:27 +02:00
Martin Spott
8428cae1c8 Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-14 15:50:19 +02:00
Martin Spott
65ae34169d Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-13 13:37:12 +02:00
Martin Spott
ecff995e7c Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-12 16:02:00 +02:00
Martin Spott
40dc9ff95e Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-12 09:30:27 +02:00
Martin Spott
24a421c83e Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-12 00:57:50 +02:00
Martin Spott
b204b3c8eb Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-09 18:13:12 +02:00
Martin Spott
34738bb20a Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-08 18:09:24 +02:00
Martin Spott
1b1068248d Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-08 11:48:56 +02:00
Martin Spott
9f684978cf Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-07 19:21:53 +02:00
Martin Spott
747717e2ee Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-07 18:35:40 +02:00
Martin Spott
ed7f2df04e Merge branch 'next' of git.gitorious.org:fg/simgear into next 2011-09-07 17:42:54 +02:00
Martin Spott
b159a72ce9 Fix CMake HLA fix 2011-09-05 18:45:33 +02:00
Mathias Froehlich
29faf13afd Move the decision which rti to use into HLAFederate. 2011-08-30 22:18:29 +02:00
James Turner
427d6c3316 Async lookup attempt #3 - use OpenThreads instead - I'm going to kill off SGThread imminently. 2011-08-30 15:14:14 +01:00
James Turner
eafea28266 Revert "Asynchronous host lookups+caching, attempt #2"
Bah, SGThread is a pain, need to switch to OpenThreads

This reverts commit 1cb9a79fd4.
2011-08-30 13:41:06 +01:00
James Turner
1cb9a79fd4 Asynchronous host lookups+caching, attempt #2 2011-08-30 12:51:03 +01:00
Mathias Froehlich
959791ffde Add modifyLookahead to the rti abstraction. 2011-08-30 07:28:13 +02:00
Mathias Froehlich
a5775cdb94 Add SGVec* convinience hla data elements. 2011-08-30 07:27:24 +02:00
Stuart Buchanan
05272d1070 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-08-29 14:33:02 +01:00
Mathias Froehlich
b5d2cfdbea Fix error message in RTI13ObjectInstance. 2011-08-28 22:26:16 +02:00
Mathias Froehlich
e716f82670 Add query{Looahead,FederateTime} to the hla interface. 2011-08-28 21:22:02 +02:00
ThorstenB
dc5af66748 Merge commit 'refs/merge-requests/9' of git://gitorious.org/fg/simgear into merge-requests/9 2011-08-28 14:10:11 +02:00
ThorstenB
40e177a02e #329: fix issue with mismatching sound volume
Sounds played after changing view position sometimes had incorrect volume
2011-08-27 12:00:17 +02:00
ThorstenB
36a8243f73 Support absolute paths for XML includes.
Use standard path resolver when searching for includes. Includes like
  <foo include="/Aircraft/Instruments/myfile.xml">
are now also supported - no need for
  <foo include="../../../Aircraft/Instruments/myfile.xml">.
2011-08-27 11:53:15 +02:00
Stuart Buchanan
d90647e9ba Merge branch 'next' of gitorious.org:fg/simgear into next 2011-08-26 19:09:51 +01:00
James Turner
c7152af191 Further tweaks to only consider IP4 addresses for the moment, when using getaddrinfo. 2011-08-26 11:27:50 +01:00
James Turner
2f9ba31b0a Request only IP4 addresses for the moment, further work required to deal with IP6 addresses. 2011-08-26 09:36:59 +01:00
Stuart Buchanan
ef48baafcc Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-08-25 22:01:07 +01:00
Christian Schmitt
1227bd4898 Don't make CMake install HLA libs and headers in every case.
Only install them when RTI is enabled. The autotools build system
handles this equally.
2011-08-25 14:03:52 +02:00
Torsten Dreyer
09e610b900 Implement #327 Add condition checking the range of a value
New feature for <condition> elements:
An (optional) element <precision> allows for fuzzy equals checks
example:
<condition>
  <equals>
    <property>/foo</property>
    <value type="double">0.0</value>
    <precision>0.1</precision>
  </equals>
</condition>

This condition evaluates as true if /foo is within [-0.05..0.05]
(both inclusive)
The precision tag works for int, long, float and double propeties.
It has no meaning for bool properties. For string properties,
precision sets the length of the strings to compare.
2011-08-24 21:26:02 +02:00
Christian Schmitt
b317520543 Make RTI configurable 2011-08-24 13:25:46 +02:00
Christian Schmitt
25c3881782 fix some of the CMake syntax and correctly print the headless option 2011-08-24 13:23:46 +02:00
James Turner
27e8916843 Another Windows typo-fix. 2011-08-24 11:29:09 +01:00
James Turner
fa27207351 Include ws2tcpip.h header (for getaddrinfo) on Windows 2011-08-24 11:25:37 +01:00
James Turner
3753d50992 Fix a release build issue, meaning of IDLE state was overloaded, add an explicit state when we're waiting for the response start. 2011-08-24 02:30:27 -07:00
James Turner
b7654c181d Copy constructor and assignment operator for revised IPAddress 2011-08-24 02:30:02 -07:00
James Turner
50e226a146 Change IPAddress to use getaddrinfo internally, and store the sockaddr data via a pointer 2011-08-24 09:46:20 +01:00
Stuart Buchanan
991f28906e Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-08-22 21:15:58 +01:00
James Turner
f18a9493b3 Revert "Support non-blocking address lookups, and switch to getaddrinfo over gethostbyname. (Only affects netChannel - raw socket will use blocking behaviour by default, as previously)"
This reverts commit 878b504f8e.
2011-08-22 10:15:05 +01:00
James Turner
bca9a787f6 Revert "Keep automake working, added new files"
This reverts commit a175033e3b.
2011-08-22 10:15:00 +01:00
James Turner
9699d76dcb Revert "Ick, further fixes for Linux/MSVC"
This reverts commit 5f07efa12a.
2011-08-22 10:14:55 +01:00
James Turner
5f07efa12a Ick, further fixes for Linux/MSVC 2011-08-22 09:10:38 +01:00
James Turner
a175033e3b Keep automake working, added new files 2011-08-21 22:37:01 +01:00
James Turner
878b504f8e Support non-blocking address lookups, and switch to getaddrinfo over gethostbyname. (Only affects netChannel - raw socket will use blocking behaviour by default, as previously) 2011-08-21 22:30:04 +01:00
Torsten Dreyer
669ab640da Remove (last) reference to obsolete visual_enviro.hxx 2011-08-21 21:13:38 +02:00
Stuart Buchanan
2f381c22e3 Further enhancements/bug fixes to the 3D clouds:
1) Default values for [min|max]_[cloud|sprite]_[width|height] changed to be
   more logical.

2) Cloud bounding box expanded slightly to ensure they aren't over-culled

3) Cloud location now defines the _base_ of the cloud.

4) Sprites that would extend below the bottom of the cloud are now shifted
   upwards to ensure no cloud appears below the base.
2011-08-21 19:18:24 +01:00
ThorstenB
ee06c12374 Fix sg_dir dot-file handling
File dialogs never showed ".." directories for navigation, since these were
filtered by the "INCLUDE_HIDDEN" option. Only the "NO_DOT_OR_DOTDOT"
option should be used for filtering - otherwise it's impossible to show
the "."/".." directories while all other files are still hidden.
2011-08-21 14:31:08 +02:00
Torsten Dreyer
225c2803ac remove reference to obsolete visual_enviro.hxx 2011-08-20 08:51:39 +02:00
Curtis L. Olson
1e0bd6717e Add visual_enviro.hxx to the source distribution (why isn't visual_enviro.cxx
built here?)
2011-08-15 22:45:44 -05:00
Curtis L. Olson
33c84965ad Make sure hla tree is added to source distribution. 2011-08-15 22:05:18 -05:00
ThorstenB
a668e47fa1 Introduce some more logging classes.
The current habit of almost everything being in either SG_GENERAL or
SG_ALL really sucks :).
2011-08-11 23:45:19 +02:00
Curtis L. Olson
c95d76266a Fix "make dist" 2011-08-11 09:47:07 -05:00
James Turner
902948e3c6 Tweaks to queuing of HTTP/1.0 connections, and tests for sequential connections in both 1.0 and 1.1 modes. 2011-08-08 18:09:30 +01:00
Stuart Buchanan
2805a2d0cc Add support for "squashing" the billboarding of individual 3D cloud sprites, to allow thin layers of stratus to be generated by large textures. 2011-08-07 12:56:10 +01:00
Stuart Buchanan
410c5ae919 Add control of 3D cloud field wrapping. Base code was already present, but without accessor methods. 2011-08-07 11:41:25 +01:00
James Turner
7525fd5e3e Update HTTP code to support HTTP/1.0 responses, eg metarproxy 2011-08-07 10:49:13 +01:00
Frederic Bouvier
55208d7d1f Remove obsolete files 2011-08-06 16:41:02 +02:00
Frederic Bouvier
88e2cdd283 Fix issue #392: mktime takes a localtime as input. Assumption that if HAVE_DAYLIGHT is missing imply that mktime takes a gmt time is wrong (sg_time.cxx, line 482) 2011-08-06 16:26:21 +02:00
Frederic Bouvier
6ac69b604e Fix a typo 2011-08-06 15:58:31 +02:00
James Turner
76ba747706 Whoops, fix tests for user-agent being HTTP/1.1 spec 2011-08-04 19:37:30 +01:00
ThorstenB
469c0242d4 Improved CMake support for libsvn
Added missing CMake defines for SVN_CLIENT.
Don't detect libsvn without APR.
When installed, enable libsvn support by default (same as for automake).
When enabled, provide libsvn include dir to libtsync.
gitignore temporary CMake files
2011-08-04 19:28:13 +02:00
James Turner
115531e944 Further HTTP improvements, correct proxy support, spec compliance, support for chunked encoding. 2011-08-04 18:03:56 +01:00
ThorstenB
6edfacbf4e Ove Kåven: Fix property refcounting for particles 2011-08-01 19:47:19 +02:00
James Turner
a2249becba Further HTTP improvements, wget-alike test program to check it all behaves! 2011-08-01 09:03:12 +01:00
ThorstenB
b53c53d9d8 #232: resurrect the "point sprites for runway lights" switch
Automatic GL/OSG feature detection still not working, since we don't have
a "context" - but at least the manual switch works (on start-up only).
2011-07-31 14:00:48 +02:00
James Turner
13736219ff Ooops, forgot automake 2011-07-30 12:41:54 +01:00
James Turner
3ac5ff0cac Clean header dependencies of condition.hxx - introduce a new header, propsfwd.hxx, for common case of headers that only need SGPropertyNode_ptr and SGCondition_ptr 2011-07-30 10:48:37 +01:00
James Turner
19119cc4ae Tweaks to HTTP code, in preparation for using it for metar - especially, test code for proxies 2011-07-30 10:43:49 +01:00
Stuart Buchanan
38ac7b41ad Updates to random forest:
- Bug fix - use multiple textures per tile
- Graduate LoD so tree cover fades in/out.
2011-07-29 15:22:24 +01:00
Stuart Buchanan
b47d1ad5fd Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-07-26 22:17:14 +01:00
Torsten Dreyer
45f642c4e4 Don't rely on simgear/version.h
version.h is generated by the build system for official builds of
FlightGear. To avoid complicating the life of regular developers,
especially on Windows, we set HAVE_VERSION_H if version.h is generated.
If that define is not set, we include this file instead, which provides
placeholder values instead.
2011-07-25 20:22:57 +02:00
Stuart Buchanan
04dc28cb33 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-07-21 18:45:13 +01:00
Mathias Froehlich
f7e9d79322 Make it compile with gcc-4.6 2011-07-19 19:23:53 +02:00
James Turner
5c6076d72d Merge branch 'next' of gitorious.org:fg/simgear into next 2011-07-19 17:56:04 +01:00
James Turner
ee1901225b Ooof, lurking PLIB reference in the tests 2011-07-19 17:55:40 +01:00
Mathias Froehlich
b61ba449fb Fix case of SGGeometryTest.cxx 2011-07-19 18:54:02 +02:00
James Turner
d53e2fa8c1 Enable more unit-tests via CTest 2011-07-19 17:30:08 +01:00
James Turner
20ac2dcd04 Remove some debug output, fix version.h include path 2011-07-19 14:34:07 +01:00
James Turner
ac7db26f17 But of course, Mac lacks malloc.h - so you cstdlib instead. <sigh> 2011-07-19 06:17:05 -07:00
James Turner
4a65a23706 test linkage needs librt on Linux. Need to tidy this up on the FG side. 2011-07-19 13:53:13 +01:00
James Turner
425d83c497 Fix Linux compilation of netChat - explicit include of malloc.h required. 2011-07-19 05:32:39 -07:00
James Turner
a7d338a58e And not forgetting VC90 either. 2011-07-19 13:10:01 +01:00
James Turner
6a612972e2 Not forgetting automake for the moment 2011-07-19 12:56:49 +01:00
James Turner
f06f25532c Tiny HTTP client layer on top of NetChat - and CTest support for some SimGear tests. 2011-07-19 12:55:55 +01:00
ThorstenB
116c487384 Fix locale setting for Windows 2011-07-18 20:29:11 +02:00
ThorstenB
5f70abb16d Clean solution for locale problem.
Changing and reverting the locale isn't thread-safe. Instead, setup the
environment to ensure the active locale sticks to default "C" locale at
any time.
2011-07-18 20:15:50 +02:00
Stuart Buchanan
c17110f6e7 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2011-07-18 19:11:25 +01:00
Torsten Dreyer
69cbc2feb5 Bump to version 2.5.0 2011-07-17 11:06:45 +02:00
Torsten Dreyer
feb0b83365 Bump version to 2.4.0 2011-07-17 10:46:56 +02:00
Stuart Buchanan
03796f2337 Merge branches 'next' and 'next' of git://gitorious.org/fg/simgear into next 2011-07-03 19:03:06 +01:00
ThorstenB
d4f5a35e87 Alert message formatting.
Avoid log output cluttering due to "missing animation objects".
2011-07-03 13:04:00 +02:00
Torsten Dreyer
da707f3e40 terrasync: some code cleanup - don't use snprintf 2011-06-28 13:16:08 +02:00
ThorstenB
59a6fd1ed8 #348: (continued) Missing sound files not reported properly
Avoid useless "File '' not found." messages for missing sound files.
2011-06-26 01:06:07 +02:00
ThorstenB
8c8d9e5cc4 #348: Missing model/texture files not reported properly
Whenever resolving a (relative) path to an absolute path with
'findDataFile', check if the result is empty and report original
(relative) path as missing. Otherwise no or a meaningless message is
issued ("File '' not found.").
2011-06-26 00:36:19 +02:00
Torsten Dreyer
d36170879c Terrasync: make whitespace in pathnames work under windows 2011-06-25 00:04:44 +02:00
ThorstenB
204e483c08 Disable support of white-space path for Windows
Apparently enclosing white-space paths using '"' doesn't work on Windows.
2011-06-23 17:20:06 +02:00
ThorstenB
f582eb5310 Improve upate interval after failed updates. 2011-06-23 17:20:06 +02:00
Torsten Dreyer
6f9a14d6c4 Fix bug #346: httpd broken
Fix bug introduced by myself in
commit b06e38699a
2011-06-22 22:40:23 +02:00
ThorstenB
76fcad0a0b Bad boundary check. Add missing parentheses. 2011-06-22 09:16:27 +02:00
ThorstenB
cc06799838 fix #353: svn doesn't like stray path separators 2011-06-20 22:46:46 +02:00
ThorstenB
8a26c382a2 Improve error handling and avoid refresh nuisances.
Ignore errors due to missing (ocean-)scenery data on SVN server.
For now, only refresh scenery tiles when ocean is replaced by actual
scenery data after download.
2011-06-20 22:10:07 +02:00
ThorstenB
22198d8bd2 Improve external SVN support.
Support white-space paths when calling external SVN utility.
Support optional configuration of absolute path to SVN utility.
2011-06-20 22:05:37 +02:00
Frederic Bouvier
d534dcadfb Compile built-in svn in MSVC if 32-bit target is selected 2011-06-15 08:13:37 +02:00
ThorstenB
708ae35068 Melchior FRANZ: fix SGPropertyNode::LAST_USED_ATTRIBUTE
fixes commit c782a32076,
(also see 38494a48d8 :) )
2011-06-14 21:49:42 +02:00
ThorstenB
50cea4f64e Csaba Halasz: fix SGTimerQueue so tasks can remove themselves properly
fixes commit c033979130
2011-06-13 14:13:48 +02:00
ThorstenB
c782a32076 Introduce "PRESERVE" flag to protect properties on sim reset.
Some specific properties need protection and shouldn't be restored to their
original values on sim-reset.
2011-06-12 20:32:13 +02:00
ThorstenB
edc877442f Add optional attribute condition to "copyProperties".
Option to only copy properties with specific attribute values.
Default is copy all (as before).
2011-06-12 13:41:38 +02:00
ThorstenB
a1fe0f6305 Make some properties read-only to avoid sim-reset issues.
Do not loose internal statistics/state on sim-reset
2011-06-12 13:31:23 +02:00
ThorstenB
cb5aee9fa4 Add missing CMake module for built-in svn-client support.
Thanks to Martin for spotting this.
2011-06-12 10:08:16 +02:00
ThorstenB
9b18b14f11 Added missing terrsync make+header files... 2011-06-11 23:58:00 +02:00
ThorstenB
0fd7bb8d3f Convert terrasync into a subsystem.
Fixed scenery tile refresh method.
Simgear automake makefiles with libsvn detection.
Simgear CMake support for libsvn (may not work :) )
2011-06-11 23:22:26 +02:00
ThorstenB
c836018ac7 Copied original terrasync sources 2011-06-11 22:55:57 +02:00
ThorstenB
ba678eabdc Add method to reload specific scenery tiles. 2011-06-09 22:24:08 +02:00
ThorstenB
9442d3d0f3 Added guarded blocking deque class.
So, what are we going to do with it... ;-)
2011-06-08 23:39:24 +02:00
Mathias Froehlich
9f0313dd0b Do not crash on exporting some EffectGeodes. 2011-06-08 13:42:30 +02:00
ThorstenB
3d109f9c4c fix #314: Nasal not working on i386/32bit systems with gcc>=4.5.x
Change magic Nasal reftag to encode a quiet NaN (qNaN) instead of a
signaling NaN (sNaN), since sNaNs cannot pass cleanly through an FPU
(an sNaN is always converted to a qNaN, even by simple FPU load/store
instructions). gcc 4.5.x uses float load/store operations more
aggressively to move our 64bit Nasal variables (naRef) around.

Signed-off-by: Andy Ross
2011-06-02 10:05:10 +02:00
Torsten Dreyer
f8a337fb9f gcc warning fix: remove unused variable 2011-05-31 15:53:25 +02:00
ThorstenB
3c0966279c fixed #260: Scale animation also scales color
Added missing normalization. Thanks to Lauri for analysing this.
2011-05-29 18:40:19 +02:00
ThorstenB
c033979130 screen shot fixes (issue #127 related)
Provide proper return status when screen grabbing.
Allow tasks to remove themselves (return task entries to the queue _before_
executig them)
2011-05-28 23:09:06 +02:00
Torsten Dreyer
c828961327 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-05-28 10:20:03 +02:00
Torsten Dreyer
83a95a0488 (Re)fix bug #285, textranslate broken
Due to fingertrouble, I removed the check for _step == 0 which
this patch re-adds.

Also, make this function look more like a template by not using
0.0 - constants.
2011-05-28 10:17:19 +02:00
ThorstenB
f3c131ffaf Minor compiler version detection issue.
Well, almost prepared for gcc 5.0 now ;-).
2011-05-27 22:30:43 +02:00
Torsten Dreyer
b06e38699a Make multicast sockets work under windows
msdn article 737550 states that "the preferred method is to call the
bind function to associate a socket with a local IP address and then
join the multicast group. Although this order of operations is not
mandatory, it is strongly recommended".
Since binding to the multicast address seems to fail, let's try binding
to INADDR_ANY and joint thereafter.
2011-05-27 21:06:06 +02:00
Torsten Dreyer
3a07e2fe21 ignore cmake generated files 2011-05-25 19:21:08 +02:00
Torsten Dreyer
ca668f8a37 Fix bug #285 textranslate and scroll animation with negative numbers
rewrite SGStepExpression::apply_mods so it creates the same step
for negative numbers as it does for positive numbers.
2011-05-25 19:14:09 +02:00
James Turner
5181aecc7b Port version-defined-in-a-file logic over from fg. 2011-05-21 14:56:10 +01:00
James Turner
0e92cfbd0d Bump Simgear version to 2.3.0 - should have been done after 2.2.0 was branched, oops. Will refactor this lot to use a single 'version' file like FG, soon. 2011-05-21 14:12:31 +01:00
Stuart Buchanan
60c7507a33 Fix 3D cloud elevation 2011-05-14 21:13:05 +01:00
ThorstenB
c7c3fae5c2 Also remove visual_enviro.cxx from the VC90 build. 2011-05-07 19:40:01 +02:00
Mathias Froehlich
4acbb2a312 Also remove visual_enviro.cxx from the cmake build system. 2011-05-07 18:32:44 +02:00
Torsten Dreyer
4e6159aa07 Remove unused class SGEnviro
This class and their source files visual_enviro.[h|c]xx were
unused since OSG transition. It's only functionality was to
keep a variable for the enable-state of rendering of precipitation.
This has now been moved to SGPrecipitation.
2011-05-06 14:10:04 +02:00
Torsten Dreyer
6a1d05646c fix typo 2011-05-06 13:07:21 +02:00
Curtis L. Olson
2e05043f43 Fix a crash on exit. The SGEnviro destructor was attempting to delete an
object that had already been deleted by the sound manager.  Since SGEnviro
doesn't own this object, I removed the delete from it's destructor.
2011-05-03 13:24:57 -05:00
Frederic Bouvier
1b8216e911 Consistency fix - remove a warning under MSVC 2011-04-26 20:42:42 +02:00
Frederic Bouvier
a2121b86df Compile under MSVC 2011-04-26 19:45:40 +02:00
Torsten Dreyer
1cd17e9edd Improvements to the global 3D clouds system
Stuart Buchanan:
Improvements to the global 3D clouds system
- clouds now move with the wind
- bug causing cloud coverage to be less than it should have been fixed
- support for adding 3D clouds with an fg_command.

(https://gitorious.org/fg/flightgear/merge_requests/1554)
2011-04-23 20:56:28 +02:00
Erik Hofman
5229f5a13c Lauri Peltonen's patch to increase the number of rings and bands of the sky dome 2011-04-16 11:32:34 +02:00
Torsten Dreyer
4ff014d275 Add multicast support for sockets 2011-04-13 18:43:28 +02:00
ThorstenB
83243f471a Enable OSG cache (default) and option to disable.
(also requires flightgear update)
2011-04-03 18:56:09 +02:00
ThorstenB
3c0c51a946 Minor event manager clean-up/simplification.
(Mainly disliked the "delete this;" concept :) ).
2011-04-03 18:22:39 +02:00
ThorstenB
08ad449774 Improve subsystem manager's timing statistics
Option to print statistics at run-time.
Convenient filter parameters to show subsystems with jitter or excessive
execution time only.
2011-03-23 23:12:13 +01:00
ThorstenB
eae1b99036 Keep PropertyList outside global namespace
Avoids conflict with FG's GUI widget "PropertyList"...
(don't use "using..." in header files since namespaces become useless then)
2011-03-23 22:30:42 +01:00
ThorstenB
44f27b23d0 Avoid some memory leaks in derived classes due to non-virtual destructors. 2011-03-19 14:50:18 +01:00
ThorstenB
92c83bc280 Avoid nuisance sounds in initial update loop.
Stop all "in-transit" sounds effects from triggering in the first update
loop when their initial property value is "1".
2011-03-19 14:48:58 +01:00
ThorstenB
10bbd435b7 Catch dangling property ties.
It's bad when tied properties are not untied before removing the tied property list.
We could try to "untie" the properties in the destructor - but that usually
caused weird mem access errors, since the tied properties will access
a no longer existing object (the very object whose destruction called the
TiedPropertyList destructor...). => so just add a warning and a nagging trap :)
2011-03-07 19:32:20 +01:00
ThorstenB
2ef8672a6b Change cloudfield::addCloud interface,
so it's more obvious that "addCloud" won't keep a reference to SGNewCloud.
2011-03-07 19:26:37 +01:00
ThorstenB
a22dd264cd Replace occurrences of osgDB::findDataFile with SGModelLib wrapper
which considers separate aircraft dirs (--fg-aircraft).
2011-03-06 22:38:44 +01:00
ThorstenB
baf5116841 Merge remote branch 'origin/releases/2.2.0' into next 2011-03-04 22:52:21 +01:00
ThorstenB
e55017bbfc Fix TextureBuilder to work with --fg-aircraft dirs.
Avoid direct use of osgDB to search for files. Using SGModelLib
instead to also search fg-aircraft dirs.
2011-03-04 22:50:32 +01:00
Csaba Halasz
19636bda4e Add missing META_Object to SGReaderWriterXMLOptions (needed for proper cloning) 2011-03-01 20:57:09 +01:00
Torsten Dreyer
83124e0c05 Don't depend on props.hxx
There is no reference to anything defined in props.hxx, so remove
the dependency here.
2011-02-27 20:35:44 +01:00
Torsten Dreyer
a079870bca Add strutils::starts_with and strutils::ends_with 2011-02-20 15:29:06 +01:00
ThorstenB
ce71b8c1cf Merge remote branch 'origin/releases/2.2.0' into next 2011-02-19 11:59:10 +01:00
ThorstenB
7b0c25f91e #83: John Denker: Set correct file modes
Sources shouldn't be executable.
2011-02-19 11:54:10 +01:00
Tim Moore
feab25d0be Merge branch 'releases/2.2.0' into next 2011-02-17 11:40:47 +01:00
Tim Moore
956b4406d0 fix SGPagedLOD change for 2.8.3
One more try...
2011-02-17 11:39:52 +01:00
Tim Moore
3a0fbae4d9 Merge branch 'releases/2.2.0' into next 2011-02-16 16:54:35 +01:00
Tim Moore
f106dc2a29 don't assume that OSG 2.8.3 has PagedLOD options
I was confused by my git svn import of the OSG tree.
2011-02-16 16:47:33 +01:00
Tim Moore
252a539e69 Merge branch 'releases/2.2.0' into next
Conflicts:
	simgear/scene/model/SGPagedLOD.cxx
2011-02-15 12:52:03 +01:00
Tim Moore
df6badfdd5 accomodate changes to osgDB::DatabasePager interface
The change was introduced in OSG SVN revision 12080. Note: that
revision has a bug that causes fgfs to crash. The bug is fixed in
revision 12170.
2011-02-15 12:41:23 +01:00
Torsten Dreyer
7479ae521c Provide easy Tie() for indexed properties 2011-02-14 20:24:41 +01:00
ThorstenB
416fb94ae8 Clear tile cache on (re-)init.
Clearing the cache was disabled to avoid scenery reloading on sim resets,
which is now avoided elsewhere (in FG).
Cache cleaning is now needed to support new option for complete scenery
reloading.
2011-02-13 19:23:21 +01:00
Torsten Dreyer
3a620fe55d Fix initial value for tied read-only properties 2011-02-12 14:46:58 +01:00
ThorstenB
5208750cdb Ivan Ngeow: Fixed compile for FreeBSD platforms. 2011-02-11 18:50:20 +01:00
ThorstenB
c684f8f043 Ivan Ngeow: Fixed compile for FreeBSD platforms. 2011-02-11 18:49:01 +01:00
ThorstenB
73084863b7 Temporary warning when compiling against OSG 2.9.11.
Current OSG development isn't supported by FG yet, so add a
warning for now...
2011-02-06 20:34:52 +01:00
Torsten Dreyer
503310cdb8 Darn! Typo in vc90 project file 2011-02-06 16:37:48 +01:00
Torsten Dreyer
bda8d34c2b Use tiedpropertylist.hxx in cmake and vc90 2011-02-06 16:35:15 +01:00
Torsten Dreyer
2ee87483f9 Move TiedPropertyList from flightgear to simgear 2011-02-06 15:05:50 +01:00
ThorstenB
9e04bf1ece Temporary warning when compiling against OSG 2.9.11.
Current OSG development isn't supported by FG yet, so add a
warning for now...
2011-02-06 10:04:55 +01:00
Frederic Bouvier
29c8c9f989 Fix cppcheck performance warning : Prefer prefix ++/-- operators for non-primitive types. 2011-01-30 21:22:06 +01:00
Frederic Bouvier
1035e714ff Deprecate VS2010 handmade project files now that we have Cmake 2011-01-28 19:03:38 +01:00
Frederic Bouvier
57fa022c9f Cmake: fix non MSVC build 2011-01-28 14:51:15 +01:00
Frederic Bouvier
76c3f7bc8f Cmake: support VS2010 and MSVC 64 bit 2011-01-28 14:46:05 +01:00
Torsten Dreyer
6d2646239e Fix wrong difference calculation in SGExpression 2011-01-25 23:01:14 +01:00
Torsten Dreyer
c955e61ba7 Fix wrong difference calculation in SGExpression 2011-01-25 22:58:50 +01:00
Frederic Bouvier
c31a5279af Cmake: restore its original name to the ephemeris library 2011-01-23 21:05:37 +01:00
ThorstenB
840780dc4a Another place to catch SG exceptions.
SGBinding::fire needs to catch, otherwise exceptions in the event handler
context cause an FG exit (fixes a crash with the route manager dialog).
2011-01-20 19:39:33 +01:00
ThorstenB
02b3c37b9f Another place to catch SG exceptions.
SGBinding::fire needs to catch, otherwise exceptions in the event handler
context cause an FG exit (fixes a crash with the route manager dialog).
2011-01-20 01:06:46 +01:00
Mathias Froehlich
d14fe813a9 Add the hla directory to the cmake build system. 2011-01-17 21:34:00 +01:00
Mathias Froehlich
44ff23b227 Add an initial implementation of a rti/hla dispatcher. 2011-01-17 21:33:45 +01:00
Mathias Froehlich
257459abc6 Add the new hla directory to the build system. 2011-01-17 21:33:33 +01:00
Torsten Dreyer
e988dc0e42 Fix bug in SGMisc<T>:: normalizePeriodic()
SGMisc<T>::normalizePeriodic(min,max,value) returned zero for
all values less than min.
Example:
A call of normalizePeriodic(0,twopi(),-pi()) returned zero
where the correct value would be 3*pi().
2011-01-17 19:51:29 +01:00
James Turner
7d544dee47 Olaf Flebbe: Decrease required OSG version. 2011-01-13 22:14:37 +00:00
Frederic Bouvier
1670f88e54 MSVC fix: deambiguiate function calls 2011-01-08 14:55:22 +01:00
Torsten Dreyer
58c7edfed6 SGExpression bugfix: allow <sin> within <product> 2011-01-08 13:06:25 +01:00
Torsten Dreyer
122d7f681f Add <expression> to animations
Allow complex animation expressions

Example: translate along the y-axis following a sin
function.
<animation>
  <type>translate</type>
  <axis>
    <y>1</y>
  </axis>
  <expression>
    <sin>
      <product>
        <property>/some/position-norm</property>
        <value>6.28</value>
      </product>
    </sin>
  </expression>
</animation>
2011-01-07 22:43:46 +01:00
Frederic Bouvier
acec1ba4bf Remove the dependency to boost serialization 2011-01-05 09:54:50 +01:00
Curtis L. Olson
0040757cd3 Merge branch 'next' of gitorious.org:fg/simgear into next 2011-01-03 07:55:45 -06:00
Curtis L. Olson
49d554e9d8 Update simgear version number to keep pace with FlightGear. 2011-01-03 07:54:31 -06:00
James Turner
fa3389ed23 Better MSVC Boost serialization fix from Olaf 2011-01-03 09:48:31 +00:00
Frederic Bouvier
188a84a893 Cmake: use build postfix 2011-01-02 19:44:04 +01:00
Frederic Bouvier
ceff1622c1 Cmake: Right way to search for include files 2011-01-02 18:45:14 +01:00
Frederic Bouvier
8d15cacf92 Cmake: MSVC_3RDPARTY_DIR is a path, not an option 2011-01-02 18:01:57 +01:00
James Turner
80161bfa96 Cmake: 3RDPARTY_DIR fixes from Olaf Flebbe 2011-01-01 21:06:43 +00:00
Torsten Dreyer
c32ab1b84f handle NCD (nil clouds detected) in METAR 2010-12-31 13:31:09 +01:00
Tim Moore
73c0ce628b Merge remote branch 'gitorious/next' into next 2010-12-29 18:12:56 +01:00
Tim Moore
dc68397e48 cmake improvements for shared library build 2010-12-29 18:12:44 +01:00
Tim Moore
c934b47f2e Issue 110: fix pick animation interaction with effects
Set OVERRIDE and PROTECTED attributes on pick animation state
attributes. Set up attributes and add a colorMode uniform so that the
default shader will take color and alpha values from the
material. Also, add a DotOsg writer method for ConditionNode.
2010-12-29 18:09:23 +01:00
James Turner
07d3d6508a Uninstall support, pinched from OSG. 2010-12-28 13:38:05 +00:00
James Turner
e4a8896fdc MSVC improvements from Olaf Flebbe. 2010-12-28 13:32:54 +00:00
Tim Moore
33e1a9457a set data variance to DYNAMIC for animated effect attributes 2010-12-26 18:34:00 +01:00
James Turner
b6a20fd6e4 64-bit compatability tweak from papillion 2010-12-20 14:46:53 +00:00
James Turner
ae9757bf43 Create version.h during SimGear CMake build 2010-12-19 19:08:14 +00:00
James Turner
b9a34b1b05 Initial work on CMake support for SimGear. 2010-12-19 14:16:39 +00:00
Erik Hofman
c33f66b691 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-12-13 18:40:39 +01:00
Erik Hofman
cf8d6c2621 Remove unused files 2010-12-13 18:40:08 +01:00
Torsten Dreyer
6c789f7165 metar: add string constants for cloud coverages 2010-12-12 22:18:10 +01:00
Erik Hofman
7d77eff4f4 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-12-12 20:23:08 +01:00
Erik Hofman
f83278bd61 Update the bad-doppler test and simplify it to only test for bad platforms. 2010-12-12 14:07:44 +01:00
Csaba Halasz
9a96018cc2 Compilation fix: add missing #include to SGPagedLod.cxx, needed by OSG 2.9.11 2010-12-12 00:23:06 +01:00
Torsten Dreyer
ab3612517f Make the max. opacity of a 2d cloud settable 2010-12-09 09:06:40 +01:00
Torsten Dreyer
0909722bb5 Metar: symbolic cloudnames and phenomena exposure
- use symbolic names for scattered, broken, overcast, etc. cloud
coverages.
- better approach to expose weather phenomena to the interface
2010-12-04 12:02:38 +01:00
Torsten Dreyer
1cb8f9237c Expose weather phenomena to the SGMetar interface 2010-11-27 21:04:04 +01:00
Anders Gidenstam
4cac366468 simgear/scene/sky/sky.cxx: Include sg_inlines.h with simgear/ prefix as all other simgear includes. 2010-11-26 21:49:30 +01:00
Torsten Dreyer
a6138b3445 Make visibility within cloudlayers settable 2010-11-26 19:24:44 +01:00
Frederic Bouvier
093e4614d3 Update VS2010 projects 2010-11-20 21:42:10 +01:00
Frederic Bouvier
82efb8a784 Update VS2010 projects 2010-11-20 14:23:20 +01:00
Frederic Bouvier
be720709fe Compile PropertyObject under Windows 2010-11-20 14:20:35 +01:00
James Turner
325b13b101 Build propertyObject on MSVC2008 2010-11-20 13:08:01 +00:00
James Turner
203d1c2b45 PropertyObject ::create tests. 2010-11-20 04:25:11 -08:00
James Turner
c3c97f2956 Shrink PropertyObjectBase by a pointer, don't pull exception header into the header. 2010-11-20 03:31:42 -08:00
James Turner
ac535de2fa PropertyObject enhancements, unit-test for make check 2010-11-20 02:49:04 -08:00
Torsten Dreyer
9d4f0f5824 A sum without diff is like foo without bar
Add a <difference> aka <diff> to SGExpression to compute
differences
2010-11-20 11:05:45 +01:00
ThorstenB
b4f5eaa541 Current timestamps for forced scenery loading.
Priorities during forced model loads won't work unless using current framestamps...
2010-11-19 13:39:20 +01:00
ThorstenB
66cdbf6215 Fixed invalid character in source file.
Removed illegal character (0xc). How did this happen???
2010-11-19 13:36:50 +01:00
ThorstenB
c9e0bfb7fe Improved tile cache priority scheme.
Use priorities for loading/unloading.
Maintain an expiry time for each tile.
Replaced "cache lock" by "current view" flag.
2010-11-19 13:33:12 +01:00
James Turner
6da8ef83af Merge branch 'topics/propobj' into next 2010-11-18 20:23:40 +00:00
James Turner
f53559b8d0 Initial propertyObject work. 2010-11-18 20:21:37 +00:00
Torsten Dreyer
49f038b9d1 Purge some gcc and MSVC warnings 2010-11-18 12:08:16 +01:00
Tim Moore
ce67657e0a eliminate property node path cache
The property path cache was making very little difference in practice
and made the eventual goal of having the property tree be thread safe
for readers more difficult to attain.
2010-11-17 11:25:07 +01:00
James Turner
56c520f455 Tighten up name filters on Unix. Fixes bug 168. 2010-11-15 23:23:40 +00:00
ThorstenB
9f88b077ee remove old .cvsignore files
Hello GIT!
2010-11-14 15:09:36 +01:00
Curtis L. Olson
50315a7346 Fix setsockopt() to match previous precident of setsockopt() usage (as seen
later in the setBroadcast() function.)
2010-11-12 15:52:33 -06:00
Frederic Bouvier
6b58afe823 Fix setsockopt call 2010-11-12 22:03:11 +01:00
Curtis L. Olson
167cba9e93 Patch to avoid the problem of the socket resource not yet being available
if the program is restarted quickly after being killed.

Reference: http://www.unixguide.net/network/socketfaq/4.5.shtml
2010-11-12 13:19:57 -06:00
Frederic Bouvier
ce89a410d2 Update VS2010 projects : use Boost 1.44.0 2010-11-07 20:01:18 +01:00
Frederic Bouvier
98d0f33f8f Don't crash on exit 2010-11-07 10:31:13 +01:00
Frederic Bouvier
c305341ef4 Update VS2008 projects : use Boost 1.44.0 available in last 3rd Party archive 2010-11-06 17:02:16 +01:00
ThorstenB
0607a67a92 Fixed METAR. Make loader fully HTTP compliant.
HTTP protocol requires a "Host:" line.
The old noaa server didn't mind. Now it does...
2010-11-05 20:07:50 +01:00
James Turner
5f2f95676c Formal shutdown interface on SGSubsystem. 2010-11-05 09:19:22 +00:00
Frederic Bouvier
4bf16243fc Update Vs2010 projects 2010-11-04 22:20:08 +01:00
James Turner
607738f22e Fix ConditionNode Win32 compilation. 2010-11-04 18:54:18 +00:00
James Turner
200df49d6e Make subsystem group destruction explicit, so get_subsystem calls during destruction are safe. 2010-11-04 18:49:24 +00:00
Tim Moore
580a1b7fc2 Add ConditionNode files to VC90 project 2010-11-04 15:04:03 +01:00
Tim Moore
3372f9fc0d add SGMath.hxx header file to ConditionNode.cxx
Apparently necessary for MSVC 2008.
2010-11-04 11:04:13 +01:00
Tim Moore
4787ac64ff issue 165: fix material animation condition problem
The evaluation of the condition is moved to a ConditionNode and
separated from the animation of values via properties. Previously the
conditional application of static values was broken.
2010-11-04 10:06:13 +01:00
Tim Moore
fef625ce27 add ConditionNode scenegraph node
This class directs its scenegraph traversal by evaluating a condition
and doesn't rely on an update callback.
2010-11-04 07:01:38 +01:00
ThorstenB
0b53dd8fa7 Show compiler warnings by default. 2010-10-30 20:53:19 +02:00
James Turner
fe628e44e1 Add platform defines to SimGear, and a replacement for ulSleep functions. 2010-10-30 19:18:57 +01:00
Frederic Bouvier
d314b6a552 Fix line endings 2010-10-29 19:47:44 +02:00
Frederic Bouvier
02462d1752 Quick hack to remote trailing / on Windows. Feel free to replace by something more elegant 2010-10-29 09:30:59 +02:00
ThorstenB
5b734d8c52 Merge branch 'integration' into next 2010-10-28 19:39:55 +02:00
James Turner
81d640ed7c Fix build when OSG implict-ref-ptr conversion is disabled. 2010-10-26 10:09:55 +01:00
Frederic Bouvier
7e2ad05fae Add mipmap.* to the unix build system 2010-10-25 21:59:55 +02:00
Frederic Bouvier
bda5890f17 Add a function to debug mipmaps 2010-10-25 21:51:27 +02:00
Frederic Bouvier
c7dd293e01 Update Vs2010 projects 2010-10-24 09:30:16 +02:00
Frederic Bouvier
fbf0a20f38 Unix line endings 2010-10-24 09:25:42 +02:00
Frederic Bouvier
87ccfbab02 Restore commit 48c6d3d89a by Torsten Dreyer: Provide a little more descriptive error message if TextureBuilder fails 2010-10-24 09:25:41 +02:00
Frederic Bouvier
97f39282ef Don't compute mipmap for inexistant image color components 2010-10-24 09:25:40 +02:00
Frederic Bouvier
4fd3d49fc1 Add mipmap control in the effect file 2010-10-24 09:25:40 +02:00
Frederic Bouvier
a70c8a9cae Untabify 2010-10-24 09:25:39 +02:00
Frederic Bouvier
c0926633e8 Update Vs2010 projects 2010-10-24 09:24:13 +02:00
James Turner
1ae91097ba Build fixes for net classes in Simgear. 2010-10-24 01:22:59 +01:00
James Turner
bfd76880a9 Migrate relevant PLIB netXXX classes into SimGear. 2010-10-24 01:12:42 +01:00
ThorstenB
662578dbe7 Buffer size safety.
Do not look for '\n' beyond valid data area.
Obey buffer length (in case a METAR contained a line > 512byte).
2010-10-23 14:47:24 +02:00
Torsten Dreyer
48c6d3d89a Provide a little more descriptive error message if TextureBuilder fails 2010-10-12 16:21:38 +02:00
Frederic Bouvier
7bdb530440 Add project.* to MSVC project files 2010-10-09 08:45:52 +02:00
Tim Moore
bfe953c18d replace glu functions with equivalents from OSG 2010-10-08 23:44:38 +02:00
Torsten Dreyer
136676012f Merge branch 'next' of gitorious.org:fg/simgear into next 2010-10-07 17:43:35 +02:00
Torsten Dreyer
0994ffc195 Don't crash in strutils::trim() with empty strings 2010-10-05 22:39:41 +02:00
Frederic Bouvier
df19feac34 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-10-05 08:32:00 +02:00
Frederic Bouvier
961fa89b7a Use same transformation for generated ocean tiles than for regular tiles. Fix the normal orientation that broke the new water shader 2010-10-05 08:30:52 +02:00
James Turner
ddf9e08069 Make get_subsystem safe during destruction of the manager. 2010-10-03 16:08:34 +01:00
Tim Moore
b5f3978b8a Thorsten Renk's fix for tile manager problems
Locking tiles in cache keeps tiles from mysteriously disappearing.
2010-10-02 23:05:52 +02:00
James Turner
82dc6c32ec Don't crash when a submodel fails to load. 2010-10-02 21:01:29 +01:00
James Turner
889e2d6f06 Add another overload for sg_io_exception ctor. 2010-10-01 12:27:08 +01:00
Torsten Dreyer
9a28642a4e tolerate NDV (no directional validation) in METAR 2010-09-27 19:38:15 +02:00
Torsten Dreyer
0b953462f7 Ivan Ngeow: Fix build on FreeBSD
FreeBSD 8.0-RELEASE, only a very small patch needed
to be applied to simgear/simgear/compiler.h, to add

so that __FreeBSD_version is defined.
2010-09-23 10:27:06 +02:00
Torsten Dreyer
061eb686c6 Fix wrong movement of 2d cloud layers on N/S courses 2010-09-19 10:53:25 +02:00
Frederic Bouvier
937297561f Fix MSVC 100 project files updated by hand 2010-09-12 12:06:57 +02:00
Erik Hofman
bf70d6f087 Set the listener position to it's default value, just like the samples position 2010-09-10 15:02:37 +02:00
Frederic Bouvier
26fdfc42f4 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-09-09 20:06:27 +02:00
Frederic Bouvier
abab8c6ec8 MSVC 10 project update 2010-09-09 20:06:15 +02:00
James Turner
a7697f6095 Second attempt to fixed OpenAL tests. 2010-09-06 14:27:58 +01:00
James Turner
49270e99e5 Fix up tests for revised SGSoundSample ctor. 2010-09-06 12:30:13 +01:00
James Turner
d75ce1e12e Pass current-dir down through XMLSound
(should allow relative paths in sound XML files)
2010-09-06 09:26:46 +01:00
James Turner
289e768ca5 Add ResourceManager, and use to find sound and model paths. 2010-09-06 09:09:58 +01:00
James Turner
44c587400d Validate sound file paths in an XML file. 2010-09-05 14:15:18 +01:00
Torsten Dreyer
df467b9dba Let SGCloudLayer handle coverage strings
This is currently handled in various places in FlightGear.
2010-08-27 18:20:09 +02:00
Frederic Bouvier
510543e14b Add a convenience constructeur to SGPath 2010-08-22 09:33:56 +02:00
Frederic Bouvier
c3133f020d std::string::c_str() is const 2010-08-21 09:02:12 +02:00
James Turner
a7439aa056 Standardise path-handling in XML mode files
aircraft-dir/fg-data paths always work, and
paths relative to the location of the current XML
file always work.
2010-08-17 11:05:55 +01:00
James Turner
d7bea0c4c6 Add isAbsolute/isRelative predicates to SGPath. 2010-08-14 22:51:01 +01:00
James Turner
764a3c29e9 Allow loading of 2.5D panels to be controlled again. 2010-08-14 19:48:52 +01:00
James Turner
3c57572b89 Ralf Gerlich: fix bucket numbering at extreme latitudes
Also document existing algorithms
2010-08-14 10:18:35 +01:00
Tim Moore
fe7c6554f7 support for integer uniforms
Also, share common Uniform objects
2010-08-13 12:54:02 +02:00
Tim Moore
19bb7f5a83 force static models to have effects too 2010-08-13 12:54:02 +02:00
Torsten Dreyer
c0e20ad56b add padding function lpad and rpad to strutils 2010-08-12 13:02:16 +02:00
Torsten Dreyer
49887ff06e Fix the fix that turned a warning into a bug :-( 2010-08-12 12:16:48 +02:00
Torsten Dreyer
1f6555c9ad two warning fixes 2010-08-12 11:42:04 +02:00
Torsten Dreyer
7f8efa7cef use correct parameter types for SGText::UpdateCallback 2010-08-12 11:35:09 +02:00
James Turner
8106956be2 Merge branch 'topics/cmdcatch' into next 2010-08-11 00:20:02 +01:00
James Turner
cc435ba817 Fix Win32 build of SGPath. 2010-08-09 09:13:28 +01:00
James Turner
0c55a4d7bb Catch exceptions raised executing a command. 2010-08-09 09:12:26 +01:00
James Turner
c4b4c0ce59 Make SGPath cache stat() information, cheers Fred
* cache exists/isDir/isFile in SGPath, to avoid
  repeated calls.
2010-08-09 08:19:14 +01:00
James Turner
d31c1df639 More ignore files, for 'make check' binaries 2010-08-08 09:55:31 +01:00
James Turner
780286ea81 Ding, dong, the witch is dead. PLIB is no more, in SimGear. 2010-08-07 18:03:37 +01:00
James Turner
20a75b9c9e Change how certain constants are (re-)defined, to avoid warning when PLIB sg.h is included. 2010-08-07 16:28:39 +01:00
James Turner
2a2e2716bd Removal of PLIB/SG from SimGear 2010-08-07 13:55:33 +01:00
James Turner
6a07c22826 Catch subsystem update() exceptions in the manager, and permit a maximum number of exceptions before suspending the subsystem. 2010-08-07 10:25:20 +01:00
James Turner
7c294915c8 Ensure 'make dist' works. 2010-08-07 09:09:58 +01:00
James Turner
7788cb288e Fixes for automake correctness. 2010-08-06 21:18:04 +01:00
James Turner
c1762c709e Ralf Gerlich: add headless mode to SimGear (merging simgear-cs) 2010-08-06 19:17:14 +01:00
James Turner
8690528080 Fix compilation if OSG ref_ptr implicit conversion is not enabled. 2010-08-06 18:42:56 +01:00
Frederic Bouvier
5376294389 Merge commit 'refs/merge-requests/1' of git://gitorious.org/fg/simgear into vivian/cube 2010-08-03 08:41:27 +02:00
Frederic Bouvier
fa1b703bf8 Update MSVC10 project files 2010-08-03 08:40:10 +02:00
Vivian Meazza
72d2c7f078 Remove debugging messages
Signed-off-by: Vivian Meazza <vivian.meazza@lineone.net>
2010-08-02 20:27:49 +01:00
Vivian Meazza
09ecc66e53 Add support for Cube Crosses. Based on Zan's work, with some bugs removed.
Signed-off-by: Vivian Meazza <vivian.meazza@lineone.net>
2010-08-02 20:22:33 +01:00
Erik Hofman
879dc295a8 Actually enable looping for a sample queue 2010-08-02 11:43:53 +02:00
Erik Hofman
8a5a1d3301 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-08-02 10:11:41 +02:00
Erik Hofman
67c8067aed Initial commit for a sample queue extension. 2010-08-02 10:10:58 +02:00
Frederic Bouvier
123e32e345 MSVC 10 build 2010-08-01 18:00:39 +02:00
Frederic Bouvier
3a09d67f59 MSVC 10 build: Resolve an ambiguity between boost::bind and std::tr1::bind 2010-08-01 18:00:37 +02:00
Frederic Bouvier
ec3ed8fbcd Project file to build and install SimGear alone 2010-08-01 18:00:32 +02:00
Frederic Bouvier
18370ebd08 Update project to use VC100 OSG and Boost 1.42.0 2010-08-01 18:00:30 +02:00
Frederic Bouvier
acbc09b232 MSVC10 build fix 2010-08-01 18:00:27 +02:00
Frederic Bouvier
9d1cf253b4 Compile with MSVC10 2010-08-01 18:00:25 +02:00
Frederic Bouvier
e46304d1ce Add VS2010 project files 2010-08-01 18:00:23 +02:00
James Turner
668c62b1f4 Missed removing a build rule. 2010-07-31 15:33:25 +01:00
James Turner
49f418f146 Remove legacy direct-OpenGL code in simgear/screen (predating switch to OSG). 2010-07-31 15:17:09 +01:00
Erik Hofman
c46c735f2f fix a typo 2010-07-30 10:44:50 +02:00
Erik Hofman
82aa7fcbad use std::string 2010-07-30 10:42:44 +02:00
James Turner
2cfeeb4b13 Merge branch 'topics/remove_point3d' of git@gitorious.org:~zakalawe/fg/james-simgear into topics/remove_point3d 2010-07-30 09:00:35 +01:00
James Turner
aa859c488f Remove deprecated vector classes - finally! 2010-07-30 00:46:30 +01:00
James Turner
1b2915aa2a WIP - removing remaining users of Point3D. 2010-07-29 17:49:37 +01:00
James Turner
e99c3d4705 Collapse SGGeoCoord into SGTimeZone, and switch timezone search to cartesian math. 2010-07-29 10:12:00 +01:00
James Turner
d23491646a Use a custom 'findDataFile' method in key places, and hook this into a callback set on SGModelLib. 2010-07-29 01:05:24 +01:00
Erik Hofman
1d740a63bd C++ify some code 2010-07-27 15:57:36 +02:00
Erik Hofman
d1897fabf0 Small bugfix, the previous test always sets _property (these days) 2010-07-27 14:51:44 +02:00
Erik Hofman
d4178d6440 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-27 10:15:28 +02:00
James Turner
f4d42289d4 More ignore rules for Git. 2010-07-27 00:21:44 +01:00
Erik Hofman
d0def466da Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-25 10:29:25 +02:00
James Turner
959f44502b Fix simgear::Dir::children on Linux where dirent->d_type might be 0; always use stat() to determine file type. Thanks to Alex Romonsan for helping debugging this! 2010-07-24 10:27:50 +01:00
Erik Hofman
1840541f6d Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-23 20:05:40 +02:00
Cutis L. Olson
c5ec6927b3 Add a method to set particle wind using from heading (deg) and speed (kt) 2010-07-23 09:01:49 -05:00
James Turner
7beaf3705e Add closest-point calculation to SGRay, to replace a vector.h helper. 2010-07-23 13:04:09 +01:00
Erik Hofman
792ffa2d26 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-23 13:57:53 +02:00
James Turner
bbd61977f1 Change SGPath::exists to use stat(), fix '.' and '..' handling on Windows, add simgear::Dir version of exists(). 2010-07-23 07:54:10 +01:00
James Turner
e3d1fa2686 Merge branch 'next' of git@gitorious.org:fg/simgear into next 2010-07-23 06:30:37 +01:00
James Turner
293d3b4fb3 Fix Win32 compilation of raw_socket. 2010-07-23 06:30:02 +01:00
James Turner
e1d8155565 Linux build fixes, now netSocket.h is no longer included. 2010-07-22 22:06:02 +01:00
James Turner
c37b27a926 I greatly dislike GNU automake. 2010-07-22 21:27:11 +01:00
James Turner
6b3a05e23f Move PLIB netSocket into SimGear, as simgear::Socket, and update the wrapper classes. 2010-07-22 20:02:37 +01:00
Erik Hofman
0e92bb58b0 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-22 08:57:04 +02:00
James Turner
63cbd4deb0 On Unix, check for symlinks from readdir(), and look through them (using stat()) to discern target type. 2010-07-21 22:08:06 +01:00
Frederic Bouvier
17bcd4e2ab Add a new function alias for MSVC: strcasecmp -> stricmp 2010-07-19 22:36:01 +02:00
Frederic Bouvier
72f301c655 Merge branch 'next' of git://gitorious.org/fg/simgear into fredb/winbuild 2010-07-19 20:02:41 +02:00
Erik Hofman
a62a8518b9 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-16 20:20:28 +02:00
Torsten Dreyer
fa169d6aa2 Merge branch 'next' of gitorious.org:fg/simgear into next 2010-07-16 18:35:55 +02:00
Torsten Dreyer
d2bcb86e1e Warning fix: compare signed/unsigned 2010-07-16 18:34:39 +02:00
Torsten Dreyer
ed7361622b Warning fix: unused variable in TextureBuilder.cxx 2010-07-16 18:19:56 +02:00
James Turner
3117ec5a7d Fix simgear::Dir compilation on some Unix setups, thanks Anders. 2010-07-16 08:40:07 +01:00
James Turner
cb4716f403 Initial work on simgear::Dir, replacement for PLIB ulDir functions. 2010-07-15 09:40:46 +01:00
Erik Hofman
b48c0e968f Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-14 12:19:08 +02:00
James Turner
aa2ed5fb0c Allow tasks to be removed from the EventManager by name. 2010-07-13 13:07:35 +01:00
Erik Hofman
8b7a279c61 Merge branch 'next' of git://gitorious.org/fg/simgear into next 2010-07-09 08:53:56 +02:00
James Turner
b286e9d337 Add two more subsystem groups, to aid in fixing bug 141. 2010-07-08 23:21:25 +01:00
Erik Hofman
d671c3d9fa At some points Flightgear stops and restarts the entire sample group containing the looping background/engine noise. But it does not restart the individual (looping) samples in the group. So now the background noise dies when resetting the sim or changing aircraft location. 2010-06-29 08:28:38 +02:00
Erik Hofman
7086f2dc89 brehmt:
When a sample's state constantly is "changed" (because sth. keeps updating the
sample in each update loop), then SGSampleGroup::update never ever checked if
the sample had already stopped playing by itself.
The attached patch reorders the last two conditions. It now first checks if a
sample has already stopped playing, before checking if there's sth to update.
2010-06-28 08:12:23 +02:00
Frederic Bouvier
7e8bb9ea00 Merge branch 'next' of git://gitorious.org/fg/simgear into fredb/winbuild 2010-06-19 08:14:26 +02:00
Frederic Bouvier
4e46bb6671 Merge branch 'master' of git://gitorious.org/fg/simgear into fredb/winbuild 2010-06-19 08:14:02 +02:00
Tim Moore
de35658096 Merge remote branch 'gitorious/next' into next 2010-06-17 23:46:52 +02:00
Tim Moore
034f5db3bd use an additional shader program map keyed using the resolved shader filenames 2010-06-17 23:45:27 +02:00
James Turner
57375bfd73 Merge commit 'b846e33' into next 2010-06-17 21:40:09 +01:00
James Turner
b846e33ee3 Extend Magvar interface to use SGGeod. 2010-06-17 21:39:10 +01:00
James Turner
cc9b817f0e Extend SGSubsystemGroup, to allow running a fixed dt time, internally 2010-06-16 18:02:41 +01:00
Tim Moore
0d419aba8a Add bool and int uniform types for shaders, and vertex-program-two-sided
vertex-program-two-sided is an extra parameter written by the code
that creates effects from state sets generated by the ac3d loader. The
objective of this work is to support a workaround for broken
gl_FrontFacing on some Macintosh machines.
2010-06-15 19:05:18 +02:00
James Turner
ae22321d9c Automake changes to Hudson 'make check' runs.
Includes moving the OpenAL test programs to 'noinst' so they don't run as part of make check
2010-06-14 12:38:41 +01:00
James Turner
87169febf8 Const-ify some ephemeris accessors, so they can be tied. 2010-06-14 10:23:06 +01:00
James Turner
dd044844e5 Add radial intersection code to SGGeodesy, and test coverage for geocentric helpers. 2010-06-14 10:15:44 +01:00
James Turner
0c8c596ee5 Fix longitude sign convention of geocentric routines
(derived from the Williams aviation formulary, with W longitude +ve)
2010-06-11 18:38:43 +02:00
James Turner
b9496fef1d Merge branch 'topics/condexp' into next 2010-05-27 15:19:38 +01:00
James Turner
b4b9d3a4b7 Support constant true and false values in conditions. 2010-05-27 15:19:04 +01:00
James Turner
0128c89f8d Merge branch 'topics/condexp' into next 2010-05-26 19:29:28 +01:00
James Turner
9e77d06c72 Support <table>s in expression XML. 2010-05-26 19:28:42 +01:00
Torsten Dreyer
25bb1cc957 Cleanup some nonprinting characters make this file work 2010-05-23 21:02:19 +02:00
Torsten Dreyer
2c6f8299f0 typo in gitignore filename 2010-05-23 19:09:00 +02:00
Torsten Dreyer
6a2773c3ac ignore generated files 2010-05-23 10:54:23 +02:00
Torsten Dreyer
1eea917121 ignore generated files 2010-05-23 10:45:01 +02:00
Torsten Dreyer
ea1bbbabfa ignore generated test apps 2010-05-23 10:44:29 +02:00
Torsten Dreyer
399d2bc73c Fix a gcc warning 2010-05-22 23:40:07 +02:00
Torsten Dreyer
0759dbcdc9 Merge branch 'next' of gitorious.org:fg/simgear into next 2010-05-22 23:36:39 +02:00
Torsten Dreyer
1ae0f9c19d New pick animation capability from Alex Perry
Alex Perry: Adds a new pick animation capability which parallels the existing
"action" for a named object.  Specifying "vncaction" and a transform
from model space will enable all mouse clicks on that object to be
delivered directly to the OSG image.  Currently, the readers for VNC
and PDF files yield interactive images; more are likely to be added
over time.
2010-05-22 23:35:01 +02:00
James Turner
e8364a03bc Merge branch 'topics/condexp' into next 2010-05-20 23:57:54 +01:00
James Turner
046d88ab2d Support <expression> children in comparison conditions. Also makes ordering of child nodes match XML consistently. 2010-05-20 23:56:04 +01:00
Mathias Froehlich
f161f78a33 Add a tight and cheap method to represent a rotation.
Adapt tests for that new method.
2010-05-17 23:13:59 +02:00
Erik Hofman
1912444886 revert previous commit, this was a mistake 2010-05-11 11:32:58 +02:00
Erik Hofman
b6ef5a0a3d Before 2010-05-08 11:19:01 +02:00
Frederic Bouvier
401c88adbb Test git commit with a simple change 2010-05-08 00:19:43 +02:00
James Turner
42984d1bfb Make ALUT 1.0 builds again, hopefully in the short term - MinGW needs this. 2010-05-07 00:12:21 +01:00
James Turner
6997082b03 Add .gitignore files, ignore automake/configure artefacts. 2010-05-06 11:25:53 +01:00
James Turner
139217dc79 Configure.as updates for ALUT changes, make --with-alut-framework= work. 2010-05-06 10:27:38 +01:00
Tim Moore
2cc2a857a2 Merge branch 'jmt/ref_ptr-conv' 2010-05-06 10:43:53 +02:00
Tim Moore
7dfb463ba9 Merge branch 'ehofman/framebuffer' 2010-05-06 10:43:45 +02:00
Tim Moore
da07871bc6 Merge branch 'mathias/intersect' 2010-05-06 10:43:27 +02:00
Tim Moore
530d2309e7 Merge branch 'ehofman/sound' 2010-05-06 10:43:12 +02:00
Tim Moore
7e7a5d38f8 Merge branch 'fredb/msvc-cleanup' 2010-05-06 10:42:59 +02:00
Tim Moore
ecf949dee0 Merge branch 'ehofman/model' 2010-05-06 10:42:44 +02:00
Tim Moore
9b0ba10b0b Merge branch 'jmt/ref_ptr-conv' into next 2010-05-05 10:42:41 +02:00
jmt
9f9c4cf32c Compile even if OSG_USE_REF_PTR_IMPLICIT_OUTPUT_CONVERSION is not set. 2010-05-05 10:42:29 +02:00
Tim Moore
536ebf604f Merge branch 'ehofman/framebuffer' into next 2010-05-05 10:39:32 +02:00
ehofman
03a616b737 Add support for EXT_framebuffer_object for Atlas 2010-05-05 10:39:18 +02:00
Tim Moore
0b05f67114 Merge branch 'master' into next 2010-05-05 10:38:26 +02:00
Tim Moore
0ede690580 Merge branch 'maint' 2010-05-05 10:38:18 +02:00
frohlich
d81545a871 Add -ldl for newer ld defaults from fedora 13
Modified Files:
	simgear/screen/Makefile.am
2010-05-05 10:38:09 +02:00
Tim Moore
1cda1fc201 Merge branch 'mathias/intersect' into next 2010-05-05 09:43:40 +02:00
frohlich
490dad7838 Provide a more exact sphere/box test.
Modified Files:
	simgear/math/SGIntersect.hxx simgear/math/SGBox.hxx
2010-05-05 09:43:32 +02:00
Tim Moore
13ecbb8bce Merge branch 'master' into next 2010-05-05 09:40:31 +02:00
Tim Moore
3346bfc9a8 Merge branch 'maint' 2010-05-05 09:40:23 +02:00
frohlich
c5de65f115 Make the bounding volume debug visitor compile again.
Modified Files:
	simgear/scene/bvh/BVHDebugCollectVisitor.hxx
2010-05-05 09:40:06 +02:00
Tim Moore
4fffcf9975 Merge branch 'ehofman/sound' into next 2010-05-05 09:05:35 +02:00
jmt
8962d9b293 Following discussion with Tat and Erik, update how we handle ALUT on Mac; specifically, switch to using an ALUT.framework built from FreeALUT. The ALUT framework is available (initially) from:
http://files.goneabitbursar.com/fg/alut-osx-universal.zip

for testing purposes; autoconf integration and an official home for the
framework will follow once this approach has been tested and confirmed as
sane by other Mac developers!
2010-05-05 09:05:23 +02:00
Tim Moore
050c1560e8 Merge branch 'fredb/msvc-cleanup' into next 2010-05-05 09:03:20 +02:00
fredb
68b3041f50 Remove obsolete file 2010-05-05 09:03:10 +02:00
fredb
1ddd153399 Cleanup MSVC projects 2010-05-05 09:02:58 +02:00
Tim Moore
df0a60caae Merge branch 'ehofman/model' into next 2010-05-05 08:44:32 +02:00
fredb
675c86582d Stuart Buchanan: Fix a bug in the random object placement where the model selected in the case of multiple object definitions in material.xml was random, rather than seeded. 2010-05-05 08:44:18 +02:00
Tim Moore
e6d01ed1a3 Merge branch 'fredb/effect-stuff' 2010-04-25 22:52:35 +02:00
Tim Moore
d8d1064e05 Merge branch 'zan/cubemap' 2010-04-25 22:52:10 +02:00
Tim Moore
5d04cb81ba Merge branch 'fredb/geom-shader' 2010-04-25 22:52:02 +02:00
Tim Moore
5d5906e980 Merge branch 'ehofman/particles' 2010-04-25 22:36:06 +02:00
Tim Moore
2e7b862ad3 Merge branch 'timoore/aptsign' 2010-04-25 22:33:34 +02:00
Tim Moore
ad86e22824 Merge branch 'jmt/magvar' 2010-04-25 22:33:18 +02:00
Tim Moore
536b8a213b Merge branch 'fred/precip' 2010-04-25 22:33:02 +02:00
Tim Moore
2e13877926 Merge branches 'ehofman/propfix' and 'ehofman/sound' 2010-04-25 22:32:44 +02:00
Tim Moore
967d63dec4 Merge branches 'ehofman/config' and 'ehofman/dlerror' 2010-04-25 22:32:14 +02:00
Tim Moore
573c4268b6 Merge branch 'fredb/effect-stuff' into next 2010-04-12 07:25:24 +02:00
fredb
f19e83dcf1 Add a new node "float-property" to be used in float comparision in effect predicates 2010-04-12 07:25:13 +02:00
fredb
caabe8fc87 Add a "scale" parameter that combine xsize and ysize in a vec3 property. There is no vec2 property, so the third component is zero 2010-04-12 07:25:13 +02:00
fredb
7c4e5309fc Declare some material parameters as implicit effect parameters 2010-04-12 07:25:13 +02:00
fredb
542124e90c materials.xml format update
Allow to declare sets of textures that can be used as parameters for effects. Syntax is:
  <texture-set>
   <texture>Terrain/city1.png</texture>
   <texture n="2">Terrain/city1-relief-light.png</texture>
  </texture-set>
  <texture-set>
   <texture>Terrain/city2.png</texture>
   <texture n="2">Terrain/city2-relief-light.png</texture>
  </texture-set>
2010-04-12 07:25:13 +02:00
Tim Moore
e0d02be0f5 Merge branch 'zan/cubemap' into next 2010-04-03 22:49:07 +02:00
Tim Moore
461e6d1b5b Zan's cubemap patch 2010-04-03 22:48:58 +02:00
Tim Moore
d767e6d7eb Merge branch 'fredb/geom-shader' into next 2010-03-30 12:07:50 +02:00
fredb
bff1584012 Geometry shader support 2010-03-30 12:07:38 +02:00
Tim Moore
3d91a11b95 Merge branch 'zan/generate' 2010-03-30 12:04:09 +02:00
Tim Moore
1349b46a8c Merge branch 'jmt/waypt' 2010-03-30 11:53:13 +02:00
Tim Moore
74330ba1dd Merge branch 'timoore/clipgroup' 2010-03-30 11:46:01 +02:00
Tim Moore
64ab227f62 Merge branch 'timoore/effects-anim-rebase' 2010-03-30 11:41:37 +02:00
Tim Moore
1c51fbd1b4 Merge branch 'zan/cloudsort' 2010-03-30 11:40:45 +02:00
Tim Moore
4c2dd553f2 Merge branch 'ehofman/particles' into next 2010-03-27 13:39:55 +01:00
Tim Moore
2fb985afa4 Merge branch 'ehofman/dlerror' into next 2010-03-27 13:39:48 +01:00
ehofman
44c93d5074 Csaba Halasz: fix a compilation error for non-bsd systems that happen to return
const char* from dlerror().
2010-03-27 13:39:37 +01:00
ehofman
dcf07a46aa Allow particles to be frozen on pause. 2010-03-27 13:38:59 +01:00
Tim Moore
284a9e0612 Merge branch 'ehofman/sound' into next 2010-03-16 17:15:34 +01:00
Tim Moore
60349a8690 Merge branch 'ehofman/propfix' into next 2010-03-16 17:15:29 +01:00
ehofman
64072be83c iprovide a slightly more helpfull exception message 2010-03-16 17:15:12 +01:00
ehofman
229abb8412 updated vendor test 2010-03-16 17:14:19 +01:00
Tim Moore
7b1d1fd288 Merge branch 'timoore/clipgroup' into next 2010-03-16 15:44:56 +01:00
Tim Moore
1ca1f6ad22 Remove reference to osgUtil::RegisterRenderBinProxy
This has gone away in recent OSG sources.
2010-03-16 15:42:54 +01:00
Tim Moore
0ad66f4bc4 Merge branch 'zan/generate' into next 2010-03-16 14:27:56 +01:00
fredb
d5757c4fb8 Lauri Peltonen : add the ability to generate tangent vectors for model, terrain or ocean geometry inside the effect file 2010-03-16 14:27:21 +01:00
Tim Moore
7fe40bce86 Merge branch 'jmt/magvar' into next 2010-03-16 14:22:53 +01:00
jmt
5da3d64ede Overload the SGMagVar::update method to take an SGGeod. 2010-03-16 14:22:45 +01:00
Tim Moore
2e93b06ac0 Merge branch 'fred/precip' into next 2010-03-16 14:21:57 +01:00
fredb
1e6aa4b40f Precipitation inside cockpit temporary fix.
Needs a clip distance settable to take account of views and different cockpit size.
2010-03-16 14:21:45 +01:00
Tim Moore
262383395d Merge branch 'timoore/aptsign' into next 2010-03-12 14:32:11 +01:00
Tim Moore
127226c421 Assign texcoords and a color (black) to the backs of airport signs 2010-03-12 14:31:39 +01:00
Tim Moore
fabcb021cb Merge branch 'timoore/effects-anim-rebase' into next 2010-03-11 08:46:22 +01:00
Tim Moore
60ab1ab83e bug fix to animated effect parameters
Some confusion in getting the right property node.
2010-03-11 08:45:58 +01:00
Tim Moore
1f37095087 Merge branch 'timoore/effects-anim-rebase' into next 2010-03-09 11:03:25 +01:00
Tim Moore
93c2f70b64 animate uniform parameters in effects 2010-03-09 11:02:57 +01:00
Tim Moore
b0562df6bb Cleanup of effects parameter animation 2010-03-09 11:02:56 +01:00
Tim Moore
65d6a5c774 Prepare effects animation code to use general functor setters 2010-03-09 11:02:56 +01:00
Tim Moore
650af0f7b0 generalize support for initializing effect parameters from several properties 2010-03-09 11:02:56 +01:00
Tim Moore
cf9de25c25 pass SGReaderWriterXMLOptions object to getGlobalProperty
This supports pathnames relative to a model in effect definitions.
2010-03-09 11:02:56 +01:00
Tim Moore
fc4009aa50 change return value of SGPropertyNode::getPath to std::string
Also get rid of the cached value.
2010-03-09 11:02:56 +01:00
Tim Moore
d04cf4d897 pass SGReaderWriterXMLOptions to effects
This will allow parameters to refer to properties in models, though
that doesn't work yet.
2010-03-09 11:02:56 +01:00
Tim Moore
2e45c67ef2 Merge branch 'zan/stencil' 2010-03-09 10:59:09 +01:00
Tim Moore
b6d8e1f842 Merge branch 'zan/cloudsort' into next 2010-03-03 23:12:49 +01:00
ehofman
284bc364fe Lauri Peltonen: turn on clouds depth sorting 2010-03-03 23:11:01 +01:00
Tim Moore
a050654b4c Merge branch 'jmt/waypt' into next 2010-02-22 09:42:36 +01:00
jmt
7311dae483 Allow a waypoint's target altitude to be modified in-place. 2010-02-22 09:42:28 +01:00
Tim Moore
c57c3cd1d3 Merge branch 'curt/makefile' 2010-02-17 18:01:29 +01:00
Tim Moore
3ec5e85485 Merge branch 'curt/makefile' into next 2010-02-17 07:20:38 +01:00
curt
ff95af0367 Add a missing source file so it will be included with "make dist". 2010-02-17 07:20:21 +01:00
curt
aa9c7d5435 Add a missing .hxx file for "make dist" 2010-02-17 07:20:19 +01:00
Tim Moore
dcc9f33357 Merge branch 'ehofman/sound' into next 2010-02-17 07:19:20 +01:00
ehofman
1ace645505 small fix for when sound is disabled 2010-02-17 07:19:02 +01:00
Tim Moore
dc2b87dce1 Merge branch 'ehofman/config' into next 2010-02-17 07:18:30 +01:00
ehofman
8e47f5d494 John Denker: Fix sneaky bug: 'mylibdir' variable getting trampled. 2010-02-17 07:18:20 +01:00
Tim Moore
333d381f41 Merge branch 'ehofman/config' into next 2010-02-14 19:42:59 +01:00
ehofman
f9b064cc19 Joe User updates by John Denker 2010-02-14 19:42:51 +01:00
Tim Moore
116a6c1b2e Merge branch 'zan/stencil' into next 2010-02-10 15:48:23 +01:00
Tim Moore
c4506b8e6c Merge branch 'ehofman/config' into next 2010-02-10 14:56:36 +01:00
ehofman
6786a7be4a small MacOS fix 2010-02-10 14:55:57 +01:00
ehofman
bb370a304d smnall update for MacOS without framework support 2010-02-10 14:55:57 +01:00
ehofman
fdcf53c688 Properly test for OpenThreads and bail out if it isn't found 2010-02-10 14:55:57 +01:00
Tim Moore
d3f575547c Merge branch 'durk/deadfiles' into next-new 2010-02-06 23:15:09 +01:00
ehofman
68797e51c6 implement a round-robin scheme for random objects to make sure the same type of object is placed at the same spot all the time 2010-02-06 23:12:40 +01:00
durk
c76c55cdee - Remove reference to dead files. 2010-02-06 19:01:58 +01:00
durk
f529ec3018 Update version number. 2010-02-05 11:13:56 +01:00
Tim Moore
ad667be0d7 Merge branch 'fredb/winfix' 2010-02-05 00:23:51 +01:00
fredb
133fa09261 Update version numbers 2010-02-05 00:23:26 +01:00
Tim Moore
acf19cebf8 Stencil operations for effects
From Lauri Peltonen
2010-01-29 19:07:53 +01:00
Tim Moore
5dfa4c0840 Merge branch 'timoore/mat-effect' 2010-01-28 10:31:52 +01:00
Tim Moore
f918602f58 Merge branch 'freb/mingw' 2010-01-28 10:31:40 +01:00
Tim Moore
2cf2dd24a4 Merge branch 'fredb/winfix' 2010-01-28 10:31:11 +01:00
Tim Moore
eefb069d08 Create a different default effect for objects that have material animations 2010-01-27 18:42:48 +01:00
fredb
3dcffc7df8 MINGW patch from Benot Laniel 2010-01-25 14:35:45 +01:00
fredb
b121277142 Update MSVC 9 projects 2010-01-25 14:35:26 +01:00
fredb
d283fcf7b4 Update SimGear version 2010-01-25 14:35:24 +01:00
Tim Moore
e7f151ad02 Merge branch 'ehofman/sound' 2010-01-25 14:02:02 +01:00
Tim Moore
0710b781d3 Merge branch 'torsten/geoequal' 2010-01-25 14:01:52 +01:00
Tim Moore
7c01ad6917 Merge branch 'durk/version' 2010-01-25 14:00:42 +01:00
ehofman
56d2f06631 Silently ignore previous errors to prevent halting the program on silly errors 2010-01-21 11:07:58 +01:00
ehofman
9e47911b19 define _device so testForALCError can use it initialized.. 2010-01-21 11:07:58 +01:00
durk
ef80497fbe Let the version number reflect the current state of the release process. 2010-01-21 06:15:18 +01:00
fredb
e22cf106c2 Change version in comment 2010-01-21 06:13:06 +01:00
fredb
5ffb270ec1 Update simgear config.h version 2010-01-21 06:12:55 +01:00
fredb
f85f3b0f25 Update MSVC 9 project 2010-01-21 06:12:40 +01:00
fredb
e7ec83d626 Win32 fixes 2010-01-21 06:12:30 +01:00
Tim Moore
11479cd8c3 Merge branch 'ehofman/sound' 2010-01-16 23:49:36 +01:00
ehofman
176e760de1 test for an AL or ALC error before calling an ALUT function. 2010-01-16 15:50:29 +01:00
Tim Moore
430c60ed1a Merge branch 'ehofman/sound' 2010-01-13 07:57:35 +01:00
Tim Moore
dfea3623f6 Merge branch 'tat/framework' 2010-01-13 07:57:30 +01:00
Tim Moore
b38783e4cb Merge branch 'ehofman/subsys' 2010-01-11 07:15:11 +01:00
Tim Moore
9382a4c21b Merge branch 'jester/aptsign' 2010-01-11 07:14:51 +01:00
Tim Moore
3cd4c5566f Merge branch 'timoore/effects' 2010-01-11 07:14:23 +01:00
Tim Moore
601c0977df Merge branch 'jmt/geodistance' 2010-01-11 07:10:46 +01:00
ehofman
c56f036bab Tatsuhiro Nishioka:
These patches fixes minor bug in addition to providing --with-openal-framework and --with-cocoa-framework.
Now you can use your own version of OpenAL.framework for selecting various audio output device.
Plus, you can build FG/SG on Snow Leopard with cocoa configuration.
2010-01-05 22:12:37 +01:00
torsten
44dd50c0ef Csaba Halasz:
Fix airport signs by reverting to rev 1.22 of apt_sign.cxx. Tweaked a little to handle missing materials better.
2010-01-05 22:11:57 +01:00
ehofman
56919ae45f MacOS returns an unsopported AL error when a file is not found, work around this. 2010-01-05 22:10:22 +01:00
torsten
6c14e7127d add "operator == ()" to SGGeod and SGGeoc 2010-01-03 10:10:32 +01:00
jmt
578af00b0d Allow geocentric distance computations to return radians. 2010-01-03 10:10:02 +01:00
Tim Moore
d6c0bf69b6 fix up some merge weirdness 2010-01-01 13:32:03 +01:00
ehofman
e8884b4ec0 Also unbind subsystem groups in reverse order and destruct them in reverse order to be consistent. 2009-12-31 19:42:53 +01:00
ehofman
5e79609955 unbind in reverse order to try to prevent order dependency problems. 2009-12-30 00:20:08 +01:00
ehofman
4950c96f1c Rearrange alut error checking a bit 2009-12-30 00:05:01 +01:00
jmt
51b0cf535e XML encodings: support 'ASCII' as an alias for 'US-ASCII' 2009-12-29 23:53:28 +01:00
ehofman
4cc17a7f6e keep a pointer to the OpenAL vendor and renderer for reference 2009-12-27 09:24:24 +01:00
Tim Moore
dca07c5634 Merge branch 'timoore/effects'
Conflicts:
	simgear/scene/model/model.cxx
	simgear/scene/sky/newcloud.cxx
2009-12-20 16:07:00 +01:00
Tim Moore
fd42294faf Merge branch 'ehofman/sound'
Changed include of SGQuat.hxx to SGMath.hxx in
sound/sample_openal.cxx; somehow this happened in a merge commit when
the sound branch was merged to next.
2009-12-20 11:46:28 +01:00
ehofman
c1246e8c4e proper typecasting 2009-12-14 22:46:22 +01:00
Tim Moore
59fc902cfb don't render an EffectGeode if there is no valid technique
Normal geometry has a default effect; geometry with no default effect
is unlikely to look correct with no state set applied. This fixes the
problem of clouds being displayed as multi-colored rectangles when
shader effects are turned off.
2009-12-14 06:52:00 +01:00
ehofman
1fe9755d01 fix a typo. 2009-12-12 00:03:41 +01:00
ehofman
1da09a4706 Don't assign the buffer data to the sample in case it is a file. Test for result when calling load() 2009-12-12 00:03:40 +01:00
ehofman
f3c591469b Fix crash in SGSoundMgr::stop(): do not try to erase buffer items one at a time 2009-12-12 00:03:40 +01:00
ehofman
b1200f9f59 add alcSuspendContext and alcProcessContext again to prevent sound artifacts on hardware accelerated soundcards. 2009-12-06 23:55:08 +01:00
ehofman
47617d6c04 check if suspend, resume and volume changed much from the previous value before setting them. 2009-12-03 06:38:23 +01:00
ehofman
4794ab6095 Fix runtime switching of sound devices. 2009-12-03 06:38:12 +01:00
ehofman
bc85767f19 Updates to allow runtime chaning of the sound device 2009-11-30 22:41:14 +01:00
Tim Moore
e37c218c2a take locks out of ModelRegistry
They should be unnecessary and were causing deadlock with Effects that
load images.
2009-11-29 22:54:02 +01:00
ehofman
a0aaa23904 Add a function to retreive all available playback devices. 2009-11-29 13:04:39 +01:00
ehofman
27a6c72091 initialize volume to a proper value 2009-11-29 13:04:39 +01:00
ehofman
2dcc66f03e Small bugfix 2009-11-29 13:04:38 +01:00
ehofman
d70a05a088 Make it possible to specify a different device name 2009-11-29 13:04:38 +01:00
Tim Moore
c2317edf8a Revert boost requirement to 1.37
I don't want to get into testing for tr1::unordered_map, and the
boost compatibility doesn't exist in 1.34.
2009-11-29 12:42:10 +01:00
Tim Moore
cb7ac404d9 Merge branch 'ehofman/sky' 2009-11-26 23:28:34 +01:00
Tim Moore
5abc6c995f fix a memory leak in newcloud.cxx 2009-11-26 16:30:46 +01:00
ehofman
0f21c39e49 a slightly more readable version of the test 2009-11-26 16:05:46 +01:00
ehofman
f6513127ce Also test for older versions of OpenAL-Sample 2009-11-26 16:05:45 +01:00
Tim Moore
ddd72b2b37 Use an effect for 3d clouds 2009-11-26 11:40:41 +01:00
Tim Moore
7f5df1fb66 Support for shader program attributes in effects
Also, use a hash table for the effect shader program cache.
2009-11-26 11:39:34 +01:00
Tim Moore
2e71b64de1 Better error reporting for effects
Throw an exception when an undefine attribute value is found in an effect.

Also, fix a typo in TexEnvCombine operand attributes.
2009-11-26 11:32:00 +01:00
Tim Moore
45f1f9263f add a property debugging function 2009-11-26 10:38:31 +01:00
ehofman
878288f06a Don't forget to apply the doppler adjustment factor to the listener velocity also 2009-11-24 14:17:54 +01:00
ehofman
406cdf8d16 test for implementations with 'bad' doppler effects and adjust for it. 2009-11-24 14:17:54 +01:00
ehofman
5b28b024ae fix test programs 2009-11-24 14:17:54 +01:00
ehofman
7c693d8107 proper listener velocity calculation, this has no effect yet but is required when other models start emitting sounds. 2009-11-24 14:17:54 +01:00
Tim Moore
b8a6d1ac4d add depth attribute to Effect 2009-11-23 09:15:47 +01:00
Tim Moore
40533f50df Drop required Boost version from 1.37 to 1.34
Use boost/tr1 to bring in std::tr1::unordered_map instead of the Boost
version.
2009-11-22 23:05:11 +01:00
Tim Moore
539ced191b Move tree shaders to an effect
Also, improve effect hash keys.
2009-11-22 00:32:51 +01:00
Tim Moore
1a400b890b Effect file support for GL_VERTEX_PROGRAM_TWO_SIDE and POINT_SIZE 2009-11-22 00:27:53 +01:00
Tim Moore
ebe5a5579c shader language predicate 2009-11-20 22:59:15 +01:00
ehofman
afb18ca75b the wrong name also mislead me: rotate velocity to the proper quat 2009-11-19 23:01:49 +01:00
ehofman
01c62932bd make the relative positions fixed against the body again. 2009-11-18 23:25:55 +01:00
ehofman
6cd8db7b28 Set to default distance attenuation function but change the parameters a but for better sound effects (and most of all quieter sounds at greta distance 2009-11-18 23:25:51 +01:00
ehofman
bb46d91bc6 What do you know, the real problem turned out to be the distance attenuation function.. 2009-11-17 06:43:41 +01:00
Tim Moore
3cd5322496 descend into Effects to find default material animation values 2009-11-16 22:43:41 +01:00
Tim Moore
cadecdcab7 add a transparent texture for effects
This is used as a default texture for the chrome animation.

Also, fix a typo in creating combiners.
2009-11-16 22:42:46 +01:00
Tim Moore
cd4030b7db Make MultiChangeListener derive publicly from SGPropertyChangeListener
Otherwise it doesn't work as a listener!
2009-11-16 22:39:56 +01:00
Tim Moore
0a2264cad4 When instantiating effects, copy user data of any created nodes.
This bug was the cause of the huge memory consumption / death reported at some places:
the BVH data on "raw" .ac models (random objects) was dropped on the floor.
2009-11-15 23:51:08 +01:00
Tim Moore
bb2a02daa8 Bump boost version to 1.37 2009-11-15 01:17:34 +01:00
Tim Moore
5991195062 optimize creation and sharing of effects
Implement equality test and hash for for property trees.  In an
Effect, make a hash table of Effects that inherit from it keyed on
their unmerged property tree. Using that, makeEffect() should return a
single Effect for given property tree description. Animations may
change that in the future...
2009-11-13 22:41:11 +01:00
Tim Moore
54c4055af3 Effects in models working for transparent materials and chrome animation
Implementation of animated effect values via the property system.

Add names for TexEnvCombine attributes
2009-11-13 22:41:11 +01:00
Tim Moore
cb07210bc7 Move Texture unit builder into TexBuilder.cxx
Do the refactoring necessary to make that work.
2009-11-13 22:41:11 +01:00
Tim Moore
3e40d624a8 Effects for models
Basically working, at last. Among other things, create effects in
 models loaded directly from .ac files; this can happen, for example,
with the random models from the materials library.
2009-11-13 22:41:11 +01:00
Tim Moore
63ce675914 Splicing visitor for rewriting scene graphs with a minimum of copying 2009-11-13 22:41:11 +01:00
Tim Moore
14e5e87a4d Dump texture attributes of StateSet into effect property tree
Also, decode blend function.
2009-11-13 22:41:11 +01:00
Tim Moore
e7e81c6639 getStateAttribute utility function
This provides a concise, typesafe way to get attributes from osg::StateSet.

Also, blew away BackRefInserter.
2009-11-13 22:41:11 +01:00
Tim Moore
23d0601d82 Add support for blend functions and alpha test functions in effects 2009-11-13 22:41:11 +01:00
Tim Moore
6db9138eeb wip for effects in models
multi-index for effect attributes
2009-11-13 22:41:10 +01:00
Tim Moore
6a7c200002 remove CopyPolicy from ModelRegistry
Put the responsibility for copying a loaded model directly in
SGReaderWriterXML.
2009-11-13 22:41:10 +01:00
ehofman
e3f70b7125 temporarily remove listener (viewer) and source offsets. they mess things up 2009-11-12 22:59:43 +01:00
Tim Moore
a25e859fa7 fix typo 2009-11-10 22:10:57 +01:00
ehofman
5b2af1f6b3 also recalculate the velocity in update_pos_and_orienation, so pass the north-east-down velocity directly and orientate position, orientation and velocity to OpenGL/OpenAL frames (x-right, y-up and z-back) 2009-11-10 16:29:16 +01:00
ehofman
59df72c4b0 allow sound effects in the configuration file to be added to the 'avionics' sample group by setting '<type>avionics</type>'. 2009-11-10 06:42:26 +01:00
Tim Moore
4e2eb2f24c Move propertyExpression code from flightgear to simgear
Also add a function (possibly redundant) to access the global property
root.
2009-11-09 15:53:10 +01:00
Tim Moore
b905f4b8aa Property system optimizations
Profiling startup with the new effects code exposed some performance
gotchas. The objective is to reduce allocation of std::string
temporaries, especially when looking up node path names. Also, I
changed some paths to initialize strings with strings instead of char *;
this causes less allocation, at least with glibc. Also, eliminate
the old version of find_node and its helper functions by writing the
template version of find_node_aux to handle an explicit index
parameter.

Also, add const char[] as an internal property type

This doesn't actually add a new type to the property system, but allows using
character arrays as arguments to certain templates.
2009-11-09 15:52:54 +01:00
ehofman
fefe87ed1e Remove old MSVC6.0 files that doen't work anymore 2009-11-09 10:45:15 +01:00
ehofman
b66905c2f6 Oops, it was the scenery up vector, not the viewer up vector 2009-11-07 08:52:16 +01:00
ehofman
39472e4d81 Save a costly SGVec3d::fromGeod() calculation 2009-11-07 08:52:16 +01:00
ehofman
85fba1325a pass the geodetic position and view orientation to the sky reposition function 2009-11-05 16:17:29 +01:00
ehofman
0f39f05fa1 small fixes 2009-11-04 23:05:22 +01:00
ehofman
8d551c2664 fix directional sound orientation 2009-11-04 23:05:21 +01:00
ehofman
346a22f684 adjust to recent changes 2009-11-04 23:05:21 +01:00
ehofman
b1571e4437 some small fixes 2009-11-04 23:05:21 +01:00
ehofman
5ac2abe3ab Remove more unneeded code and properly set relative position and sound direction 2009-11-02 23:20:59 +01:00
ehofman
5b15426cc6 Small code reorganization, mostly removing unneeded code 2009-11-02 23:20:59 +01:00
ehofman
1ac944b7c1 Position and orientation fixes thanks to Tim Moore (finaly). Code optimizations by moving code over from SGSoundSample to SGSampleGroup which means it will only run once for every sample group instead of once for every sample. 2009-11-02 23:20:58 +01:00
ehofman
fd90dbb123 silently clip pitch and gain to their maximum values 2009-11-01 21:52:37 +01:00
ehofman
6ccad91537 proper orientation(?) and comment out relative position and direction code since it messes with OpenAL in such a way that volume doesn't work properly anymore 2009-11-01 21:52:37 +01:00
ehofman
c89db53ebf another attempt at getting something useful without any result. 2009-10-31 22:55:32 +01:00
ehofman
4ffd70a42a fix a typo 2009-10-31 22:55:26 +01:00
ehofman
bbeb48a60d fix a gcc version test 2009-10-31 22:55:18 +01:00
ehofman
aefe9bc116 MacOS X fix 2009-10-31 22:54:46 +01:00
ehofman
bcb95f647d add relative pos back in 2009-10-31 00:03:27 +01:00
ehofman
145a7fa146 pass the float pointer to the isNaN function instead of the SGVec3 type 2009-10-29 23:04:17 +01:00
ehofman
06f0b6030a multiply quats in the right order 2009-10-29 23:04:17 +01:00
ehofman
191ee3a0ed Commit the current state of affairs to see if it fixes the position code for others 2009-10-29 23:04:17 +01:00
ehofman
f6358694ae another test program, using real world locations 2009-10-29 23:04:17 +01:00
ehofman
af14d65a98 Fix a bug where a sample was removed from the sample list before it was stopped. Proper listener orientation when inside the airplane (need to find a good solution for outside view). 2009-10-28 23:16:19 +01:00
ehofman
9fe75dc521 also test for NaN in listener code 2009-10-27 22:15:11 +01:00
ehofman
0051bea034 small code reorganization and addition of debugging tests. 2009-10-27 22:15:11 +01:00
ehofman
76c79dba8e FGViewer::recalcLookFrom turned out to be an excellent source of information for prosition and orientation 2009-10-26 23:07:47 +01:00
ehofman
84dc82506a re-enable sound positioning and velocity, test for NaN's and print a message when it happens (debugging, should be removed later on). 2009-10-26 18:50:00 +01:00
ehofman
ae1625734c move all isnan() declarations from sample_group.cxx to compiler.h since it's too important not to have available everywhere. 2009-10-26 18:49:57 +01:00
Tim Moore
e2ce4c0fa9 More include SGMath.hxx to keep MSVC happy 2009-10-26 18:37:27 +01:00
ehofman
a06a15e769 Use shared pointers for any reference to SGSoundSample, fix the constructor of SGSoundSample where data is supplied by the calling program. 2009-10-24 19:29:41 +02:00
ehofman
7c5de29b61 get rid of aut_ptr, it only works with objects that can destroyed with delete (and not even delete[]) which is too limited. take drastic actions to find the sound-not-playing-bug: set all positions and orientations to default all the time. 2009-10-24 19:29:41 +02:00
ehofman
5f9befebae .. and remove some debugging code 2009-10-22 22:52:05 +02:00
ehofman
6a7b885891 revert some test code 2009-10-22 22:52:05 +02:00
ehofman
cd8e7bbdca should use free instead of delete for malloced data. 2009-10-22 22:52:05 +02:00
ehofman
5d731ad8c3 a few more temporarty debugging statements 2009-10-22 22:52:05 +02:00
ehofman
7964270929 fix a memory leak and add some temporary debugging statements. 2009-10-22 22:52:05 +02:00
ehofman
ea513d392e Updates to the test utilies. 2009-10-22 22:52:05 +02:00
ehofman
feba9024eb Fix a pause situation where more code was executed than expected. Unbind an OpenAL buffer from an OpenAL source when requested to stop playing. 2009-10-21 16:25:29 +02:00
ehofman
b3e16ce8e0 use auto_ptr instead 2009-10-19 23:50:17 +02:00
ehofman
31dd77c694 do not yet add the relative sound position to the absolute position, it's generating NaN's at the moment. Fix a bunch of other small bugs 2009-10-19 23:50:17 +02:00
ehofman
ae58f89fbf sigh, forgot another alut* at the wrong place. 2009-10-19 23:50:17 +02:00
ehofman
b3bc36b253 restore some part of the code to prevent an untwanted segmentationf fault. 2009-10-18 18:07:19 +02:00
ehofman
7287509fef Start the sound manager in a deactived state. This means the code now has to activate it explicitly when desired. A non active state means the update function will no be executed. 2009-10-18 18:06:55 +02:00
Tim Moore
b1c49045a8 forward declare Point3D in sg_types.hxx
This avoids sucking in SGMath.hxx -- and therefore a bunch of OSG headers --
into many compilation units.
2009-10-18 12:11:13 +02:00
ehofman
0d5634475c Don't delete the sample data if it wasn't constructed as a file. It's now deleted when calling free_data() by the owner or in the destructor. 2009-10-18 12:07:38 +02:00
ehofman
e6bfe7d40c revert to previous version 2009-10-18 12:07:25 +02:00
ehofman
811cd0653f make sure update_late isn't executed when dt=0 2009-10-17 23:47:20 +02:00
ehofman
e2b8a21ff5 documentation, licensing, copyright and small api updates. 2009-10-17 23:47:06 +02:00
ehofman
24c7941f65 convert _relative_pos to a vector of doubles and set the relative offset 2009-10-17 13:39:34 +02:00
ehofman
600a9ee4c5 _data is not an array of pointer 2009-10-17 13:39:34 +02:00
ehofman
fdfdfedf01 Alut < 1.0 fixes and finaly fix the sound orientation 2009-10-17 13:39:33 +02:00
ehofman
a67688322d Initialization was done much earlier than expected resulting in some sample
groups not being activated (and sample loading using OpenAL/ALUT functions to
be scheduled before OpenAL was initilialized).

fix alutInit counter
remove left over static declaration fro SGSoundMgr::load
2009-10-16 11:14:05 +02:00
ehofman
6fe057e277 add a debugging statement 2009-10-16 11:14:05 +02:00
ehofman
f23e8bfb02 fix for latest changes 2009-10-16 11:14:05 +02:00
ehofman
eab9da98f2 give the sample class as much info as possible to properly position and orientate the sounds. unfortunately at this time orientation seems to be from straight behind which means that sounds that have outer-gain set to 0.0 will not be heard yet. 2009-10-16 11:14:05 +02:00
ehofman
f161992836 Alex Buzin:
I got an error with the Sunday CVS - FG crashed while exiting .
gdb reports SIGSEGV error at file soundmgr_openal.cxx, line 159.

Error was fixed by changing lines 157-159 from:
        buffer_map_iterator buffers_current = _buffers.begin();
        buffer_map_iterator buffers_end = _buffers.end();
        for ( ; buffers_current != buffers_end; ++buffers_current ) {
to :
        buffer_map_iterator buffers_current;
        while(_buffers.size()){
            buffers_current = _buffers.begin();
2009-10-14 00:34:39 +02:00
Tim Moore
40e13b91fe Merge branches 'toresten/geofix', 'jmt/lcase', 'stuart/clouds' and 'jmt/dump' 2009-10-12 10:03:00 +02:00
ehofman
af6824605b proper naming is everything 2009-10-12 00:01:42 +02:00
ehofman
babf58f8d2 Correct (and verrified) position, orientation and velocity vector. Todo: proper sound orientation (the all face forward using the airplane orientation now) and disabling doppler effect when tied to the listener 2009-10-12 00:01:07 +02:00
ehofman
968f5d7693 OpenAL buffer management; add a buffer cache to prevent loading the same sample in memory twice. Especially useful to save memory for multi-aircraft configurations and (later) for AI models. 2009-10-12 00:00:53 +02:00
ehofman
4cc6bd69ae add the option to tie a SampleGroup to the listener position and orientation 2009-10-08 10:17:11 +02:00
ehofman
199437e859 alut pre-1.0 doesn't support aletGetError but then again, this function doesn't get called in that case either so just comment it out at build time 2009-10-08 10:17:11 +02:00
jmt
e5fac0a01d Update the screen-dump code to use osgDB, and hence write out files in more common formats (PNG, JPEG, etc). The PPM writing code is retained for the moment, in case someone other than FG is relying upon it. 2009-10-07 08:20:50 +02:00
ehofman
5d14b84969 fix a typo 2009-10-07 08:19:47 +02:00
ehofman
bcccd06cee (try to) properly align model and viewer 2009-10-07 08:19:33 +02:00
ehofman
6b0ab9a49a default listener (master volume) default to 0.0 to save some ugly code in FlightGear 2009-10-06 07:22:06 +02:00
ehofman
023002ae73 add the alc.h header file vor OpenAL context related code 2009-10-06 07:22:06 +02:00
ehofman
579d384c04 Rename update() to update_late() for the sound manager to be able to initialize it before any other class that uses it. This will allow the SoundManager to be safely accessed in the constructor of those classes. 2009-10-06 07:22:06 +02:00
ehofman
e2e1524454 Initial commit of the new sound system, expect more updates to follow 2009-10-06 07:22:06 +02:00
durk
4a5853c1c2 Stuart Buchanan:
Improvements to the cloudsystem:
        - A new xml format
        - Texture indexing based on the position of the sprite in the cloud
          mass, allowing more control over the texture set.
        - Improved fog and shading
        - Better sprite distribution
        - A more natural distribution of clouds, so no more obvious grids.
2009-10-04 01:41:21 +02:00
Tim Moore
64756d14d0 Back out convertToLowerCase function
It brought in an OSG dependency; we'll just use boost::to_lower_copy instead.
2009-10-01 00:31:36 +02:00
Tim Moore
bac2ef601d Merge branch 'jmt/lcase' into next 2009-09-28 23:51:07 +02:00
Tim Moore
cf3bab89f9 Merge branch 'master' into next 2009-09-28 23:50:56 +02:00
jmt
dfe41ad984 Extend simgear::strutils with convertToLowerCase helper - currently a proxy for osgDB helper of the same name. 2009-09-28 23:50:08 +02:00
ehofman
b784bebaa9 just small fixes 2009-09-28 23:40:06 +02:00
torsten
bcf727cf58 Catch a possible floating point error in SGGeodesy::SGCartToGeod() for cartesian coordinates close to the geocenter region. 2009-09-22 22:44:38 +02:00
Tim Moore
ecd0a53412 Add writeLocalData functions for internal scenegraph classes
This makes the scenegraph dump more complete and therefore more useful.
2009-09-22 12:56:28 +02:00
Tim Moore
3456434e37 check for null effect in EffectCullVisitor
An EffectGeode might not have any effect.
2009-09-18 15:43:46 +02:00
Tim Moore
454c5b1ed2 Merge branch 'tat/configure' into next 2009-09-17 12:25:19 +02:00
torsten
dc2c437a1a Tatsuhiro Nishioka:
Patches for configure.ac and Makefile.am files in FG/SG so Mac developers can build these in a unix way.
These also enables Mac developers to choose either PLIB framework or PLIB static libs.
2009-09-17 12:24:56 +02:00
Tim Moore
819d3f5ded Merge branch 'topic/projection' into next 2009-09-17 12:22:06 +02:00
frohlich
4f802689f2 Correct finite precision issues.
Use consistent function names.
Implement changes consistently over the different vector sizes.

Modified Files:
	SGVec2.hxx SGVec3.hxx SGVec4.hxx
2009-09-17 12:21:42 +02:00
Tim Moore
9cbbe55598 Merge branch 'frohlich/weak' into next 2009-09-17 12:18:33 +02:00
frohlich
7e2dafdcb8 Make the weak pointer work. Some bits were left when importing.
Modified Files:
	SGSharedPtr.hxx SGWeakPtr.hxx
2009-09-17 12:18:07 +02:00
jmt
c7873d68f7 Logging:less verbose sound loading. 2009-09-17 12:13:47 +02:00
jmt
939ec526a8 Logging: quiet down STG parsing. 2009-09-17 12:13:47 +02:00
jmt
b20a635db0 Logging: quiet down model/image loading policy. 2009-09-17 12:13:47 +02:00
jmt
a656bee0df Logging: quiet the BVH building policy. 2009-09-17 12:13:47 +02:00
jmt
42f07e3f14 Logging: quiet material loading. 2009-09-17 12:13:47 +02:00
jmt
5803b05bd5 Logging - downgrade play/stop messages to debug. 2009-09-17 12:13:47 +02:00
John Denker
ccf0ba50c4 Implement vector _projection_ functions. 2009-09-09 23:28:16 +02:00
John Denker
f3bc977d32 Make "repeat" start slower on pick-animation mouse events;
otherwise it is unusable.
2009-09-09 22:54:13 +02:00
ehofman
80609e0816 Dont execute code in case the soundmanager isn't properly initialized 2009-09-09 08:39:56 +02:00
frohlich
795d481ca6 Switch to new vector conversion functions.
Modified Files:
	simgear/math/SGGeod.cxx simgear/math/SGQuat.hxx
	simgear/math/SGVec2.hxx simgear/math/SGVec3.hxx
	simgear/math/SGVec4.hxx simgear/scene/material/Effect.cxx
	simgear/scene/model/SGInteractionAnimation.cxx
	simgear/scene/model/SGMaterialAnimation.cxx
	simgear/scene/model/SGRotateTransform.cxx
	simgear/scene/model/SGScaleTransform.cxx
	simgear/scene/model/SGTranslateTransform.cxx
	simgear/scene/model/animation.cxx
	simgear/scene/model/particles.cxx
	simgear/scene/model/placement.cxx
	simgear/scene/model/shadanim.cxx
	simgear/scene/sky/CloudShaderGeometry.cxx
	simgear/scene/sky/cloud.cxx simgear/scene/sky/cloudfield.cxx
	simgear/scene/sky/dome.cxx simgear/scene/sky/sky.cxx
	simgear/scene/tgdb/GroundLightManager.cxx
	simgear/scene/tgdb/SGOceanTile.cxx
	simgear/scene/tgdb/SGTexturedTriangleBin.hxx
	simgear/scene/tgdb/SGVasiDrawable.cxx
	simgear/scene/tgdb/TreeBin.cxx simgear/scene/tgdb/obj.cxx
 	simgear/scene/tgdb/pt_lights.cxx
	simgear/scene/util/SGUpdateVisitor.hxx
2009-09-09 08:39:55 +02:00
frohlich
1b936b9af8 Fix problem with ocean files not recognized as water.
Move dynamic casts to EffectGeode into the findMaterial method.

Modified Files:
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx
	simgear/scene/model/BoundingVolumeBuildVisitor.hxx
2009-09-09 08:39:55 +02:00
frohlich
f141cc28b0 Add some comments.
Make sure floating point constants do not introduce useless upcasts.
Remove now unused and not really usefull method.

Modified Files:
	simgear/math/SGQuat.hxx
2009-09-05 17:01:58 +02:00
ehofman
4cb64b58be Also install coremag.hxx since it is being used by JSBSim now 2009-09-05 17:01:58 +02:00
frohlich
028af34d3d Remove unused member.
Modified Files:
	simgear/scene/util/SGSceneFeatures.hxx
2009-09-05 17:01:58 +02:00
frohlich
ce54997be5 Should be now more easy to make use of SGMath without having osg.
Modified Files:
	simgear/scene/sky/dome.cxx simgear/math/SGGeod.cxx
	simgear/math/SGGeod.hxx simgear/math/SGQuat.hxx
	simgear/math/SGVec2.hxx simgear/math/SGVec3.hxx
	simgear/math/SGVec4.hxx
2009-09-05 17:01:58 +02:00
frohlich
3d213fa713 Return a osg::Vec value instead of a non const reference.
Modified Files:
 	scene/model/SGMaterialAnimation.cxx
2009-09-05 17:01:58 +02:00
frohlich
e71f3790ce Avoid the non const SGVec*::osg() method.
Modified Files:
 	SGTranslateTransform.cxx SGScaleTransform.cxx
 	SGRotateTransform.cxx
2009-09-05 17:01:58 +02:00
frohlich
67b9cba4d3 Use const refs for const data.
Modified Files:
 	simgear/scene/model/CheckSceneryVisitor.hxx
	simgear/scene/model/CheckSceneryVisitor.cxx
2009-09-05 17:01:58 +02:00
torsten
78a471f684 Spare one node in the scenegraph if there is no <offsets> 2009-09-02 23:43:13 +02:00
timoore
d4289c5d54 Change trees code to use a faster OpenGL path
The (random) dimensions of a large number of trees is stored in an
array shared by all the tree geodes. The coordinates of the origin of
each tree are replicated in an another array. This allows an entire
block of trees to be rendered with a few OpenGL calls, instead of one
function call per tree.
2009-08-25 16:14:13 +02:00
torsten
0c17c5440a support osgText in models 2009-08-25 09:11:27 +02:00
torsten
c4116da564 support osgText in models. See docs/README.osgtext for details 2009-08-25 09:11:27 +02:00
torsten
d0821953bb Don't load materials without a name 2009-08-23 21:37:03 +02:00
torsten
e782adef94 Avoid NAN due to floating point rounding errors 2009-08-23 21:37:03 +02:00
ehofman
d3572c2562 prevent division by zero 2009-08-23 21:37:03 +02:00
torsten
1f3838b155 Alan Teeder: fix incomplete dbg_printf for non-gcc. 2009-08-23 21:37:03 +02:00
torsten
6aa459073e don't build tabbed_value_test, swap_test, openal_test1 and openal_test2 by default. 2009-08-23 21:37:03 +02:00
torsten
0932c33185 warning fix: unused variables 2009-08-23 21:37:03 +02:00
torsten
5e542aa841 extinguish many warnings (at least for gcc) 2009-08-23 21:37:03 +02:00
torsten
6d53abd5af warning fix: initializing members in the order they are declared keeps gcc happy 2009-08-23 21:37:03 +02:00
torsten
3ea58bf8db warning fixes 2009-08-23 21:37:03 +02:00
torsten
71a4c2c3d2 extinguish many warnings (at least for gcc) 2009-08-23 21:37:03 +02:00
torsten
a3e391a523 warning fix: abort program and spit out a message if getNumPrims() is called with unknown mode. (Shouldn't happen anyway) 2009-08-23 21:37:02 +02:00
torsten
9cb15b302c warning fix: unused variable 2009-08-23 21:37:02 +02:00
torsten
15c1a28d37 warning fix, unused code 2009-08-23 21:37:02 +02:00
torsten
d3a500e54e don't use uninitialized variables 2009-08-23 21:37:02 +02:00
torsten
a0a5eb8aef warning fixes 2009-08-23 21:37:02 +02:00
torsten
a92955eade warning fixes 2009-08-23 21:37:02 +02:00
torsten
f043f3d4f9 warning fixes 2009-08-23 21:37:02 +02:00
torsten
992a057a1b warning fix (multiline comment) 2009-08-23 21:37:02 +02:00
torsten
07da1e7e1a warning fix 2009-08-23 21:37:02 +02:00
torsten
2c07222ef6 warning fixes 2009-08-23 21:37:02 +02:00
torsten
918e315d47 Warning fix: array subscript is above array bounds 2009-08-23 21:37:02 +02:00
ehofman
c824731bc6 Expose the color of the sun (which is not the scene specular color anymore) 2009-08-23 21:37:02 +02:00
ehofman
0c39caa622 Differentiate between sun color (based in visibility) and scene color (based on humidity) 2009-08-23 21:37:02 +02:00
torsten
1f1e28baf8 Stuart Buchanan: I've been working on a small patch to allow trees to be grouped together into woods. This allows what seems to me to be a more realistic grouping of trees for farmland in particular. 2009-08-09 23:56:10 +02:00
fredb
0c303389d6 Compile under MSVC9 2009-08-09 23:56:10 +02:00
timoore
01a896ef5b New effects from Till Busch: crops, water, landmass
As shown at LinuxTag, with modifications from Tim Moore: the base
landmass texture is mixed with the steepness and snow effects. Till's
new syntax for textures in effect files was also added. syntax for
textures. Also, syntax for accessing internal textures, such as Till's
3D noise texture, was added.

Several bugs in the effect inheritance algorithm were fixed.
2009-08-09 23:56:10 +02:00
torsten
0e5e760135 Allow multiple <button> elements for <action> elements in pick animations. Nice to have to have a single action for mouse-button and mouse-wheel. 2009-08-08 00:49:40 +02:00
fredb
7e7d877874 Fix case typo 2009-07-27 23:47:15 +02:00
fredb
57ccb6fd6b Suppress warnings 2009-07-27 23:47:15 +02:00
fredb
efa2876e29 Compile latest SimGear under MSVC9 2009-07-27 23:47:15 +02:00
Tim Moore
59ef7d8fd1 Create a singleton for the parser table 2009-07-19 23:05:04 +02:00
Tim Moore
1f308c9ec3 Move definition of SGRawBase<...>::printOn out of simgear namespace
They are declared in the global namespace, and MSVC insists that they be
defined there.
2009-07-19 22:39:16 +02:00
Tim Moore
4943d3aa53 Add missing return statements 2009-07-18 10:12:59 +02:00
Tim Moore
828d561113 Store material data with Effect
Somehow this got left out, which broke ground intersection queries.
2009-07-17 16:18:12 +02:00
Tim Moore
fcf72a7123 Change references to property types
BOOL, FLOAT etc. conflict with typedefs in windows.h, so these types
are referred to using the props:: namespace.
2009-07-17 14:52:58 +02:00
Tim Moore
d3f5bc6e2d Changed SGRawValue::DefaultValue to an inline function.
This avoids MSVC bugs in declaring templated specializations of static members.
2009-07-17 11:40:36 +02:00
Tim Moore
f525a05be8 Use SGAtomic's compareAndExchange instead of a new SGSwappable class
Also, eliminate the __declspec(32) of that class which is causing problems
in osg::buffered_object.
2009-07-17 00:29:48 +02:00
Tim Moore
fc7ec4299e include file change to make simgear work with OSG 2.9.X again 2009-07-16 23:09:10 +02:00
Tim Moore
21d053b1b6 Fix effects code to work with OSG 2.8.2-rc4 2009-07-16 18:33:27 +02:00
Tim Moore
68e64a5aa7 Use std::back_inserter instead of my local hack
BackRefInsertIterator is probably broken and may not be needed at all.
2009-07-16 13:02:07 +02:00
timoore
8e718fe288 Add new Effects files to vcproj 2009-07-16 12:09:45 +02:00
timoore
efec9070e1 Fixes for technique predicates
Get tests based on properties and OpenGL extensions working.
2009-07-16 12:09:44 +02:00
timoore
e3646d4d4a more effects features
Materials can specify an effect.

Add support for PolygonMode and initial support for Uniform.
2009-07-16 12:09:44 +02:00
timoore
4219f16f61 Construct effects from property lists
The material code constructs a property list from its input parameters.

Enable dumping of Pass and Technique objects to a file.

Default effect now uses texture node instead of texture0
2009-07-16 12:09:44 +02:00
timoore
c3b1802e95 materials use only simgear::Effect
Eliminate SGMaterial::get_state function.

Use Effect in BVH visitor, ocean tile generation, and airport signs.
2009-07-16 12:09:44 +02:00
timoore
40fe078021 Use Effect to implement point lights
This allows different OpenGL features (point sprites, point attenuation) to
be used depending on hardware support.
2009-07-16 12:09:44 +02:00
timoore
a5a6600e74 Use SGExpressions for evaluating a Technique's validity 2009-07-16 12:09:44 +02:00
timoore
03b9303f22 Overhaul of SGExpression
Polymorphic additions to expressions: Add an expression base class
with a method for dynamically determining the type of an expression.

Add variables, predicates and boolian expressions.

Support for parsing trees of expressions
2009-07-16 12:09:44 +02:00
timoore
b5a59ea6f9 Work in progress for Technique validation 2009-07-16 12:09:44 +02:00
timoore
c6b2124129 Use Effects in materials library, and therefore in scenery 2009-07-16 12:09:44 +02:00
timoore
d320a6facb Effects framework 2009-07-16 12:09:43 +02:00
timoore
0793c2cb8c Blow away unused SGMaterialLib::add_item functions 2009-07-16 12:09:43 +02:00
timoore
d14755abb8 cleanup
Add support for boost::mem_fn to SGSharedPtr.

Remove a couple of "using" declarations from scene/model/model.hxx
2009-07-16 12:09:43 +02:00
timoore
abd4aa2e6b Add PropertyList typedef for vectors of property list nodes. 2009-07-16 12:09:43 +02:00
timoore
58417e78e5 Add a method to setStringValue that takes a std::string argument 2009-07-16 12:09:43 +02:00
timoore
390eb1c6e9 Don't cache results of getDisplayName
Return a std::string result instead of char *.
2009-07-16 12:09:43 +02:00
timoore
d4c6530a72 Add VEC3D and VEC4D property types
Add "extended" argument to readProperties, which controls whether the vector
 property types are accepted by the XML reader.
2009-07-16 12:09:43 +02:00
timoore
ff17b44a41 Extend properties to support new property types.
An SGRawBase class has been added as a base class to the SGRawValue
hierarchy so that SGPropertyValue functions don't necessarily need to
know the type of the value stored in the node.

A new SGRawValueContainer class stores properties that shouldn't be
stored in the node itself. PropertyTraits indicates if a type is
stored in the property node or externally.

Add getValue and SetValue template member functions to SGPropertyNode.

Read and write new extended properties.

Rearrange props.hxx a bit so that the template magic actually works.

Split out extended raw value virtual functions into a seperate base class.

SGRawExtended is chosen as a base class of SGRawValue for extended property
types.
2009-07-16 12:09:43 +02:00
timoore
5bd2d47571 Cleanup of properties
Change most uses of the SGPropertyNode _value union to use static_cast.

Move SGPropertyNode::Type out of the class into simgear::props namespace. Add
a PropertyTraits class so that templates can calculate the property type tag
based on a C++ type.

In destructor, delete _value.val if it is not 0 (and the property is not
aliased).
2009-07-16 12:09:43 +02:00
fredb
f8e475cd34 Refactor GLX only debug code 2009-07-15 12:50:49 +02:00
fredb
a05e063949 Compile when not GLX 2009-07-12 00:52:07 +02:00
ehofman
eb06a90109 Geoff McLane:
add a bunch of debugging code to find a persistant bug for Atlas/Map and fix them one by one.
2009-07-12 00:52:07 +02:00
fredb
e2f6632fee Support MSVC 64-bit architecture 2009-07-02 08:51:12 +02:00
fredb
5c5c583dcc Add MSVC90 (VS2008) project files 2009-07-02 08:51:12 +02:00
fredb
0d8d5c02d0 Update MSVC 7.1 projects - Put PLIB and FLTK in 3rdParty 2009-07-02 08:51:12 +02:00
frohlich
382e0c6ad2 Remove unneeded explicit scenegraph deletion.
Modified Files:
	simgear/scene/tgdb/TileCache.cxx
 	simgear/scene/tgdb/TileEntry.cxx
	simgear/scene/tgdb/TileEntry.hxx
2009-07-02 08:51:12 +02:00
fredb
a8d1c44408 Remove unmaintained, outdated and misleading project files. Use VC7.1 projects instead 2009-07-02 08:51:12 +02:00
fredb
78b4318c34 Suppress warnings 2009-07-02 08:51:12 +02:00
fredb
b47031a099 Win32 fix 2009-07-02 08:51:12 +02:00
frohlich
0f7b65a921 Provide a thread safe SGWeakPtr implementation.
Extend SGAtomic with atomic exchange and add.
Import updates from the original implementation of that in OpenFDM.

Modified Files:
 	Makefile.am SGAtomic.cxx SGAtomic.hxx SGReferenced.hxx
 	SGSharedPtr.hxx
Added Files:
 	SGWeakPtr.hxx SGWeakReferenced.hxx
2009-06-25 10:13:03 +02:00
fredb
33f7903aeb Update MSVC 7.1 projects 2009-06-25 10:13:02 +02:00
fredb
f3c2740917 Win32 fix 2009-06-25 10:13:02 +02:00
frohlich
09a57c7a52 No observed_ptr needed.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
2009-06-25 10:13:02 +02:00
frohlich
9068f0606e Remove unused headers.
Modified Files:
	simgear/scene/tgdb/TileEntry.cxx
2009-06-25 10:13:02 +02:00
frohlich
c577b7e369 Propagate the lanel loader through the options.
Modified Files:
	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-25 10:13:02 +02:00
frohlich
5850464ba7 Move the carrier interactive geometry configuration into the model files.
Modified Files:
	Makefile.am animation.cxx
Added Files:
	SGInteractionAnimation.hxx SGInteractionAnimation.cxx
2009-06-23 10:42:42 +02:00
ehofman
50e240d5e4 Move the texture code to FlightGear/utils/Modeller 2009-06-23 10:42:42 +02:00
frohlich
75c2a45b25 Add some trailing spaces ...
Modified Files:
 	./simgear/math/SGIntersect.hxx
2009-06-23 10:42:42 +02:00
jmt
c958d63897 Fix a warning from GCC - 'ALIAS' was unhandled in the switch stmt. 2009-06-23 10:42:42 +02:00
Tim Moore
b633b8d0d3 change MAX_PATH to max_path to avoid Windows compilation problems 2009-06-17 11:37:21 +02:00
Tim Moore
76948416a9 overhaul sg_throwable to behave like a proper exception
Make sg_throwable inherit from std::exception.

change exception objects to contain C strings: exception objects should not
include objects, like std::string, whose copy constructor could throw.
2009-06-16 11:11:13 +02:00
fredb
f4a527c57c Add a simple class to subdivide Bezier curves 2009-06-15 10:23:22 +02:00
fredb
c491baff0e Remove unused variable 2009-06-15 10:23:21 +02:00
frohlich
6d05fc6f57 Finally get rid of that member in the SGModelData callback.
Move call of SGModelData::modelLoaded directly into the xml reader.

Modified Files:
 	simgear/scene/model/SGPagedLOD.cxx
 	simgear/scene/model/modellib.hxx
 	simgear/scene/model/modellib.cxx
 	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-15 10:23:21 +02:00
frohlich
ca53add820 Mark static transforms as static.
Modified Files:
	simgear/scene/tgdb/TileEntry.cxx
2009-06-15 10:23:21 +02:00
frohlich
6fe3099ab4 Revert a change from 2009/06/07.
Should make the Nasal code for some xml models work again.

Modified Files:
 	simgear/scene/model/SGPagedLOD.cxx
	simgear/scene/model/SGReaderWriterXML.cxx
 	simgear/scene/model/modellib.cxx
	simgear/scene/model/modellib.hxx
2009-06-15 10:23:21 +02:00
frohlich
a34eceb327 Also handle PagedLOD nodes frame count in the update visitor.
Modified Files:
 	simgear/scene/util/SGUpdateVisitor.hxx
2009-06-11 15:55:12 +02:00
frohlich
c9042c3186 Also test against bounds when updating the scene.
Modified Files:
	simgear/scene/util/SGUpdateVisitor.hxx
2009-06-11 15:55:12 +02:00
jmt
b46fe0d51c Fix waypoint test, thanks Martin. 2009-06-11 15:55:12 +02:00
jmt
6d1d3173fe Extend SGWaypoint with track and speed data, and compute tracks with the
distance in SGRoute.
2009-06-11 15:55:12 +02:00
fredb
030d044d03 Win32 fix 2009-06-11 15:55:12 +02:00
jmt
29fb8e0f74 Fix bad interaction between CourseAndDistance overloads and use of implicit
SGWaypoint construction from SGGeod.
2009-06-11 15:55:11 +02:00
jmt
6e326976d5 Update route/waypoint tests for revised API 2009-06-11 15:55:11 +02:00
jmt
03a7d72a62 Change SGWaypoint to use SGGeod internally. Remove some unused code, to
support cartesian waypoints and compute distance off a cartesian route.
Add a helper to access the total route distance.

Should not cause any visible functionality change.
2009-06-11 15:55:11 +02:00
frohlich
f913febd71 More cleanup.
Modified Files:
	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-11 15:55:11 +02:00
frohlich
daa0fbdc6b Do not modify danymically generated textures.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
2009-06-11 15:55:11 +02:00
frohlich
d4c52b599d Provide something more sensible for the properties root
for the modelLoaded call. MAy be this needs to be revisited, but in any
case better than constant zero.

Modified Files:
 	simgear/scene/model/SGPagedLOD.cxx
	simgear/scene/model/modellib.cxx
2009-06-11 15:55:11 +02:00
frohlich
ec88373eb7 Cleanup.
Modified Files:
	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-11 15:55:11 +02:00
frohlich
4286cafdeb Doing the compilers job: constant propagation.
This variable is nowhere set except to zero.

Modified Files:
	model/SGPagedLOD.cxx model/SGReaderWriterXML.cxx
	model/modellib.cxx model/modellib.hxx
2009-06-11 15:55:11 +02:00
frohlich
3880d8e2f2 Slight cleanup.
Remive last reference to plibs file utility library.

Modified Files:
 	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-11 15:55:11 +02:00
frohlich
671c84ad44 Remove unused header.
Modified Files:
	simgear/scene/tgdb/TileEntry.cxx
2009-06-11 15:55:11 +02:00
frohlich
a0d687bb24 Use osgDB::FileUtils instead of plib file utils.
Modified Files:
 	simgear/scene/material/mat.cxx
2009-06-11 15:55:10 +02:00
frohlich
704385ff0a Replace SGPlacementTrans usage with osg::PositionAttitueTransform.
Remove SGPlacementTrans.
Update build system.

Modified Files:
	SimGear.dsp projects/VC7.1/SimGear.vcproj
	projects/VC8/SimGear.vcproj simgear/scene/model/Makefile.am
	simgear/scene/model/placement.cxx
	simgear/scene/model/placement.hxx
	simgear/scene/tgdb/TileEntry.cxx
	simgear/scene/tgdb/TileEntry.hxx
Removed Files:
 	simgear/scene/model/placementtrans.cxx
 	simgear/scene/model/placementtrans.hxx
2009-06-11 15:55:10 +02:00
frohlich
81a657edec Use osg's builtin mechanisms to traverse only in range nodes with the
update visitor.

Modified Files:
	simgear/scene/util/SGUpdateVisitor.hxx
 	simgear/scene/tgdb/TileEntry.cxx
 	simgear/scene/model/placementtrans.cxx
2009-06-11 15:55:10 +02:00
frohlich
9d0bad29c0 Invent a property root if not given in the options struct.
Modified Files:
	simgear/scene/model/SGReaderWriterXML.cxx
2009-06-03 23:43:45 +02:00
ehofman
2fb8e32104 test for addChild also 2009-06-03 00:08:05 +02:00
ehofman
c522e499b2 find the last index instead of the last pos for addChild 2009-06-03 00:08:05 +02:00
frohlich
4700955480 Avoid empty search path extensions for the case that only the bucket index
number is given.

Modified Files:
	scene/tgdb/TileEntry.cxx
2009-06-03 00:08:05 +02:00
frohlich
2c66081fa4 When loading stg files honour the original path if given.
Modified Files:
	simgear/scene/tgdb/ReaderWriterSTG.cxx
	simgear/scene/tgdb/TileEntry.cxx
	simgear/scene/tgdb/TileEntry.hxx
2009-06-03 00:08:05 +02:00
frohlich
855e88da43 Enable stg loading by filename.
Modified Files:
	simgear/scene/tgdb/ReaderWriterSTG.cxx
2009-06-03 00:08:05 +02:00
mfranz
ad302db9a8 segfault-- 2009-06-03 00:08:04 +02:00
frohlich
bfa5fff500 Cleanup.
Additional null pointer checks.
Simplify redundant interface arguments.

Modified Files:
	simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx
	simgear/scene/tgdb/ReaderWriterSTG.cxx
	simgear/scene/tgdb/SGReaderWriterBTG.cxx
	simgear/scene/tgdb/SGReaderWriterBTGOptions.hxx
	simgear/scene/tgdb/TileEntry.cxx
	simgear/scene/tgdb/TileEntry.hxx simgear/scene/tgdb/obj.cxx
2009-06-03 00:08:04 +02:00
frohlich
01c64fd554 Give the models properties as an argument to the init callback.
Modified Files:
 	SGPagedLOD.cxx
2009-06-03 00:08:04 +02:00
mfranz
13a2b92a32 remove duplicated header entry 2009-05-19 23:53:25 +02:00
frohlich
29e79f8f61 Also note the btg reader header in the build system.
Modified Files:
	scene/tgdb/Makefile.am
2009-05-19 23:53:24 +02:00
frohlich
8f7527ede0 Restore the special capability of the btg reader to read compressed files.
Modified Files:
 	scene/tgdb/SGReaderWriterBTG.cxx
 	scene/tgdb/SGReaderWriterBTG.hxx
2009-05-19 23:53:24 +02:00
frohlich
7cd149a4d8 Implement current osgDB::ReaderWriters supportsExtension interface instead
of the previous one.

Modified Files:
 	model/SGReaderWriterXML.cxx model/SGReaderWriterXML.hxx
 	tgdb/ReaderWriterSTG.cxx tgdb/ReaderWriterSTG.hxx
 	tgdb/SGReaderWriterBTG.cxx tgdb/SGReaderWriterBTG.hxx
2009-05-19 23:53:24 +02:00
frohlich
e45912fd8a Attach the ModelData to the options instead of the userdata field.
Modified Files:
	simgear/scene/model/SGPagedLOD.cxx
	simgear/scene/model/SGReaderWriterXML.cxx
2009-05-19 23:53:24 +02:00
ehofman
56c4ba67c6 * Add a function to create a node after the laste node with the same name
(this frees the xml property loader from keeping track of the number of
    nodes with the same name that have already been added to the property
    tree).
 * make some small code cleanups at the core of the property tree.
2009-05-18 00:36:46 +02:00
Tim Moore
7e7ce2f38e Merge branch 'maint' into next 2009-05-18 00:34:06 +02:00
frohlich
7dc9eba2d0 Make SimGear compile with osg trunk
Modified Files:
	simgear/scene/model/SGPagedLOD.cxx
 	simgear/scene/model/SGPagedLOD.hxx
 	simgear/scene/sky/cloud.cxx simgear/scene/sky/moon.cxx
	simgear/structure/OSGVersion.hxx
2009-05-16 16:18:54 +02:00
mfranz
f91d96b51a - fix one broken #include path (in a not usually compiled test app)
- turn four #include paths from the "foo" form to <foo>

The quotes form is normally only used for headers with path relative
to the including file's path, though the standard doesn't strictly
mandate this. This is consistent with the rest of sg, it makes the
code's intent clearer and helps to find headers. (And it's a few
milliseconds faster, too.)
2009-05-16 16:18:37 +02:00
mfranz
bc19609147 tcpserver: typo 2009-05-16 16:17:39 +02:00
mfranz
1ccaf3a0bd fix leaks 2009-05-16 16:17:39 +02:00
ehofman
03bfd829da add a bit of comment 2009-05-02 00:40:09 +02:00
fredb
e1f7a1e0a0 Stuart Buchanan :
This patch changes the shader so the diffuse light element is applied based on the co-linearity of the light vector and the viewing vector. I think this makes sense, as the tree textures don't represent a surface themselves.
2009-05-02 00:40:09 +02:00
ehofman
ceeac0ecf0 Revert most of the previous patch, it didn't improve the dome since it wat adjusting the wrong bads 2009-04-15 23:03:07 +02:00
frohlich
c9d0eac739 Put some annotations into the loaded models names.
Modified Files:
	simgear/scene/model/modellib.cxx
2009-04-15 23:03:07 +02:00
frohlich
8f24d924ee Remove a newline printf, probably left over from development.
Modified Files:
	dome.cxx
2009-04-15 23:03:07 +02:00
ehofman
8537cc9edf Let the fog color transition into the sky dome to give a more natural effect 2009-04-15 23:03:07 +02:00
ehofman
58f3985567 Fix a NaN at higher altitudes: sin_beta could become greater than 1.0 which is hard to understand for asin. 2009-04-15 23:03:07 +02:00
frohlich
872db67f21 Remove unused variables.
Modified Files:
	simgear/bucket/newbucket.hxx
2009-04-15 23:03:07 +02:00
Tim Moore
006f90997a Merge branch 'maint' into next 2009-03-31 00:04:30 +02:00
torsten
26b4776394 fix wrong bucket calculation for western hemisphere, close to poles, full-degree-longitude calculations.
set_bucket computed false left border, if the span was greater than 1, longitudes were less than zero
and longitudes were within SG_EPSILON on a full degree. Example: -179.0, +87.5 returned -176, 87
but should return -180, 87.
Discovered by Brian Schack
2009-03-30 18:43:39 +02:00
frohlich
66c64459e6 Makes more sense to process the orientation in this order.
Modified Files:
	simgear/scene/model/placement.cxx
2009-03-30 18:42:45 +02:00
frohlich
dc8657f57f Clean up placementtrans a bit.
Modified Files:
 	simgear/scene/model/placement.cxx
 	simgear/scene/model/placementtrans.cxx
	simgear/scene/model/placementtrans.hxx
2009-03-30 18:42:45 +02:00
frohlich
9d647b90e0 Zap aliasing compiler warnings.
Modified Files:
 	simgear/io/lowlevel.cxx
2009-03-30 18:42:45 +02:00
frohlich
f5730c950b Remove second, identical to the first one license header.
Modified Files:
 	simgear/scene/model/SGScaleTransform.cxx
2009-03-30 18:42:45 +02:00
frohlich
15d37daebd Remove unused header.
Modified Files:
	simgear/scene/tgdb/TileEntry.cxx
2009-03-30 18:42:45 +02:00
frohlich
795c9876af Make it compile with gcc-4.4.
Modified Files:
	simgear/debug/logstream.hxx
2009-03-30 18:42:45 +02:00
frohlich
45f653167d Make use of optimized matrix multiplication routines in osg.
Modified Files:
	simgear/scene/model/SGTranslateTransform.cxx
2009-03-30 18:42:45 +02:00
frohlich
403d9b6ac1 No longer change the material properties for ac models on the fly.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
2009-03-30 18:42:45 +02:00
frohlich
722af5f659 Cleanup. Use already structured data instead of copying stuff. 2009-03-18 07:53:51 +01:00
frohlich
471b9f02ec Add const accessors.
Modified Files:
	simgear/ephemeris/ephemeris.hxx
2009-03-18 07:53:51 +01:00
frohlich
fd294b6f98 Make sure the boundingvolumes for the btg files are as high as possible
in the scenegraph.

Modified Files:
	simgear/scene/tgdb/SGReaderWriterBTG.cxx
2009-03-18 07:53:51 +01:00
frohlich
88baaa72be Use triangle sphere intersection directly.
Modified Files:
	simgear/scene/bvh/BVHSubTreeCollector.cxx
2009-03-18 07:53:50 +01:00
frohlich
61084cf1ba Make triangle sphere intersection tests usable with mixes types.
Modified Files:
	simgear/math/SGIntersect.hxx
2009-03-18 07:53:50 +01:00
frohlich
5b63f0755a Preparations for improoved timing behaviour.
Modified Files:
	simgear/scene/bvh/BVHMotionTransform.cxx
	simgear/scene/bvh/BVHMotionTransform.hxx
	simgear/scene/bvh/BVHSubTreeCollector.cxx
2009-03-18 07:53:50 +01:00
frohlich
9eb5cf6c98 Add a reference time to the velocity stuff.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
	simgear/scene/model/placement.cxx
	simgear/scene/model/placement.hxx
	simgear/scene/util/SGSceneUserData.hxx
2009-03-18 07:53:50 +01:00
frohlich
679db5a22b The chunked stuff is no longer needed for the ground tiles.
... I (Mathias Froehlich), believe that it is more performant (for the GPU) to
build the biggest indexed sets possible at the expense of tight culling.
I (Mathias Froehlich) also know that the CPU is more performant on smaller chunks
building the old flat groundcache on such tiles. :)
So this code *was* to balance these two contrary requirements to some degree.

Now we have optimized datastructures for drawing and differently optimized
datastructures for intersection tests.


Modified Files:
	simgear/scene/tgdb/obj.cxx
2009-03-18 07:53:50 +01:00
frohlich
0e35168bdb Also align the ocean tiles with some horizontal axis.
This way the bounding boxes for this geometry is slightly smaller.
Helps ground intersection stuff to avoid the ocean triangles earlier.

Modified Files:
	simgear/scene/tgdb/SGOceanTile.cxx
2009-03-18 07:53:50 +01:00
frohlich
035dcc7ab7 Improove bounding volume building in the scenery loading process.
Refactor common code in the BoundingVolumeBuildVisitor.hxx.

Modified Files:
	simgear/scene/model/BoundingVolumeBuildVisitor.hxx
	simgear/scene/model/ModelRegistry.cxx
	simgear/scene/model/ModelRegistry.hxx
2009-03-18 07:53:50 +01:00
frohlich
252deed5b9 Make the debug geometry stuff work with a time argument.
Modified Files:
	simgear/scene/bvh/BVHDebugCollectVisitor.hxx
2009-03-18 07:53:50 +01:00
fredb
c2c4cad753 Compile under windows 2009-03-18 07:53:50 +01:00
frohlich
42e76477cf Make sure each carrier gets its own valocity.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
2009-03-18 07:53:50 +01:00
mfranz
1eade74e5a warning-- 2009-03-18 07:53:50 +01:00
frohlich
f1f0fa0aa9 Make use of posix clocks if available.
Have a more general timestamp implementation.
Very useful for higher accuracy timings.

Modified Files:
	simgear/structure/subsystem_mgr.cxx
	simgear/structure/subsystem_mgr.hxx
	simgear/timing/testtimestamp.cxx simgear/timing/timestamp.cxx
	simgear/timing/timestamp.hxx
2009-03-18 07:53:49 +01:00
frohlich
deef158822 Use a reference counted pointer for the condition.
Modified Files:
	simgear/sound/xmlsound.hxx simgear/sound/xmlsound.cxx
2009-03-11 20:06:57 +01:00
frohlich
fef2006663 Remove unused methods.
Modified Files:
	material/matmodel.hxx material/matmodel.cxx
2009-03-11 20:06:57 +01:00
frohlich
5c97fd576a Make local functions static.
Modified Files:
	model/SGReaderWriterXML.cxx
2009-03-11 20:06:56 +01:00
frohlich
c4eb6b7b65 Remove unused functions/includes ...
Modified Files:
	simgear/scene/tgdb/userdata.hxx
	simgear/scene/tgdb/userdata.cxx
2009-03-11 20:06:56 +01:00
frohlich
31324761cc Zap SGLocation.
Modified Files:
 	projects/VC7.1/SimGear.vcproj projects/VC8/SimGear.vcproj
 	simgear/scene/model/Makefile.am
	simgear/scene/model/placement.cxx
 	simgear/scene/model/placement.hxx
Removed Files:
 	simgear/scene/model/location.cxx
	simgear/scene/model/location.hxx
2009-03-11 20:06:56 +01:00
frohlich
e495f03ee9 Ignore winding order since it is ignored later anyway.
Only emit fully defined primitives.

Modified Files:
	simgear/scene/model/BoundingVolumeBuildVisitor.hxx
2009-03-11 20:06:56 +01:00
frohlich
f5769627e4 Use SGGeod in the model placement.
Modified Files:
	simgear/scene/model/placement.cxx
	simgear/scene/model/placement.hxx
2009-03-11 20:06:56 +01:00
frohlich
06ad73f85b Add convenience function to keep position with just an other elevation.
Modified Files:
	simgear/math/SGGeod.hxx
2009-03-11 20:06:56 +01:00
frohlich
fa20363853 First step for something doing static friction stuff.
Add an id field to identify BVHMotionTransforms.
Provide a factory for ids.
Use that to identify velocity data.
Track the lowermost id in the visitors.

Modified Files:
	simgear/scene/bvh/BVHLineSegmentVisitor.cxx
	simgear/scene/bvh/BVHLineSegmentVisitor.hxx
 	simgear/scene/bvh/BVHMotionTransform.cxx
	simgear/scene/bvh/BVHMotionTransform.hxx
	simgear/scene/bvh/BVHNearestPointVisitor.hxx
	simgear/scene/bvh/BVHNode.cxx simgear/scene/bvh/BVHNode.hxx
	simgear/scene/util/SGSceneUserData.cxx
	simgear/scene/util/SGSceneUserData.hxx
2009-03-05 10:32:06 +01:00
frohlich
2564432e71 Avoid duplicate triangles.
Modified Files:
	simgear/scene/bvh/BVHStaticGeometryBuilder.hxx
2009-03-05 10:32:06 +01:00
frohlich
addf47600d Remove the StaticLeaf visitor slot.
Add a nearest point visitor.

Modified Files:
	BVHBoundingBoxVisitor.hxx BVHDebugCollectVisitor.hxx
	BVHLineSegmentVisitor.cxx BVHLineSegmentVisitor.hxx
	BVHStaticGeometryBuilder.hxx BVHStaticLeaf.cxx
	BVHStaticLeaf.hxx BVHSubTreeCollector.cxx
	BVHSubTreeCollector.hxx BVHVisitor.hxx Makefile.am bvhtest.cxx
Added Files:
	BVHNearestPointVisitor.hxx
2009-03-05 10:32:06 +01:00
frohlich
7f534a7966 Crude hack to work around my today introduced collision tree sharing problem.
Modified Files:
	simgear/scene/model/ModelRegistry.cxx
2009-03-05 10:32:06 +01:00
frohlich
eabffece1f Don't waste space with too huge stl containers.
Modified Files:
	simgear/scene/bvh/BVHStaticGeometryBuilder.hxx
2009-03-05 10:32:06 +01:00
frohlich
afed842ad1 Don't waste space with too huge stl containers.
Modified Files:
	simgear/scene/bvh/BVHStaticData.hxx
2009-03-05 10:32:06 +01:00
fredb
c46cfb5d47 Win32 fix 2009-03-05 10:32:06 +01:00
frohlich
34fe42bbd9 Build boundingvolumes in the model loading phase.
Modified Files:
	ModelRegistry.hxx ModelRegistry.cxx
Added Files:
	BoundingVolumeBuildVisitor.hxx
2009-03-05 10:32:06 +01:00
fredb
0c1d96b749 Update MSVC 7.1 projects - Add the BVH library 2009-03-05 10:32:06 +01:00
fredb
9b67f52d56 SGMatrix<T>::preMultTranslate should return self ( as postMultTranslate do ) 2009-03-05 10:32:06 +01:00
fredb
d37907d35d BVHLineSegmentVisitor::setLineSegmentEnd doesn't return anything 2009-03-05 10:32:05 +01:00
frohlich
fee8d0cf78 Implement setters for velocity notes in the model placement code.
Modified Files:
	simgear/scene/model/placement.cxx
	simgear/scene/model/placement.hxx
2009-03-05 10:32:05 +01:00
frohlich
f5f9c6b81f More data to attach to the user data field.
Modified Files:
 	simgear/scene/util/SGSceneUserData.hxx
2009-03-05 10:32:05 +01:00
frohlich
4e3460a34b Include the bounding volume tree on the build system.
Modified Files:
 	configure.ac simgear/scene/Makefile.am
2009-03-05 10:32:05 +01:00
frohlich
8545b6ce6b Initial commit of the bounding volume tree implementation.
The aim is to prove a better collion model in plenty ways.

Added Files:
 	.cvsignore BVHBoundingBoxVisitor.hxx
	BVHDebugCollectVisitor.hxx BVHGroup.cxx BVHGroup.hxx
	BVHLineGeometry.cxx BVHLineGeometry.hxx
	BVHLineSegmentVisitor.cxx BVHLineSegmentVisitor.hxx
	BVHMotionTransform.cxx BVHMotionTransform.hxx BVHNode.cxx
	BVHNode.hxx BVHStaticBinary.cxx BVHStaticBinary.hxx
	BVHStaticData.hxx BVHStaticGeometry.cxx BVHStaticGeometry.hxx
	BVHStaticGeometryBuilder.hxx BVHStaticLeaf.cxx
	BVHStaticLeaf.hxx BVHStaticNode.cxx BVHStaticNode.hxx
	BVHStaticTriangle.cxx BVHStaticTriangle.hxx
 	BVHSubTreeCollector.cxx BVHSubTreeCollector.hxx
	BVHTransform.cxx BVHTransform.hxx BVHVisitor.hxx Makefile.am
	bvhtest.cxx
2009-03-05 10:32:05 +01:00
frohlich
e417903c23 Additions for the boundingvolumes
Modified Files:
	SGGeometryTest.cxx SGIntersect.hxx SGLineSegment.hxx
	SGTriangle.hxx
2009-03-05 10:32:05 +01:00
frohlich
81eae3fa48 Rotate the scenery tiles so that the horizont is axis aligned.
This might help culling and much more the upcomming collision tree.

Modified Files:
	simgear/scene/tgdb/obj.cxx
2009-02-27 23:34:15 +01:00
frohlich
90c58087e8 Make material get helper function static.
Modified Files:
 	simgear/scene/material/matlib.cxx
 	simgear/scene/material/matlib.hxx
2009-02-27 23:34:15 +01:00
frohlich
19bc1e6313 Initialize random number for the tests.
Define the triangles center by the weighted sum of the vertices.

Modified Files:
	SGGeometryTest.cxx SGTriangle.hxx
2009-02-27 23:34:15 +01:00
frohlich
4a4e8c87b8 Use template arguments instead of hard coded double.
Modified Files:
	simgear/math/SGTriangle.hxx
2009-02-27 23:34:15 +01:00
frohlich
f04e559dc2 Initialize uninitialized variables.
Adapt the precision bounds to what matches the expectations of IEEE math.

Modified Files:
	SGMathTest.cxx
2009-02-27 23:34:15 +01:00
frohlich
8e5e657344 Fix problem in unit quaternion return.
Modified Files:
	SGQuat.hxx
2009-02-27 23:34:15 +01:00
frohlich
a4f1f62068 Make make check link again.
Modified Files:
	simgear/math/Makefile.am
2009-02-27 23:34:15 +01:00
frohlich
a3e279f06f The scenery center is history for a long time now.
Remove that from the transforms.

Modified Files:
	simgear/scene/model/placement.hxx
	simgear/scene/model/placementtrans.cxx
	simgear/scene/model/placementtrans.hxx
2009-02-22 23:49:45 +01:00
frohlich
d11954e80c Small cleanups, bug fixes and improovements to the geometry/math stuff.
Modified Files:
	simgear/math/SGBox.hxx simgear/math/SGIntersect.hxx
	simgear/math/SGLineSegment.hxx simgear/math/SGMatrix.hxx
	simgear/math/SGPlane.hxx simgear/math/SGRay.hxx
	simgear/math/SGSphere.hxx simgear/math/SGVec2.hxx
	simgear/math/SGVec3.hxx simgear/math/SGVec4.hxx
2009-02-22 23:49:45 +01:00
durk
812170ebce Torsten Dreyer: the rotate animation has two ways to define a axis
1. by using center/x-m and axis/[xyz]
2. by using axis/[xyz]1-m and axis/[xyz]2-m

The translate animation only supports method 1. and here comes a patch that
enables method 2 for this animations, too.
2009-02-22 23:49:45 +01:00
fredb
fdd3c77298 Fix to compile with MSC 2009-02-22 23:49:45 +01:00
Tim Moore
342de209a2 Merge branch 'topic/nasal' into next 2009-02-16 00:48:00 +01:00
mfranz
caeb32488e "io.flush() implementation from Melchior. Also add a final filetype
element to the io.stat() array, which has been sitting around on my
box for a while and doesn't seem to have broken anything."  -- Andy

(forward port from nasal/cvs)
2009-02-16 00:46:29 +01:00
Tim Moore
ff7e70f4d5 Merge branch 'topic/gcintersect' into next 2009-02-13 10:07:15 +01:00
Tim Moore
950f51909c New getPrimitive function.
This searches for the primitive found in an OSG intersection query.
2009-02-13 09:40:05 +01:00
Tim Moore
f86e6d344c Make SGSubsystemGroup::Member copy constructor private.
The copy constructor wouldn't make any sense and would confuse ownership of
the subsystem pointer. Problem noted by John Denker.
2009-02-07 00:37:47 +01:00
Tim Moore
08581282dd Merge branch 'topic/cloudz' into next 2009-02-06 19:16:19 +01:00
Tim Moore
e1e47e76ec Turn off z buffer writes for clouds.
This is standard practice for semi-transparent objects and should cut down
on the flickering and other sorting artifacts.
2009-02-06 17:48:23 +01:00
fredb
3ff059848c Update MSVC 7.1 projects - Remove pthreads dependency 2009-02-04 11:07:27 +01:00
Tim Moore
22c7df5936 Merge branch 'maint' into next 2009-02-04 11:03:20 +01:00
Tim Moore
81a44d1340 Merge branch 'releng/1.9.1' into maint 2009-02-04 11:02:30 +01:00
durk
2c089e6166 Synchronize the version number with our mainantance release. 2009-02-04 11:01:39 +01:00
Tim Moore
589dae7b0c Build trees under a transform note that is rotated to Z-up.
This allows the tree geometry to be shared across the entire scene because it
doesn't need to be rotated for each scenery tile.
2009-01-30 11:18:08 +01:00
Tim Moore
3ff13189aa Don't expand all the trees into display lists.
This can chew up large amounts of memory for questionable gains. We do
let the tree model geometry be in a display list if OSG chooses to put
it there.

Various renaming and cleanup. Save some memory by reverting
ShaderGeometry's base class back to osg::Drawable.
2009-01-30 11:17:02 +01:00
Tim Moore
7151c3fac1 Merge branch 'topic/yontree' into next 2009-01-28 07:53:38 +01:00
Tim Moore
3e023b77dd Merge branch 'maint' into next 2009-01-28 07:53:31 +01:00
durk
e3fc89890c For the first time (no pun intended) in almost ten years time (again no
pun intended) that I'm touching the time library.

 Brian Schack reported that the traffic scheduler messes up the timestamps
 of the atlas network output. As it turns out, the c library functions
 asctime, and gmtime use a static copy of the tm struct to do the internal
 formatting. Our linux port of the SGTime class, incidentally, also stored
 it's master time stamp in this very same struct. Thus, formatting an
 arbitrary time value, would have the unwanted side effect of time travel.
 Usually, this would go unnoticed, because the actual time parameters would
 be updated before any damage could be done. But unwanted side effects, as
 in Brian's example could occur.

 On the MSVC port this appears to not have been a problem. Since that port
 used a copy of the tm struct to store it's master time stamps. Since the
 MSVC code also compiles cleanly on linux, it seems to be the way to go to
 use that approach. In addition, it also removes some conditional compile
 directives.

 I've only run a short test, but didn't see any undesirable side effects.
2009-01-28 07:46:55 +01:00
mfranz
ce2a6cfe5c Csaba HALASZ: set _arg even if there's no <command> (crash fix) 2009-01-28 07:46:31 +01:00
Tim Moore
31d9eaf54c Use osg::Geometry code to draw trees ourselves.
This reverts back in the direction of Yon's original patch: the model is
drawn within ShaderGeometry::drawImplementation. This saves a lot of memory
over the previous approach of creating a PrimitiveSet for each model.
2009-01-28 07:43:09 +01:00
Tim Moore
781c445d14 Merge branch 'topic/modelopt' into next 2009-01-23 23:27:48 +01:00
Tim Moore
26a416399f Merge branch 'topic/yontree' into next 2009-01-23 23:27:37 +01:00
Tim Moore
f7dc7f039e QuadTreeBuilder: create leaves on demand
This avoids lots of empty leaves.
2009-01-23 19:30:29 +01:00
Tim Moore
3c74fea087 Rewrite ShaderGeometry to use display lists and OSG primitives.
Based on a patch from Yon Uriarte.

Eliminate _trees list from ShaderGeometry

Use the position and scale values that are already available.
2009-01-23 19:29:18 +01:00
Tim Moore
be0635bfd3 Optimize empty groups from .ac models
The OSG optimizer seems to have changed since this work was originally done.
2009-01-23 16:11:23 +01:00
Tim Moore
6723ef95c2 Merge branch 'maint' into next 2009-01-19 00:13:07 +01:00
Tim Moore
1a8fd62680 Protect against division by zero in QuadTreeBuilder
This could only happen when there's one leaf in the tree, or all the objects
happen to have the same position. Noticed by Csaba Halaz
2009-01-19 00:04:59 +01:00
Tim Moore
8b57ed46b1 Sort cloud sprites using std::sort, based on projected Z.
A "cleanup" of cloud sorting.
2009-01-16 00:37:40 +01:00
Tim Moore
25c08e56c2 Merge branch 'foo' into next 2009-01-15 22:52:11 +01:00
jmt
0f148b6ab6 Fix linkage of test programs with OpenThreads. 2009-01-15 22:49:00 +01:00
jmt
47575fe357 Commit Benoit Laniel's patch which converts more SimGear pieces to use
OpenThreads primitives directly.
2009-01-15 22:49:00 +01:00
jmt
7c14453b5a Since we're now sure 1.9.1 will not be released from trunk, here's Yon
Uriarte's patch to convert SGReferenced over to OpenThread's atomic int.
2009-01-15 22:49:00 +01:00
Tim Moore
a47d5536fa Merge branch 'maint' into next 2009-01-14 22:34:20 +01:00
Tim Moore
db8f7f21e8 Remove OptionsPusher and manipulation of osgDB dataFilePathList.
The bug it worked around has been fixed in the OSG ac3d loader, and changing
the path list has unpleasant multithreading implications.
2009-01-14 22:13:12 +01:00
Tim Moore
3c312c55f1 Merge branch 'maint' into next 2009-01-14 12:13:44 +01:00
Tim Moore
2d11419cba SGPropertyNode must increment / decrement the reference counter in an aliased
node.

From Csaba Halász.
2009-01-14 12:10:23 +01:00
Tim Moore
07a4508944 Merge branch 'topic/mat-anim' into next 2009-01-13 22:58:45 +01:00
Tim Moore
62913739bb Merge branch 'maint' into next 2009-01-13 22:52:19 +01:00
Tim Moore
55e9d8d944 SGMaterialAnimation: Don't install an update callback if values are static 2009-01-13 15:35:15 +01:00
Tim Moore
a9439d58c7 SGMaterialAnimation: factor out update of osg::Material 2009-01-13 13:15:34 +01:00
fredb
800ad40c4c Csaba/Jester : fix the material animation and display night textures 2009-01-13 10:37:38 +01:00
Tim Moore
62864637a3 Merge branch 'maint' into next 2009-01-12 13:14:31 +01:00
fredb
4d4ac7ea24 fix end of file 2009-01-12 13:13:04 +01:00
fredb
119651482d ignore generated files 2009-01-12 13:12:50 +01:00
timoore
ecf0a1a736 Fix include path 2009-01-08 23:06:23 +01:00
jmt
94942d1ac4 Add some syntactic helpers to allow distance/course to be queried between
two geodetic points. This still entails a full _geo_inverse_wgs_84 call,
but makes call sites neater.
2009-01-08 23:05:12 +01:00
jmt
b0a5b54949 Fix test-program linkage now sgmath depends on sgstructure. 2009-01-02 23:52:46 +01:00
jmt
ac57eab8ac Fix a potential crash when OSG is misconfigured, and an appropriate image
loading plugin cannot be found.
2008-12-26 11:42:04 +00:00
mfranz
74a4144193 compilation fix: <cstring> for strcmp() 2008-12-22 18:01:34 +00:00
mfranz
5c44cb0f01 - shininess is in the rage 0..128
- restore fg/plib compatibility (there is/was no <shininess> group)
  (we may want to change that in the (near?) future, though)
2008-12-21 15:01:11 +00:00
durk
c044d711ef Documentation update regarding OpenAL and OSG. 2008-12-20 09:10:43 +00:00
curt
f2132f6a7d Attempt to sort out the version number mess in preparation for a 1.9.0 release. 2008-12-19 20:39:59 +00:00
fredb
69871b15ff Stuart Buchanan :
Attached is yet another 3D clouds patch, to fix the following:
1) The 3D clouds were not modified by the cloud coverage, due to some problems with osg::Switch
2) METAR changes to cloud coverage were not obeyed.
3) Making changes via the Cloud dialog had no effect unless 3D clouds were toggled.
4) Cloud cover was too sparse.
5) 3D Stratus clouds caused performance issues on some hardware (fixed by removing 3D stratus from cloudlayers.xml - it will now be a 2D layer).
2008-12-19 07:39:09 +00:00
mfranz
f4ec02a592 James TURNER: make the index of the current waypoint available 2008-12-18 22:51:58 +00:00
fredb
53f7743678 Stuart :
the 3D clouds now respect changes to the environment caused by updated METAR etc.

It also increases the AlphaFunc as suggested by Tim.
2008-12-14 18:47:30 +00:00
fredb
15893bc558 Csaba/Jester : fix a problem with tex transform animation 2008-12-12 20:02:44 +00:00
fredb
73b974f1b5 Csaba/Jester : fix a problem with material animation 2008-12-12 19:57:25 +00:00
fredb
0e7bdc208b Print the name of the file generating an OpenAL error 2008-12-12 07:41:44 +00:00
fredb
e0a07b7a92 Stuart :
- Removes the cloud type re-use code - I think they aren't worth the graphical artefacts that they cause in light of Tim's improvements
- Changes the transparency of the clouds. Previously, the clouds were transparent at 0m distance, opaque at 200m, then gradually more transparent to the fog limits. This meant they were generally quite transparent. Now, they are opaque from 200m to 15km, then become transparent at 20km. A side effect of this is that the current textures could probably benefit from being made slightly transparent to improve the blending of the sprites against each other.
2008-12-11 08:24:35 +00:00
fredb
4da58e8846 Update MSVC 7.1 projects. Add Boost 2008-12-11 08:23:37 +00:00
timoore
966b9e5c2b Use a singleton Fog attribute for all 3D clouds.
Don't update this Fog with any kind of update callback; instead, update from
the sky repaint method.
2008-12-10 22:39:48 +00:00
timoore
1625192c81 Use StateAttributeFactory for CullFace and ShadeModel attributes 2008-12-10 22:39:23 +00:00
timoore
c5e8c6603c Use Boost singleton template for our singletons 2008-12-10 22:39:02 +00:00
timoore
37e541d326 Render cloud layers with face culling
Also, allow definition of colors for the cloud layer corners for debugging.
2008-12-10 22:38:34 +00:00
timoore
862a827fe6 Add cullFaceFront as a state attribute to the StateAttributeFactory 2008-12-10 22:38:14 +00:00
timoore
b96c5c9e4b Render sky with depth test off.
Also, don't set BACKGROUND_BIT for cloud layers.
2008-12-10 22:37:52 +00:00
durk
f7e91f1f08 Finalizing the preparation of SimGear-1.99.5-rc2. 2008-12-10 18:20:36 +00:00
fredb
2d77178ba3 Stuart Buchanan :
- Replaces simple shader attributes with vectors (this was missed out of the last patch by mistake)
- Includes Yon's Fog update code (Thanks!)
- Fixes a bug since 1.0 where --enable-real-weather-fetch stopped the other weather scenarios from working.
2008-12-06 23:02:42 +00:00
fredb
b38e6d8bf3 Ugly hack to fix a memory corruption problem 2008-12-06 23:01:24 +00:00
fredb
b601cdb6a5 Stuart Buchanan :
This provides the following enhancements & bug fixes
- Fix the chequer-board bug.
- Add proper cloud coverage function - so scattered clouds are now truly scattered.
- Add real-time control for visibility range.
- Use a limited set of clouds rather than generating a completely new Geode for each cloud. This saves sorting and display time.
- Add controls to Rendering dialog to allow fine-tuning of the number of sprites, cloud visibility and the number of different types of cloud.
- Add some variance to the sort back-off to avoid all clouds being sorted at the same time.
- Pack attributes into vectors for performance
- Re-order the cloud type determination code so that if a cloud layer could either be stratus or cumulus, cumulus is used.
- Lowered the cloud level in the standard cloud configuration slightly so a cumulus layer is generated rather than stratus.

These last two mean that you should see some 3D cumuli if disabling real weather fetch.

My thanks to Yon Uriarte for his help with performance work.
2008-12-04 20:56:03 +00:00
fredb
2803154213 Stuart:
Attached is another clouds patch. This does the following:
1) Puts the 3D clouds in a cloud rendering bin, to reduce the transparent edge problem. Viewing 3d clouds against a 2D layer _above_ it now blends correctly. There is still a problem when viewing a layer below the 3d clouds, and I'm not sure if/how I'll manage to solve that. Thanks to Tim for pointing me at the correct code (again).
2) Performance improvement by calculating the Bounding box when the cloud is generated rather than ever time it is requested.
2008-11-30 23:06:18 +00:00
timoore
ae5297e6d7 logstream improvements from Yon Uriarte
Avoid descending into iostream when a message won't be logged.
2008-11-29 00:17:29 +00:00
fredb
fa7490fb38 Stuart:
> Something has changed in the environment manager which means that clouds
> generateion is now inconsistent. I'm still tracking it down, as my recent
> changes shouldn't have affected this.

Well, the cause was a bug in my code, but it didn't expose itself until we moved
to multiple cameras. The attached patch fixes the problem.

I've also put in a new heuristic to improve the frame-rate. Clouds that are already sorted
are likely to still be sorted in subsequent frames. Therefore I've put in a back-off
mechanism for the bubble-sort pass. This should mean that if you stay completely
stationary, once the clouds become sorted they will eventually only perform a
bubble sort pass every 128 frames.
2008-11-26 07:28:10 +00:00
timoore
bad80521a8 Track time in TileCache; assign new tiles the current time 2008-11-24 22:08:31 +00:00
fredb
8303e30033 Stuart :
> Warning: detected OpenGL error 'valeur non valide' after RenderBin::draw(,)

Fixed in the patch below. For some reason the shader didn't like index 16 being used...

The patch also fixes the chequer-board effect that was causing very sparse cloud cover.
2008-11-24 20:26:12 +00:00
fredb
27de1e271e Stuart Buchanan :
Attached is a small patch for 3D clouds.
It provide the following:
1) Proper spherical distribution of sprites (previously they were distributed cylindrically - whoops)
2) Better shading, so the bottom of the cloud is darker than the top.
3) Fixed a couple of texture sizing bugs.
2008-11-23 12:14:56 +00:00
timoore
98cecfe940 Templates for interacting with OSG objects 2008-11-21 14:48:15 +00:00
timoore
2e65538fb5 Template functions and overloaded functions for accessing property values.
These are useful for writing templates that manipulate properties.
2008-11-18 22:16:58 +00:00
curt
e6371cbf9c Manuel Massing:
Attached is a small fix for the sorting in CloudShaderGeometry.cxx.
I think the sorting problem stems from the osg idiosyncracy
to store transposed matrices...so the intuitive

       osg::Vec4f p = vm * osg::Vec4f(_cloudsprites[i]->position.osg(), 1.0f);

needs to be replaced with...

       osg::Vec4f p = vm.preMult(osg::Vec4f(_cloudsprites[i]->position.osg(), 1.0f);

The patch also optimizes the distance calculation - it evaluates the distances
in model space instead of eye space, which reduces computation to a dot-
product instead of a matrix multiplication.
2008-11-09 15:39:54 +00:00
fredb
0b8b6ac56a Stuart Buchanan :
It fixes the following issues (to a greater or lesser extent):
1) Performance. Quad trees used to improve culling, and the sprites are placed on the surface of a sphere rather than
randomly throughout the cloud, requiring fewer textures. This saves about 5-10fps on my machine.
2) Disabled 3D clouds have no performance impact. Previously they were still in the scenegraph. Now they are removed.
3) Clouds are now loaded on start-up, and don't require the scenario to be changed, they also work with METAR.
4) The cloud field is shifted as you travel. There's a small bug in that the clouds "jump" as you reach the edge of the field.
5) Iterative sorting of sprites. This doesn't appear to solve the alpha blending problem completely, but may help a bit.
2008-11-06 21:58:07 +00:00
timoore
cc17cc4af7 Respect precipitation-enable property
From Csaba Halász
2008-10-31 09:46:23 +00:00
timoore
6afd7e1a38 enable world coordinate particle fix 2008-10-30 23:51:41 +00:00
curt
91e22c1fb3 Tidy up for a source code "snapshot" release. 2008-10-30 17:51:00 +00:00
fredb
ad6129816d 3D clouds from Stuart Buchanan. Need a recent driver update, --enable-clouds3d option and a Weather Scenario to show up 2008-10-26 09:37:13 +00:00
curt
409db9d7ef Fix a few spelling errors. 2008-10-23 18:46:55 +00:00
mfranz
2ccd58e917 fix regression: sgLoad3DModel_internal should not make assumptions
about the type of SGModelData. This *can* have to do with Nasal,
but doesn't have to. That's entirely that class instance's business.
2008-10-18 18:44:36 +00:00
mfranz
7585ad430a add global switch for particle systems 2008-10-17 21:15:58 +00:00
mfranz
c105c5a449 allow to modify the XML animation config of a loaded submodel by
defining an <overlay> branch, which is copied over the submodel's
properties before the animations are evaluated
2008-10-14 13:01:01 +00:00
mfranz
54065b59a1 Move omit-node part from startElement to endElement to allow nodes
of this type to have children. We have to save the omit state on the
stack for that.
2008-10-14 11:03:39 +00:00
durk
f9250ae522 Syd Adams: Replace rgb with png. 2008-10-14 05:04:43 +00:00
mfranz
2f8621ed3d s/multiplayer/multiplay/, as this seems to be the slightly more
official version (--multiplay option, /sim/multiplay/ properties etc.)
2008-10-10 09:48:03 +00:00
mfranz
98a3e7cffa if a model XML file contains a <multiplayer> block, copy its contents
to the model's property root (/ai/models/multiplayer[*])
2008-10-09 22:20:33 +00:00
andy
d7f2966216 Yeah, I really shouldn't be in the lexer 2008-09-30 21:52:44 +00:00
andy
8687b214e7 Another lexer fix 2008-09-30 20:19:01 +00:00
andy
f5f1f0da8e Fix broken lex.c checkin 2008-09-30 19:06:34 +00:00
andy
818359bfd0 Fixes for bugs shaken out in the recent push: die properly for nil
indexes in slices.  Fix string conversion issue with bare "+" and "-".
Fix lexing of exponent expressions such that "1e" is not a number.
2008-09-30 16:48:36 +00:00
fredb
8174005ac8 MINGW patch by Csaba Halasz 2008-09-28 08:11:10 +00:00
andy
0180cae8c3 Fix parsing for degenerate cases like a[,] a[:] and {:}. The slicing syntax exposed the low-level generators to some new cases. 2008-09-26 19:18:19 +00:00
andy
dd1ea541ec Sync with Nasal upstream (Melchior already had a chance to test this,
so hopefully not too much breaks).  New syntax features:

1. Call-by-name function arguments.  You can specify a hash literal in
place of ordered function arguments, and it will become the local
variable namespace for the called function, making functions with many
arguments more readable.  Ex:

   view_manager.lookat(heading:180, pitch:20, roll:0, x:X0, y:Y0, z:Z0,
                       time:now, fov:55);

Declared arguments are checked and defaulted as would be expected:
it's an error if you fail to pass a value for an undefaulted argument,
missing default arguments get assigned, and any rest parameter
(e.g. "func(a,b=2,rest...){}") will be assigned with an empty vector.

2. Vector slicing.  Vectors (lists) can now be created from others
using an ordered list of indexes and ranges.  For example:

   var v1 = ["a","b","c","d","e"]

   var v2 = v1[3,2];   # == ["d","c"];
   var v3 = v1[1:3];   # i.e. range from 1 to 3: ["b","c","d"];
   var v4 = v1[1:];    # no value means "to the end": ["b","c","d","e"]
   var i = 2;
   var v5 = v1[i];     # runtime expressions are fine: ["c"]
   var v6 = v1[-2,-1]; # negative indexes are relative to end: ["d","e"]

The range values can be computed at runtime (e.g. i=1; v5=v1[i:]).
Negative indices work the same way the do with the vector functions
(-1 is the last element, -2 is 2nd to last, etc...).

3. Multi-assignment expressions.  You can assign more than one
variable (or lvalue) at a time by putting them in a parenthesized
list:

   (var a, var b) = (1, 2);
   var (a, b) = (1, 2);               # Shorthand for (var a, var b)
   (var a, v[0], obj.field) = (1,2,3) # Any assignable lvalue works

   var color = [1, 1, 0.5];
   var (r, g, b) = color;  # works with runtime vectors too
2008-09-26 18:22:12 +00:00
timoore
19aac5b14c Keep non-local particles in a Z-up frame that is periodically moved.
This eliminates jitter and other rendering problems.
For the moment this is dependent on an osg fix.

Also, don't read wind properties from FlightGear; provide a mechanism
for fg to set the wind.
2008-09-11 10:19:05 +00:00
ehofman
f3f8a211cd Make sure the compiler is aware that SGModelData a child of osg::Referenced, now gcc-3.3 will compile. 2008-09-04 08:52:47 +00:00
fredb
3edcbc3b99 Use a more relevant library name 2008-08-31 18:39:49 +00:00
fredb
5a1cc8745e Update version 2008-08-31 18:35:02 +00:00
timoore
12495547c4 Don't use osgDB::SharedStateManager::share in SGLoadTexture2D
It is not safe to call this function from the database pager thread;
in any event, state sets and textures created in the database pager
will get passed through the SharedStateManager anyway.
2008-08-29 07:39:05 +00:00
curt
ff654ab094 - Update SimGear.dsp
- Assign an arbitrary prerelease version number
- Fix a "make dist" problem.
2008-08-28 17:52:43 +00:00
andy
e55f55cd3e Fix typing error with fgetc in readln(). On most boxes, this would
cause a spurious EOF when there was a 0xff in the stream.  But on PPC,
char is unsigned (for reasons known only to IBM) and it would loop
forever.
2008-08-25 16:53:34 +00:00
timoore
29aad066f0 pointers in Particles object should be ref_ptr 2008-08-11 08:32:13 +00:00
timoore
74d3bdc68c Return eof after a number of reptetitions of file input. 2008-08-07 22:24:01 +00:00
fredb
7f9b3a8666 Update MSVC 7.1 projects - Adapt to OSG 2.6.0-rc1 : location of header files should now be searched in the install directory, here ..\..\..\install\msvc71\OpenSceneGraph\include 2008-08-02 11:31:47 +00:00
ehofman
426f6de16f final fixes for SG_USING_STD removal 2008-07-29 08:25:17 +00:00
timoore
cf19b81dd4 forward declare osg::DrawElementsUShort for real 2008-07-29 02:54:48 +00:00
ehofman
d4c7e95092 Replace SG_USE_STD() by using std:: 2008-07-28 07:52:13 +00:00
fredb
aa07b5bdd8 GL/wgl.h never existed, and a glx equivalent is not needed 2008-07-27 18:04:13 +00:00
ehofman
c7cbb22667 - remove the SG_GLxxxx_H #defines, since OSG provides its own versions
- this exposed a bizarre issue on Mac where dragging in <AGL/agl.h> in
   extensions.hxx was pulling in all of Carbon to the global namespace
   - very scary. As a result, I now need to explicitly include CoreFoundation
   in fg_init.cxx.
 - change SG_USING_STD(x) to using std::x

Issues:

 - the logic for X11 and Win32 in RenderTexture and extensions is tortured,
   please see if you agree I got all the ifdefs correct.
2008-07-27 16:10:36 +00:00
fredb
ff72b68731 Remove unneeded inclusions of windows.h, GL.h and GLU.H 2008-07-27 15:15:33 +00:00
fredb
433be0e46b Maybe a more portable way to do it 2008-07-25 21:33:54 +00:00
fredb
900607034e Compile again with MSVC 2008-07-25 21:27:46 +00:00
ehofman
733e6fa14f Reduce compiler.h to almost nothing (but it's worth keeping around I think, for
the MSVC and MipsPro warning stuff).

As a result of this patch, simgear/sg_traits.h can be deleted. So can SGCMath.h,
but I'll do that separately.

There is one more 'mechanical' change to come - getting rid of SG_USING_STD(X),
but I want to keep that separate from everything else. (There's another mechnica
l change, replacing <math.h> with <cmath> and so on *everywhere*, but one step a
t a time)
2008-07-25 18:35:40 +00:00
ehofman
cd72eb20c6 Attached patches remove BORLANDC, and hence SG_MATH_EXCEPTION_CLASH and SG_INCOM
PLETE_FUNCTIONAL from SimGear and FlightGear.

As a result, SG_HAVE_STD_INCLUDES is now *always* set, so I will get the boring
fixes for that done, but separately. I'm still auditing the other things in comp
ilers.h - there's a lot that can die now BORLAND is gone.
2008-07-25 10:39:20 +00:00
ehofman
d754e616a5 remove a workaround for the C++ / stdlibary bug which existed aeons ago on Mac. 2008-07-25 08:34:15 +00:00
ehofman
d613e0a488 Patch to remove macintosh and MWERKS from Simgear. 2008-07-24 19:16:50 +00:00
timoore
942fa53ed9 Add repeat option to SGFile.
This supports auto-looping over a playback file, for demos and such.
2008-07-19 16:01:20 +00:00
timoore
1729841083 Eliminate empty default constructor for SGReaderWriterBTGOptions 2008-07-19 16:00:58 +00:00
mfranz
315d83bc88 s/getChild/getNode/ (otherwise "start/size" wouldn't work) 2008-07-12 15:31:29 +00:00
mfranz
223aa0ccd5 - XML interface changes:
* condition at top level
  * <start|end>/<color|size> hierarchy
  * wind/gravity -> bool
  * rename some properties (rotspeed -> rotation-speed, etc.)
  * unit suffixes
- remove redundant code
- warnings--
2008-07-12 14:06:11 +00:00
mfranz
38494a48d8 fix SGPropertyNode::LAST_USED_ATTRIBUTE 2008-07-10 10:33:32 +00:00
mfranz
38456bddb5 write-protection warning: use simplified path 2008-07-09 17:31:55 +00:00
mfranz
b8a12b0e5b let readProperties() refuse to overwrite write-proteced properties 2008-07-09 16:17:52 +00:00
mfranz
2d37c0aa42 remove redundant #defines (they are already in compiler.h) 2008-06-22 18:07:50 +00:00
timoore
c8c693db53 From Benoit Laniel: replace SG threading constructs with those from OpenThreads
Also, move any static local mutexes up to global level.
2008-06-12 08:14:40 +00:00
fredb
cdff0fceea Update MSVC 7.1 projects 2008-06-08 16:45:13 +00:00
mfranz
3b6f47aea1 warnings-- 2008-06-07 14:45:22 +00:00
timoore
7bc37651c3 add OSGVersion.hxx to VC7.1 project file 2008-06-02 20:26:07 +00:00
timoore
4fe43c3e50 OSG DatabasePager interface change in 2.5.1
Move OSG version macro from FlightGear to simgear
2008-06-02 20:22:16 +00:00
timoore
0826b7c3ca Replace header files istream and ostream with iosfwd 2008-06-02 20:21:50 +00:00
timoore
d219c5c4c6 Don't include <iostream> and "using" declarations in header files
<iostream> sucks in expensive initialization of the standard streams
and isn't appropriate in a header file. Use <istream> and <ostream>
instead.

using declarations should never appear at global scope in a header
file; source files get to decide what they want to use in their
namespace.
2008-06-02 20:21:27 +00:00
fredb
1a498348ee Fix non threadsafe code 2008-06-01 17:25:05 +00:00
fredb
c6b03555f7 Report abnormal condition 2008-05-31 12:08:17 +00:00
fredb
bb1a270532 Update MSVC 7.1 projects 2008-05-31 12:06:30 +00:00
fredb
69ea4b846a Fix a problem in loading models with paged LOD in some circunstances ( debug with MSVC for instance ) 2008-05-31 12:05:11 +00:00
fredb
373a0e4a7d Use bool instead of int to represent boolean values 2008-05-31 10:02:43 +00:00
mfranz
f4f5ab2392 xmlsound: warning-- 2008-05-21 14:51:39 +00:00
mfranz
b20b3229bf add <delay-sec> parameter that defines how many seconds after triggering
the sound should be played (default: 0)
2008-05-21 14:47:06 +00:00
mfranz
77fb93bb61 update library version requirements 2008-05-19 15:17:55 +00:00
fredb
ec72b46dcb Win32 fix 2008-05-15 06:19:15 +00:00
timoore
367f1813de sg: move most scenery-related code to simgear
From Till Busch
2008-05-14 22:07:50 +00:00
mfranz
74116057a7 Till BUSCH: enable HOT intersection tests on random buildings 2008-05-01 12:21:52 +00:00
mfranz
9deb40216e Nicolas: let SGPath::create_dir() return success/failure (for screenshot) 2008-04-26 15:25:29 +00:00
mfranz
daef76ec0b Till BUSCH:
"tim recently noticed the database pager was repeatedly loading and unloading
the same objects. he also tracked down the problem to missing bounding sphere
information in osgDB::PagedLOD. this is a simplicistic approach to fix this:
SGPagedLOD will now remember whatever value it sees for getBound() after
loading a child. this patch will make database pager run much calmer."
2008-04-25 08:41:29 +00:00
timoore
569a29fbbc Fix new livery code
It turns out that the database pager causes the texture image to be
unloaded after it is applied, so the image and its file name may not
be available for doing the livery substitution. Ask a work around we
set the name of the texture to its file name.
2008-04-24 22:06:06 +00:00
fredb
0c06bfd3d9 Update MSVC 7.1 projects 2008-04-23 22:09:23 +00:00
timoore
8f46f2cac8 Rewrite livery texture replacement to copy StateSet objects
Also, add a NodeAndDrawableVisitor that descends into osg::Drawable.

That motivation for this is that it's a bad idea to modify state sets
that the osgDB::SharedStateManager might be keeping.
2008-04-23 18:13:50 +00:00
mfranz
8f48515b80 Till BUSCH:
this is a small (-1/+3) patch to fix pick animations on scenery objects.
since picking apparently doesn't care for polygon offsets, the objects
got into the picklist in the wrong way. now, no matter if the "highlight
group" or the "normal group" gets hit first, the callback will fire.
2008-04-23 12:28:45 +00:00
timoore
c7dab4abea rewrite of sky dome code
Add more points to the dome, giving it a dome shape rather than a
dunce cap shape.

Represent as OpenGL DrawElements instead of as triangle strips.

Only calculate have the sky colors and reflect those across the dome.
2008-04-14 21:44:21 +00:00
fredb
5e4c4725bc Update MSVC 7.1 projects 2008-04-14 06:27:26 +00:00
timoore
9861d74221 Fixes for compiling with gcc 4.3
Include standard header files and qualify with std:: where needed.

Add "const" to various char parameters and variables.
2008-04-13 21:11:44 +00:00
fredb
bb3b606820 Allows to load submodels with path relative to current model path.
Submodel path must be prefixed by ./ otherwise path is relative to fg_root ( current behavior )
2008-04-02 22:25:12 +00:00
timoore
09fb51189e Change the tile light group node mask to traverse VASI lights too.
The change to set the light group node mask to LIGHTS_BITS caused
VASI/PAPI lights to not be displayed during the day. This patch fixes
that and optimizes VASI creation a bit.
2008-03-24 21:41:30 +00:00
fredb
bd19899bbc Update MSVC 7.1 projects 2008-03-22 11:39:01 +00:00
fredb
b69753fb76 Win32 fix 2008-03-22 11:38:50 +00:00
timoore
9dc1b5f6f5 model paging patch from Till Busch
Comments from Till:
I started the project at the end of february with a simple idea: move all
3d-model loading to the DatabasePager-thread. my first attempts looked
promising, though they were a little too optimistic (or naive?). the patch
has evolved a lot since.

currently it does the following things:
1. revive SGModelLib, move functions for xml-model-loading there

2. replace all calls to sgLoad3dModel with calls to either
SGModelLib::loadModel() or SGModelLib::loadPagedModel()
almost all models will be loaded by the DatabasePager. the few exceptions are:
your own plane, shared models in scenery, random objects, AIBallistic models.

3. simplify mode-loading functions (avoid passing around fg_root)

4. avoid supurious MatrixTransform nodes in loaded models

5. fix some memory leaks
2008-03-22 09:30:26 +00:00
mfranz
55c1ac36e3 - warnings--
- make one-shot sounds subject to volume and pitch control (To get
  constant volume/pitch during the whole lifetime, just *configure*
  the sound that way.)
2008-03-20 17:20:54 +00:00
timoore
c12e6cdc09 rationalize node masks a bit 2008-03-17 08:46:23 +00:00
curt
85562e8b95 argh, missed 1.8.4 in one spot. 2008-03-15 16:33:49 +00:00
curt
fd34cc0b87 Simgear also enforces plib-1.8.5 in order to build. 2008-03-15 16:32:36 +00:00
timoore
6322393782 From Till Busch: use install -p if possible 2008-03-11 13:44:43 +00:00
fredb
1f9e954610 Update MSVC 7.1 projects 2008-03-09 22:09:52 +00:00
mfranz
6491746809 use new arrow shortcuts for compatibility reasons (will be removed later) 2008-03-04 11:48:51 +00:00
timoore
6d2f1ff81e cleanup of precipitation contribution
Reindent everything to Stroustrup style and make member variable style
consistent.

Remove unused header files.

SGPrecipitation is now a subclass of osg::Referenced.

Initialize snow and ice intensity to 0 directly. The methods that set
the intensities change the value slowly and so don't work when the
initial value is garbage.
2008-03-04 08:58:33 +00:00
timoore
c724e5fb20 precipitation effects from Nicolas Vivien 2008-03-04 08:54:00 +00:00
timoore
600726976c Add methods to SGGeod to return OSG Matrix objects for local frames.
Methods have been added for Z down (simulation) and Z up frames.
2008-03-04 08:53:27 +00:00
fredb
49b5c2058d Initialize variables before using them 2008-03-02 16:49:07 +00:00
durk
21df21b144 Olaf Flebbe: Micro update to the MSVC8 Project files. 2008-03-02 16:09:57 +00:00
fredb
620e71e800 Update MSVC 7.1 projects 2008-02-28 21:25:44 +00:00
mfranz
db2216848d don't reset visibility modifier in the M5SM case 2008-02-20 23:36:27 +00:00
mfranz
cfffe91ed5 Syd ADAMS: remove season suffix, this is now done via <condition>s 2008-02-16 22:09:40 +00:00
mfranz
a95aed1047 remove getRootNode(), as this resets the model root 2008-02-16 17:01:01 +00:00
mfranz
2883a36c76 Csaba HALASZ: implement conditional (e.g. seasonal) texture loading at startup 2008-02-15 17:54:01 +00:00
timoore
ac4245013f Cleanup of particles contribution
Put particles classes inside simgear namespace

Refactored some redundant code

Reworked local frame math to use OSG math classes as much as possible
2008-02-15 06:44:24 +00:00
timoore
b09e484492 particles from Tiago_G 2008-02-15 06:44:05 +00:00
timoore
dc63ddb010 Small cleanup of tree shader 2008-02-07 23:01:32 +00:00
timoore
09778a8eab Minor cleanup of Stuart Buchanan's tree patch.
Separate random objects and random trees for real.
2008-02-07 23:01:16 +00:00
timoore
8cbe9f1bd0 Second trees patch from Stuart Buchanan
Adds random variation of tree texture maps
2008-02-07 23:00:23 +00:00
timoore
be61689458 Cleanup and performance tuning of the random trees code.
The QuadTreeBuilder class was completely revamped as a templated class
to support flexible creation of scene graph quad trees, and a major
bug was fixed as well. Now it actually generates quadtrees instead of
some weird striped thing.

One StateSet is shared among all the "forests." The trees are drawn
after normal terrain objects to minimize some of the transparency
related artifacts.

Lighting was implemented in the ShaderGeometry shader (for both
polygon sides). Ambient-diffuse values for trees are hard-coded in
TreeBin.cxx.

DotOsg wrappers were added for ShaderGeometry so it can be output in
the scene graph dump.
2008-02-02 23:01:27 +00:00
timoore
4b63bc051e Random trees from Stuart Buchanan
Stuart's new file SGTreeBin.hxx has been split into 4 files:
TreeBin.[ch]xx and ShaderGeometry.[ch]xx.
2008-02-02 23:01:05 +00:00
timoore
a098ba5e79 Memory leak fixes from Till Busch 2008-01-24 23:05:18 +00:00
fredb
edee4b3fe5 Update MSVC 7.1 projects 2008-01-17 21:41:48 +00:00
timoore
0c9013e60e fix memory leaks in random object code
Don't allocate mt structures (for the random number generator) on the heap.
2008-01-17 08:28:15 +00:00
fredb
701c4bcf27 Avoid spitting gazillion 'Cannot find image file "" ' message on the console while loading random objects 2008-01-12 08:50:21 +00:00
frohlich
22f2fac56b Modified Files:
simgear/scene/model/animation.cxx:
	Change factor/offset order for texture animations.
	Fixes remaining bug with texture animations.
2008-01-07 22:05:48 +00:00
timoore
605125c0e7 Random object support from Stuart Buchanan
In addition to Stuart's changes, there's an independent quad tree
builder class for constructing loose quad trees from scene graph nodes.

Stuart also implemented changes to the random number generator suggested by
Andy Ross.
2008-01-06 15:04:43 +00:00
fredb
65d0ee126a Update MSVC 7.1 projects 2008-01-04 21:45:41 +00:00
fredb
4db6435090 Remove warnings 2008-01-04 21:45:14 +00:00
timoore
4383fd3c45 Give the sky a BACKGROUND_BIT nodemask
Add a MODEL_BIT and tag clouds with that.

Remove vestigial post_root from sky code.
2008-01-04 07:33:42 +00:00
timoore
b6be76b0ab background node mask 2008-01-04 07:33:23 +00:00
frohlich
92d8fa1193 Modified Files:
simgear/scene/model/SGClipGroup.cxx
	simgear/scene/model/SGClipGroup.hxx Update the clip group.
2007-12-31 15:49:01 +00:00
frohlich
9c51bf3edf Modified Files:
simgear/scene/model/animation.cxx: Create animation inputs if not
	already there. Fixes broken texture animations from past checkin.
2007-12-31 15:48:02 +00:00
frohlich
cf0e4e6f8c Modified Files:
Makefile.am SGPickCallback.hxx: add proirities for pick callbacks.
2007-12-26 19:19:51 +00:00
frohlich
c3719f35e3 Modified Files:
animation.cxx animation.hxx: Make use of the expression stuff.
	Factors out common code with other animations stuff in flightgear.
2007-12-26 19:12:04 +00:00
frohlich
0b1f074bcf Modified Files:
Makefile.am
Added Files:
	SGExpression.cxx SGExpression.hxx: Add not yet complete but already
	usable expression tree. Will be used with the panel code.
2007-12-26 19:10:40 +00:00
frohlich
7fe8514434 Modified Files:
scene/model/SGClipGroup.cxx: Oops, add missing simgear_config.h
2007-12-26 19:08:45 +00:00
frohlich
37c4dcf8ba Modified Files:
Makefile.am
Added Files:
	SGClipGroup.cxx SGClipGroup.hxx: Add helper group node for reuse
	of clipping planes. Will be used for the panel code.
2007-12-26 19:05:06 +00:00
frohlich
e33dd3c499 Modified Files:
simgear/props/props.hxx: Add a bunch of convinience functions.
2007-12-26 19:03:21 +00:00
timoore
94be52886e Pass ReaderWriter options to SGMaterialAnimation
It needs to grab the path list from options in order to support the texture
change animation.
2007-12-23 23:33:04 +00:00
timoore
6646aa5644 Fix tiny bugs in sun constructor and repaint code 2007-12-22 23:01:36 +00:00
timoore
d556eba296 Add StateAttributeFactory files to VS project file 2007-12-21 06:29:36 +00:00
timoore
a5b573b2d3 optimize groups from .AC file optimizer run 2007-12-21 06:25:40 +00:00
timoore
18d30ea8fa Repaint 2D cloud layers using texture combiner
Don't change the color in the cloud layer geometry
2007-12-21 06:25:13 +00:00
timoore
4324ffccf4 Fix cloud layer - point lights visibility issue
Move point lights to render bin 8, clouds to render bin 9. Turn on
AlphaFunc for cloud layers.

Create a StateAttributeFactory object to create and share common state
objects.
2007-12-21 06:24:53 +00:00
fredb
182ee9d7e4 Update MSVC 7.1 projects 2007-12-18 22:25:24 +00:00
timoore
68c1cfed46 Use node masks and shared state sets to manage ground lights
Do away with the switch in each terrain tile for the ground lights. They are
turned on by node masks now.

Share state sets among all the light nodes and manage the fog values through a
"GroundLightManager" instead of having separate state sets and callback
functions for each group in each tile.
2007-12-13 23:30:24 +00:00
timoore
1159784538 minor fix to ModelRegistry and syntax changes for Windows
Create the local path in the right order in OptionsPusher. When
OptionsPusher is used, put it inside a new code block so the order of
destruction with respect to the mutex on reader functions id clear.

Add #include <algorithm> to top of ModelRegistry.cxx.

Change include syntax in PathOptions.cxx
2007-12-11 11:07:21 +00:00
timoore
e683b5fdec Check for null options before changing path in registry 2007-12-10 08:30:43 +00:00
timoore
3c409c5070 Work around osg Registry path list problems
The OSG reader plugins overwrite the path list passed in options with the local
directory of the file being read, forcing you to set the path list in
the Registry. I think this a bug, but in the meantime here's a workaround.
2007-12-09 22:38:10 +00:00
timoore
4b7361dfe7 Add operator!= to SGBucket 2007-12-07 23:35:04 +00:00
timoore
037d5c11a5 Add option to SGLoadTexture2D to load dynamic textures 2007-12-07 09:13:34 +00:00
mfranz
95d857e091 - comparison: don't crash if second element is missing
- better messages ("panel"?!)
2007-12-06 17:57:41 +00:00
timoore
4efa087cd1 Don't modify OSG Registry with file path
To set a path when loading model files, use an osg ReaderWriter::Options object.

Put locks in ModelRegistry::readNode and ModelRegistry::readImage to avoid
conflicts when files are loaded from both the pager and the main thread.
2007-12-04 22:38:40 +00:00
fredb
60f0003436 Update MSVC 7.1 projects 2007-12-02 12:28:30 +00:00
timoore
fdb265cd6e Change the main ModelRegistry callback function to stash the substituted file in the cache. 2007-11-29 23:56:49 +00:00
timoore
34704a17f2 Avoid copying drawables and dirtying display lists.
For the alpha-test animation, use an OVERRIDE attribute on the state
set of the top level node instead of copying drawables and state sets
throughout the model.

As a temporary hack in the blend animation, don't use display lists in
the cloned drawables.

These changes are aimed at cutting down the number of display lists
that the pager needs to compile.
2007-11-29 23:56:31 +00:00
timoore
4a959ec2fd rewrite ModelRegistry callbacks as a template with pluggable policy classes
In a big effort to improve use of the object cache, provide a
ModelRegistryCallback template class with different policies for
substitution,  caching, optimization, etc.

Change SGTexDataVarianceVistor to make StateSets static too.
2007-11-29 23:56:09 +00:00
timoore
f182886fce Start of cleanup of scene graph node masks 2007-11-29 23:55:35 +00:00
timoore
2fbaddbecf Move SGReadFileCallback from model.cxx to public class ModelRegistry
Move SGReadFileCallback and all its help classes into a new
ModelRegistry class that also provides an interface to add custom
callbacks for specific file extensions. SGReaderWriterBTG uses that to
keep any further processing from being done on .btg files. Various
namespace-releated cleanup was done on this code too.
2007-11-29 23:55:01 +00:00
timoore
cafcecf03d StateSet optimizations
Use only one shared StateSet to control GL_NORMALIZE. This removes
thousands of state sets from the scene graph.

Fix a typo that was causing two copies of groundLights0 to be added to
each tile.
2007-11-18 23:31:03 +00:00
timoore
49473845cf Some scene graph optimizations
When loading terrain, use DrawElementsUShort where possible.

Don't chunk unconnected triangles in the terrain into seperate
Geometry sets; make the sets as big as possible.
2007-11-18 23:30:34 +00:00
durk
d4d4ed22a0 Minor documentation updates. 2007-11-18 14:21:41 +00:00
durk
240ed6f0b1 Refined debug timing control:
- Added a SampleStatistic class (from the old deprecated libg++) library.
 - Make time statistics and printing conditionable
 - Added an interface function to switch time stamp collection and printing
   on and off from the application (defaults to off).
2007-11-17 09:16:58 +00:00
frohlich
084a24e958 Improove texture sharing. 2007-11-09 05:55:50 +00:00
frohlich
cd9e3648e9 Update node masks 2007-11-09 05:52:58 +00:00
curt
7ed51be4e6 In the original flightgear native/binary scenery terrain data format, we
used short's extensively to represent counts of objects (number of points,
number of texture coordinates, number of traingle strips, etc.) and we used
shorts to index into larger structures.  But this capped many of our structure
sizes to a maximum of 32768.

By switching to unsigned shorts in the future, we can double the maximum
object/index counts without losing anything.  This was a pretty major
oversight in our original specification.

I have bumped up the native object file version from 6 to 7 and added code
in the reader to maintain full backwards compatibilty with version 6
scenery files (i.e. the current 0.9.10 scenery release.)

Curt.
2007-11-05 21:42:29 +00:00
durk
0c8358ae67 - A few fixes to ensure SimGear compiles again on cygwin.
* on cygwin, isnan is declared in ieeepf.h
  * CYGWIN is a special case in that it is windows based, but sometimes
    folows unix conventions. SGAtomic compilation failed on an illegal
    volatile type cast without the additional __CYGWIN__ define check.
2007-10-15 18:49:50 +00:00
durk
25cefd9129 * Fixed memory leak in RenderTexture.cpp (tiny, but still...)
* Added Timestamping debugging code to SGSubsystems (ported from plib
  branch).
2007-10-14 13:46:13 +00:00
timoore
af75c0ca0c Add ability to override existing model files with .osg files.
This enables off-line optimization of models and other special effects.
2007-10-12 22:46:35 +00:00
timoore
a91b2629d3 Manage OSG object cache explicitly
Don't have Registry::ReadNodeImplementation store its results in the
object cache; instead store the optimized model in the cache.
2007-10-12 22:46:13 +00:00
mfranz
de9070dba1 better standard compliance: allow empty top level tags (<PropertyList>) 2007-10-10 12:45:53 +00:00
timoore
813b518b6f Don't reset the random texture base when rebuilding a cloud layer
This fix removes obnoxious visuals (texture jumping) when a cloud
layer is moved due to a metar update or, more significantly, when
switching from metar to a scenario. Also, I switched to using a TexMat
to displace the cloud texture in order to avoid writing the texture
array every frame.
2007-10-04 20:53:22 +00:00
timoore
c47e800f60 Order the cloud layers properly using OSG RenderBin 2007-10-02 21:43:52 +00:00
timoore
8398f45d43 ocean state set in osg::Geometry
Put the ocean tile state set in osg::Geometry, not the osg::Geode, so that
is readily available during intersection testing and can be used to find the
corresponding SGMaterial.

Problem reported by grtux (gh.robin@laposte.net)
2007-09-30 19:51:49 +00:00
timoore
aeaaa50f6c Fix material animations with only a <texture-prop>
On 8/31/07, K. Hoercher <wbhoer@gmail.com> wrote:
> > Some notes:
> > - I found that in order to make the example from model-howto.html work
> > ( starting at "To make a texture replaceable at runtime") one has to
> > specify a valid (i.e. loadable) <texture>  in the material animation.

The cause seems to be the condition in SGMaterialAnimation.cxx l.277
ignoring any texture update by the UpdateCallback (only there
<texture-prop> is looked at)  without an already existing stateSet.
That in turn will not be created with a <texture-prop> alone l. 379ff.

Unless I overlooked some compelling reason contradicting, I'd like to
suggest allowing for a stateSet to be created for those situations
too. I think that would match the behaviour of animation.cxx
(PRE_OSG_PLIB_20061029) and is imho the more expected and also
documented one.
2007-09-05 22:12:00 +00:00
durk
f33ce846b8 Change "FlightGear" to "SimGear" of course. 2007-09-01 12:57:53 +00:00
durk
4718b9dc07 Added a check for OpenSceneGraph and created some basic documentation. 2007-09-01 12:55:46 +00:00
durk
fba00f7c5a Add separate check for openal and ALUT, as these are now separate. 2007-09-01 10:04:36 +00:00
durk
3360383fd7 Documentation fixes: Updated the contents of README.plib and README.OpenAL
Also make sure that these files are included in the release. This is
required, since ./configure refers to these files.
2007-09-01 09:45:21 +00:00
timoore
6c30f62693 Add curvature to ocean tiles.
An apron around the tile hides cracks with coastal tiles.

The VectorArrayAdapter, which lives in the simgear namespace, is a useful
utility class for treating vectors as 2D arrays.
2007-08-12 21:03:43 +00:00
timoore
ab5b0382da Ocean tile detail work in progress 2007-08-12 21:02:54 +00:00
fredb
671f3f5890 Update MSVC 7.1 projects 2007-08-12 13:40:16 +00:00
fredb
9bae445624 Fix a typo 2007-08-12 13:32:42 +00:00
frohlich
30529ccdf5 Modified Files:
projects/VC7.1/SimGear.vcproj projects/VC8/SimGear.vcproj
	simgear/math/Makefile.am simgear/math/SGGeoc.hxx
	simgear/math/SGGeodesy.cxx simgear/math/SGGeodesy.hxx
	simgear/math/polar3d.hxx simgear/math/sg_geodesy.hxx
	simgear/math/sg_types.hxx
Removed Files:
	simgear/math/polar3d.cxx simgear/math/sg_geodesy.cxx
	simgear/math/sg_memory.h:
	Remove sg_memory.h It is unused anyway and should not be required
	in a c++ world. Move distance course functions to the SG* type
	system. Move the implementation into SGGeodesy.cxx. Remove some of
	the old Point3D Based sg* functions that are already unused.
2007-08-07 05:26:21 +00:00
frohlich
a8a02d3a2e Modified Files:
projects/VC8/SimGear.vcproj:
	MSVC8 Build system updates from Olaf Flebbe.
2007-08-07 04:59:09 +00:00
andy
5da33ca244 Melchior discovered that call(call) would crash due to a longstanding bug with argument parsing 2007-08-01 22:46:12 +00:00
andy
04c1e95f08 Fix crash in code generator for some bad lvalue expressions 2007-08-01 22:33:01 +00:00
andy
2186fc1fc7 Add ppc64 to the list of supported platforms based on testing by Tom Callaway at Red Hat 2007-07-31 20:57:21 +00:00
timoore
fb49a9192e Fix ocean texture scaling problem. 2007-07-31 06:39:26 +00:00
curt
ccbc5abec6 Remove an extern SGSky *thesky reference that isn't used in the code anyway.
The original code forced a dependency in SimGear back to something that is
defined globaly in FlightGear, not a great strategy for a library with some
"general purpose" intentions.
2007-07-31 01:21:21 +00:00
timoore
7aa6fd479d OSG Reader and Writer for BTG files
This is part of a somewhat long road towards terrain database paging using
OSG's database pager thread.
2007-07-29 22:32:58 +00:00
frohlich
3fcc16c1a0 Modified Files:
simgear/math/SGGeoc.hxx: Fix unit conversion problem
2007-07-27 19:27:24 +00:00
timoore
b3e0298189 SimGear: Typo in Thanks file
Fix typo

Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Committer: Tim Moore <moore@redhat.com>
2007-07-23 22:00:31 +00:00
timoore
7e1fe7d852 SimGear: Properly print compilers in configure.ac
Print $CC and $CXX using the proper configure.ac mechanism

Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Signed-off-by: Tim Moore <timoore@redhat.com>
2007-07-23 21:45:11 +00:00
timoore
5d7d77d4b6 Allow parallel make ("make -j2") by giving make the opportunity to
determine dependencies.

As in subdirectory foo/bar, $(top_builddir)/foo/bar is defined to be the
current directory, this does not cause any regressions.

From Hans Ulrich Niedermann (hun@n-dimensional.de)
2007-07-22 22:37:26 +00:00
timoore
418856769b Support for reading and writing nodes in .osg files, plus some new accessors. 2007-07-22 20:06:20 +00:00
mfranz
46a32dd3ee coding style fixes 2007-07-22 13:58:26 +00:00
mfranz
ecb4dc57b4 Maik JUSTUS: workaround for broken Doppler effect in OpenAL
mf: this patch is meant to be removed as soon as OpenAL got fixed. (The
    OpenAL developers acknowleged the bug and announced that it'll get
    fixed.) For removal try
    $ cd simgear/sound
    $ cvs diff -rAFTER_OPENAL_DOPPLER_WORKAROUND -rBEFORE_OPENAL_DOPPLER_WORKAROUND|patch
2007-07-22 13:50:24 +00:00
mfranz
89d426470b Maik JUSTUS: Doppler fixes (add option to turn off Doppler for sounds that
shouldn't be affected -- marker beep, ATIS messages, etc.)

mf: this is the first part of the original patch. It is supposed to contain
    fixes that are not caused by OpenAL bugs, and thus aren't meant to be
    reverted later. The second part will contain a temprary workaround for
    OpenAL bugs. Unfortunately, I had to do the split myself as the contributor
    refused to do it.
2007-07-22 13:33:23 +00:00
mfranz
23c7a1b5b7 - close loophole through which one could sneak in illegal property names
containing slashes, colons and all sorts of evil characters. In Nasal
  this could be done via props.globals.getChild("1!@#$//[]{}", 0, 1).setValue(0);
  The cause is that getChild() hands the given name directly over to an
  alternative SGPropertyNode ("convenience") constructor which sets the
  name without any checks.
- unify exception messages: first character is lower case
2007-07-17 14:52:51 +00:00
frohlich
3b21e9434f Modified Files:
simgear/route/route.hxx: Remove unused include.
2007-07-08 08:43:40 +00:00
frohlich
d4a4428e64 Modified Files:
simgear/route/waypoint.hxx simgear/route/waypoint.cxx: Use const
	refs where possible.
2007-07-08 08:43:15 +00:00
mfranz
2dfc057135 replace exit() by throw sg_exception(). Of course, we have to be aware
that interdependencies between sg libs are generally unwelcome, but
sg_exception is a rather basic part, and it's already used by xml, props,
scene, sound and, of course, structure. Since props and xml are core
libs, we can assume that sg_exceptions are available.  (OK'ed by Curt)
2007-07-02 15:42:19 +00:00
mfranz
a25eebef9b add SG_ORIGIN macro that expands to a string __FILE__":"__LINE__
Note that __LINE__ is a number and can't be directly used in string
context, which makes the macro worthwhile. (IMHO :-)
2007-07-02 12:55:10 +00:00
mfranz
741c4ca15a back out last changes (radar patch) 2007-06-29 22:45:37 +00:00
mfranz
0bcdf2e4dc easyxml.cxx: add missing endXML visitor call
testEasyXML.cxx: beef it up
2007-06-29 10:46:52 +00:00
mfranz
cd5a720211 Vivian MEAZZA: add support for aircraft radar signatures 2007-06-24 08:09:07 +00:00
mfranz
5cb04946b0 don't only complain that the volume is larger than 1.0, but say how much
it actually is
2007-06-23 16:48:01 +00:00
mfranz
c8953c6275 Maik JUSTUS: fix/implement directional sound 2007-06-21 21:46:21 +00:00
mfranz
e8dc9c9454 d'oh ... beautify the TRACE message that we actually see! :-} 2007-06-19 18:22:32 +00:00
mfranz
a0c325681f beautify TRACE message 2007-06-19 18:11:06 +00:00
mfranz
8d3bf19422 sooner than planned: fix "scale" animation offsets (1 -> 0) 2007-06-17 21:01:40 +00:00
fredb
4477867ef4 Update MSVC 7.1 projects 2007-06-16 16:14:23 +00:00
fredb
e696c884dc MSVC 7 compilation 2007-06-16 16:13:29 +00:00
mfranz
80bcaa49e6 Nick WARNE: add file name to screenshot info line 2007-06-14 20:20:18 +00:00
mfranz
0096c1bb02 advance tracing messages from SG_INFO to SG_ALERT. If a developer has
demanded tracing, then he shouldn't get these important messages buried
in thousands of lines of meaningless bulk.
2007-06-11 16:09:50 +00:00
mfranz
38b37a068d - allow for (rather unusual) ////// cloud groups
- fix potential use of uninitialized memory: dew
2007-06-09 18:36:56 +00:00
frohlich
0281f31df2 Modified Files:
simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx
	simgear/scene/util/SGSceneFeatures.cxx
	simgear/scene/util/SGSceneFeatures.hxx:
	Olaf Flebbe: Make use of SGSceneFeatues for anisotropic filtering,
	clean up.
2007-06-08 06:50:16 +00:00
frohlich
40b182c550 Removed Files:
simgear/scene/tgdb/leaf.cxx: Now obsolete but not yet removed.
2007-06-08 06:40:56 +00:00
frohlich
d1dedc7511 Modified Files:
scene/tgdb/SGOceanTile.cxx: add missing transform for the ocean
	tile.
2007-06-03 18:28:14 +00:00
frohlich
04cd9b3eb6 Modified Files:
simgear/scene/model/model.cxx
	simgear/scene/util/SGSceneFeatures.cxx
	simgear/scene/util/SGSceneFeatures.hxx:
	Make sure textures are shared. Do not rely on a graphics
	context to be available on model loading.
2007-06-03 18:21:04 +00:00
andy
de6003367d Sync with Nasal upstream. Mostly fixes to naContinue(), which
FlightGear doesn't use.  Also includes a performance fix for the
call() builtin that should help Melchior, who was measuring lower
performance for the props.Node() interface than the getprop/setprop
API.
2007-05-30 22:49:41 +00:00
frohlich
a5f42eeddf Modified Files:
projects/VC8/SimGear.vcproj: Olaf FLebbe win32 build system.
2007-05-30 13:16:53 +00:00
frohlich
a8ba041b67 Modified Files:
simgear/scene/model/SGMaterialAnimation.cxx:
	Olaf Flebbe: Use brakets around bitwise operations.
	Greetings from LinuxTag, Berlin ... :)
2007-05-30 13:07:05 +00:00
curt
e700fc6f34 I guess we aren't using explicit destructors here. 2007-05-30 12:34:24 +00:00
curt
af29d3d257 Make an explicit destructor so the compiler doesn't get confused about
non matching exception types with the implicitely defined destructor.
2007-05-29 19:38:17 +00:00
frohlich
487701a143 Modified Files:
simgear/scene/model/Makefile.am
	simgear/scene/model/animation.cxx
	simgear/scene/model/animation.hxx
Added Files:
	simgear/scene/model/SGRotateTransform.cxx
	simgear/scene/model/SGRotateTransform.hxx
	simgear/scene/model/SGScaleTransform.cxx
	simgear/scene/model/SGScaleTransform.hxx
	simgear/scene/model/SGTranslateTransform.cxx
	simgear/scene/model/SGTranslateTransform.hxx:
	Factor out some useful classes.
2007-05-28 07:13:07 +00:00
frohlich
f32e037c58 Modified Files:
simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx:
	Olaf Flebbe: Improoved texture filtering.
2007-05-28 05:13:03 +00:00
frohlich
8bd903dd96 Modified Files:
SGAtomic.hxx: Also use atomic compiler intrinsics on SGI
2007-05-28 05:06:14 +00:00
frohlich
560c100484 Modified Files:
simgear/bucket/newbucket.cxx simgear/bucket/newbucket.hxx
	simgear/io/decode_binobj.cxx simgear/io/sg_binobj.cxx
	simgear/io/sg_binobj.hxx simgear/math/SGVec2.hxx
	simgear/math/SGVec3.hxx simgear/math/SGVec4.hxx
	simgear/scene/material/mat.hxx
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx
	simgear/scene/model/Makefile.am simgear/scene/tgdb/Makefile.am
	simgear/scene/tgdb/obj.cxx simgear/scene/tgdb/obj.hxx
	simgear/scene/tgdb/pt_lights.cxx
	simgear/scene/tgdb/pt_lights.hxx
	simgear/scene/util/Makefile.am
	simgear/scene/util/SGNodeMasks.hxx
	simgear/scene/util/SGTextureStateAttributeVisitor.cxx
Added Files:
	simgear/scene/model/SGOffsetTransform.cxx
	simgear/scene/model/SGOffsetTransform.hxx
	simgear/scene/tgdb/SGDirectionalLightBin.hxx
	simgear/scene/tgdb/SGLightBin.hxx
	simgear/scene/tgdb/SGOceanTile.cxx
	simgear/scene/tgdb/SGOceanTile.hxx
	simgear/scene/tgdb/SGTexturedTriangleBin.hxx
	simgear/scene/tgdb/SGTriangleBin.hxx
	simgear/scene/tgdb/SGVasiDrawable.cxx
	simgear/scene/tgdb/SGVasiDrawable.hxx
	simgear/scene/tgdb/SGVertexArrayBin.hxx
	simgear/scene/util/SGEnlargeBoundingBox.cxx
	simgear/scene/util/SGEnlargeBoundingBox.hxx
	simgear/scene/util/SGSceneFeatures.cxx
	simgear/scene/util/SGSceneFeatures.hxx
Removed Files:
	simgear/scene/tgdb/leaf.hxx simgear/scene/tgdb/vasi.hxx:
	Reorganize tile loaders.
	Build bigger leafs for the tiles.
	Move runway light colors into materials.xml.
	Split out classes that might be useful at other places.
	Avoid static storage on binobject loading.
2007-05-28 05:00:28 +00:00
andy
52444d177b GCC on ppc linux uses a different architecture symbol than the same compiler on OS X 2007-05-25 15:49:10 +00:00
frohlich
b4f7ff29ef Modified Files:
SGVec3.hxx: Fix a problem in perpendicular triangle computation.
	Solves problem with invalid triangles in ground picking ...
2007-05-18 07:29:37 +00:00
frohlich
f7c6a5bfa2 Modified Files:
SGVec2.hxx SGVec3.hxx SGVec4.hxx point3d.hxx: Provide ordering
	relations for use with std::less in tree bases std:: containers.
2007-05-18 04:46:11 +00:00
curt
6fe14f7a6b Fix a compiler warning. 2007-05-16 16:08:17 +00:00
curt
786e5addd8 Fix various compiler warnings. 2007-05-16 16:07:03 +00:00
mfranz
2e9a15f523 Tim Moore 2007-05-15 22:28:08 +00:00
mfranz
bb0d2ddc53 add Mathias and Maik (to make it look less selfish that I add myself :-)
I'm sure I forgot a lot of people, but it's a start.
2007-05-15 22:02:06 +00:00
mfranz
702fb014a5 s/resistence/resistance/ 2007-05-13 11:53:06 +00:00
frohlich
834eab9457 Modified Files:
simgear/bucket/newbucket.hxx simgear/scene/material/mat.cxx
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx
	simgear/scene/model/location.cxx
	simgear/scene/tgdb/apt_signs.cxx simgear/scene/tgdb/leaf.cxx
	simgear/scene/tgdb/leaf.hxx simgear/scene/tgdb/obj.cxx
	simgear/scene/tgdb/obj.hxx
	simgear/scene/util/SGUpdateVisitor.hxx: Reorganize scenegraph to
	simplify top level structure.
2007-05-08 06:11:15 +00:00
mfranz
a85da04601 Add method to return the number of attached listeners. Listeners have become
a much more important feature than they were two years or something ago, and
it's helpful for debugging and exploration to get this important node property
shown in property tree dumps or in the property browser (verbose mode).
2007-05-07 14:03:44 +00:00
mfranz
414f1c27e4 - fix bug where a property tree saved with writeProperties() and read back
in with readProperties() would not look the same, because element indices
  of '0' were even dropped when a node has a "secret" value *and* children

- introduce "omit-node" modifier attribute for the "include" attribute.
  This inserts the given file in place of the including node, while the
  node is dropped. This is desirable for multiple includes (which can't
  be done by multiply using the "include" attribute, as this isn't valid
  XML spec syntax)
2007-05-06 17:33:15 +00:00
mfranz
c76e2eb900 better warning text for <global> in material animations 2007-05-05 11:16:35 +00:00
frohlich
c523e15302 Modified Files:
SGMaterialAnimation.cxx SGMaterialAnimation.hxx:
	Tim Moore: overhaul the material animation.
2007-05-05 09:15:18 +00:00
frohlich
2dc8de295d Modified Files:
simgear/scene/model/animation.hxx
	simgear/scene/model/shadanim.cxx: Tim Moore: the crom shader.
2007-05-03 19:46:13 +00:00
andy
d645fd6327 Empty vectors work much better as the result of sorting an empty array
than nil does...
2007-05-02 22:29:35 +00:00
andy
219a7f3a07 Fix crash when sorting newly-allocated empty vectors 2007-05-02 22:24:45 +00:00
mfranz
d95e3e0055 don't rely on a compressed scanline being properly closed
(GIMP apparently generates corrupted files)
2007-04-28 23:13:13 +00:00
mfranz
2cc31ff425 SGTexture::read_rgb(a)_texture:
- support greyscale and greyscale/alpha format
- cleanup & make it faster
2007-04-28 12:30:38 +00:00
frohlich
8258fd7d9f Modified Files:
projects/VC8/SimGear.vcproj: Olaf Flebbe: Updates to the win32
	build system.
2007-04-21 12:24:43 +00:00
frohlich
784cca2233 Modified Files:
simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx:
	Olaf Flebbe: make anisotroüpic filtering configurable.
2007-04-21 12:13:16 +00:00
andy
436539a700 Melchior found a bug with negative values in default function arguments 2007-04-06 20:35:38 +00:00
andy
dcb3da9f28 sync with Nasal CVS (added a sort() builtin) 2007-04-06 14:52:06 +00:00
mfranz
a354c841f1 Csaba HALASZ:
- fix bug that messed up leg distances after inserting and deleting waypoints
  not at the end of the route
- move add_waypoint() and delete_waypoint from hxx to cxx
- beef up routetest
2007-04-06 09:54:35 +00:00
fredb
3824f064cd Update MSVC 7.1 projects 2007-04-03 11:35:19 +00:00
fredb
cba6db752b Avoid potential memory leak problems when exceptions are thrown by using reference objects 2007-04-03 11:25:07 +00:00
andy
a458e26581 Fix typo in _M_IX86 2007-04-02 21:32:41 +00:00
andy
9d68727a84 Rewrite substr() to properly clamp its argument ranges and handle negative start arguments as offset-from-end values 2007-04-02 18:28:38 +00:00
andy
38b9a874e0 Add missing free functions for win32 2007-04-02 17:34:47 +00:00
andy
7a680fb9f2 Use __FUNCTION__, which works on gcc and MSVC 7/8, instead of
__func__, which while standardized works only with gcc.  I'll wait for
bug reports from VC6 before bothering with fallback code...
2007-04-02 16:14:54 +00:00
andy
a5f9262adb Melchior points out that NaN/Inf behavior is not platform-independent.
So toss a runtime error ("floating point error") when any of the math
library functions produce a non-finite value.  Note that these are not
the only locations that can do that (simply dividing by zero will
produce an Inf), but it's still proper behavior.
2007-03-30 16:42:22 +00:00
andy
b05e32fa8c Sync with Nasal CVS (soon to become Nasal 1.1). Notable new features:
Nasal now supports calls to "subcontexts" and errors can be thrown
across them, leading to complete stack traces when call() is used,
instead of the truncated ones we now see.

Vectors can now be concatenated using the ~ operator that used to work
only for strings.

Better runtime error messages in general due to a fancier
naRuntimeError() implementation

A big data size shrink on 64 bit systems; the size of a naRef dropped
by a factor of two.

"Braceless code blocks" have been added to the parser, so you can
write expressions like "if(a) b();" just like in C.  Note that there's
still a parser bug in there that fails when you nest a braced block
within a braceless one.

Character constants that appear in Nasal source code can now be
literal multibyte UTF8 characters (this was always supported for
string literals, but character constants were forced to be a single
byte).

New modules: "bits", "thread", "utf8" and (gulp...) "io".  The bits
library might be useful to FlightGear, the utf8 one probably not as
Plib does not support wide character text rendering.  The thread
library will work fine for spawning threads to do Nasal stuff, but
obviously contact with the rest of FlightGear must be
hand-synchronized as FlightGear isn't threadsafe.  The io library is
no doubt the most useful, as it exposes all the basic stdio.h
facilities; it's also frighteningly dangerous when combined with
networked code...
2007-03-29 18:50:12 +00:00
mfranz
53d8cff835 Csaba HALASZ: when a path_cache ceases to exist, unregister from all nodes
that had been told that this node is linking to them

mf: remove old erase-by-key methods; they are now unused and always were
    problematic, so they won't be used in the future either
2007-02-17 10:50:49 +00:00
mfranz
00fe97ff88 - don't leak node in both hash_table:🪣:erase()
- remove bad code from hash_table:🪣:erase(const char *) that was
  introduced with the last patch. (This function isn't used anywhere and
  is scheduled for removal. Leaving it in for now as a reference.)
- remove leaves first in remove_from_path_caches()

- cosmetics: indentation, one trailing space, variable name change, comment
  (Sorrry for mixing that with actual code, but I think it's easy to see.)
2007-02-16 15:32:21 +00:00
andy
607511fd64 Don't crash when destroying a SGBinding object if the property node it
was loaded from lacks a parent.  Patch from ndim on IRC
2007-02-14 23:14:00 +00:00
mfranz
8663c265d8 Maik JUSTUS:
"""
- make every node maintain list of properties that link to it
- add functions to erase node by address from hash bucket/entry in their
  path caches, so that all references can be removed
- if a node is removed, it (and all children, grandchildren, ...) calls
  all linked properties to remove them from their path-cache


This fixes problems with the aerotow over multiplayer and maybe some
other problems, where nodes are queried by name.
"""
2007-02-11 11:05:23 +00:00
andy
6c5d35d6ce "bias" argument to texture animations by Ron Jensen 2007-02-07 19:21:24 +00:00
mfranz
95532cb318 fix error message 2007-02-05 21:41:40 +00:00
frohlich
4d91bc5908 Modified Files:
ephemeris.cxx ephemeris.hxx stardata.cxx:
	one must not do changes just before checkin,
	one most not do changes just before checkin,
	[ last message repeated 100 times ]
2007-02-02 18:16:42 +00:00
frohlich
b13900402d Modified Files:
ephemeris.cxx ephemeris.hxx stardata.cxx stardata.hxx: Throw out sg.h
2007-02-02 18:09:27 +00:00
frohlich
1bb6c03bd0 Modified Files:
simgear/scene/util/SGNodeMasks.hxx
	simgear/scene/model/animation.cxx:
	More finegrained cull masks
2007-02-02 07:00:54 +00:00
frohlich
1445949e31 Modified Files:
projects/VC8/SimGear.vcproj: Olaf Flebbe: renenable static build
2007-01-31 21:40:59 +00:00
frohlich
360d3834ca Modified Files:
SGIntersect.hxx SGVec3.hxx SGVec4.hxx: Add convinience methods
2007-01-30 20:12:15 +00:00
fredb
aacdcad529 restore 'double checked locking' 2007-01-29 08:19:13 +00:00
frohlich
ad9341835f Modified Files:
model.cxx: Better texture sharing, fix problem with rotation order
2007-01-28 20:04:56 +00:00
frohlich
b028adb6af Modified Files:
simgear/structure/SGAtomic.cxx: Plug memory leak originating from
	wrong atomic fallback operations.
2007-01-28 20:03:43 +00:00
fredb
39f683b272 Ensure a reference on the cube map texture is always held 2007-01-26 20:30:02 +00:00
ehofman
a6c46c89eb *** empty log message *** 2007-01-23 10:07:36 +00:00
fredb
d534cf6f02 Better fix for the constant scale factor problem 2007-01-21 11:15:36 +00:00
fredb
dd4326f7c4 Support constant scaling factor 2007-01-21 10:33:34 +00:00
fredb
40aecd688e Don't segfault when dir is empty 2007-01-16 21:34:18 +00:00
frohlich
63730a6e2c Modified Files:
animation.cxx: Add a visible configuration option to the pick
	animation.
2007-01-15 19:01:20 +00:00
frohlich
4d4d26aef8 Modified Files:
projects/VC8/SimGear.vcproj: Olaf Flebbe, MSVC8 buildsystem changes.
2007-01-15 17:32:17 +00:00
mfranz
de6b32d8c6 writePropeties(): create dir if necessary 2007-01-12 21:24:50 +00:00
fredb
a0af7f0524 Update MSVC 7.1 project file and fix win32 compilation 2007-01-09 21:58:04 +00:00
frohlich
c043bd3422 Modified Files:
SGSceneUserData.hxx SGSceneUserData.cxx: Remove default argument
2007-01-07 12:25:32 +00:00
frohlich
18ae1d6940 Modified Files:
animation.cxx: Change the pick animation to better handle different
	mouse buttons.
2007-01-07 11:53:21 +00:00
frohlich
d6f64f9773 Modified Files:
SGSceneUserData.hxx SGPickCallback.hxx Makefile.am
Added Files:
	SGSceneUserData.cxx: Cleanup and replace the pick callback with
	such a list.
2007-01-07 11:52:19 +00:00
frohlich
db99a4cb90 Modified Files:
animation.cxx: Add a button argument to that animation.
	The default is to accept any mouse button.
2007-01-07 08:34:03 +00:00
fredb
108689661f Add a prototype simgear_config.h for MSVC 7.1 and a rule to build it. 2007-01-06 17:01:58 +00:00
fredb
d3e00dba8e Add a prototype simgear_config.h for MSVC 7.1 and a rule to build it.
At Olaf requests, add MSVC 8 specific symbols to remove pedantic warnings
2007-01-06 16:52:50 +00:00
fredb
fcd33e5035 Remove redundant directory ( projects as a whole is already there ) 2007-01-06 16:47:57 +00:00
frohlich
af9082cd9f Modified Files:
moon.cxx: The moo's state like it was with plib
2007-01-06 15:08:40 +00:00
fredb
6a0bb18fca Refresh MSVC6 project file 2007-01-06 14:45:21 +00:00
fredb
8aa8d87781 Fix a typo 2007-01-06 14:44:54 +00:00
fredb
4998af8d7a Add SGBinding.[ch]xx to the MSVC 7.1 project 2007-01-04 22:24:23 +00:00
fredb
c6aa95f3f3 std::find is defined in <algorithm> 2007-01-04 22:23:40 +00:00
frohlich
481be29366 Modified Files:
Makefile.am animation.cxx animation.hxx: Add animation to execute
	a command on scenery pick
2007-01-04 12:55:16 +00:00
frohlich
3617b6ad8c Modified Files:
Makefile.am SGNodeMasks.hxx
Added Files:
	SGPickCallback.hxx SGSceneUserData.hxx: Preparations for generic
	scenery picking.
2007-01-04 12:52:50 +00:00
frohlich
3fb8e19a38 Modified Files:
condition.hxx: Also derive from SGReferenced
2007-01-04 12:51:13 +00:00
frohlich
2ea2f1b4f2 Modified Files:
Makefile.am commands.cxx commands.hxx
Added Files:
	SGBinding.cxx SGBinding.hxx: Move FGBinding to SGBinding
2007-01-04 12:47:12 +00:00
frohlich
26cb8ec4f1 Modified Files:
SGIntersect.hxx: Make it compile with win32
2006-12-28 13:25:14 +00:00
frohlich
7fe56bea86 Modified Files:
obj.cxx: Some kind of polygon offset for GL_POINTS.
2006-12-27 10:33:37 +00:00
frohlich
11b16b8a86 Modified Files:
Makefile.am SGReferenced.hxx
Added Files:
	SGAtomic.cxx SGAtomic.hxx:
	Make the reference counts thread safe.
2006-12-27 10:07:19 +00:00
frohlich
de020ee695 Modified Files:
Makefile.am SGMathTest.cxx SGQuat.hxx SGVec3.hxx
Added Files:
	SGBox.hxx SGGeometry.hxx SGGeometryFwd.hxx SGGeometryTest.cxx
	SGIntersect.hxx SGLineSegment.hxx SGPlane.hxx SGRay.hxx
	SGSphere.hxx SGTriangle.hxx:
	Small updates to the vector code, new geometry and collision
	classes for use with a bv tree to speed up collission tests.
	Also included is a rought unit test for the collissions.
2006-12-27 09:23:39 +00:00
ehofman
3b83487611 Wether you like it or not, MispPro needs these libraries referenced 2006-12-23 12:15:05 +00:00
fredb
09bab4f162 memcpy needs #include <string.h> 2006-12-17 17:52:15 +00:00
fredb
49fcc799ca Port jpgfactory to OSG 2006-12-16 17:29:16 +00:00
fredb
10bc803775 Project files for MSVC 7.1 aka .NET 2003 2006-12-16 13:12:48 +00:00
frohlich
4f40770fc6 Modified Files:
simgear/math/SGVec3.hxx: fix spelling
2006-12-14 05:24:16 +00:00
frohlich
a4495c6ef1 Modified Files:
simgear/scene/sky/bbcache.cxx simgear/scene/sky/bbcache.hxx
	simgear/scene/sky/cloudfield.cxx
2006-12-08 12:22:10 +00:00
frohlich
67d837c4ec Modified Files:
SGVec3.hxx: Generate any perpandicular vector to a given one.
2006-12-08 12:17:30 +00:00
frohlich
138825af6d Modified Files:
point3d.hxx: Add explicit conversion functions to SGVec*
2006-12-08 12:16:56 +00:00
frohlich
c093841336 Modified Files:
simgear/scene/model/animation.cxx: Fix a problem of muliple
	texturre transform not finding the correct configuration.
2006-12-05 06:14:41 +00:00
frohlich
2df1da4226 Return void instead of bool. 2006-12-05 05:43:13 +00:00
frohlich
2792d60e2d Modified Files:
simgear/screen/extensions.hxx: Make it compile on macos
2006-12-03 17:44:27 +00:00
frohlich
656a3ace07 Modified Files:
simgear/scene/material/mat.cxx: Put solid scenery into the
	opaque render bin
2006-12-03 17:27:46 +00:00
frohlich
aec8e88c14 Modified Files:
simgear/scene/util/SGNodeMasks.hxx: Add pickable bit
2006-12-03 17:02:40 +00:00
frohlich
bdd5ca140d Modified Files:
simgear/scene/model/Makefile.am
	simgear/scene/model/animation.cxx
	simgear/scene/model/animation.hxx
	simgear/scene/model/model.cxx
	simgear/scene/model/persparam.cxx
	simgear/scene/model/persparam.hxx
	simgear/scene/model/shadanim.cxx
Added Files:
	simgear/scene/model/SGMaterialAnimation.cxx
	simgear/scene/model/SGMaterialAnimation.hxx
	Big animation overhaul. Improoves animation correctness.
2006-12-03 16:57:20 +00:00
frohlich
8b3b0def03 Modified Files:
SGUpdateVisitor.hxx: Include light information.
2006-12-03 16:46:23 +00:00
frohlich
6440ece177 Modified Files:
SGMisc.hxx: Add clip and periodic normalize functions.
2006-12-02 15:59:23 +00:00
frohlich
bd3518637c Modified Files:
SGVec2.hxx SGVec3.hxx SGVec4.hxx: Add inf norm function
2006-12-02 15:57:55 +00:00
frohlich
aef2a1c484 Modified Files:
interpolater.cxx interpolater.hxx: Enable reading tables directly
	from our dom like tree.
2006-12-02 15:56:55 +00:00
frohlich
a4b28e5737 Modified Files:
simgear/scene/sky/oursun.cxx: Fix the 'sun has wrong size' bug.
	Thanks to Mark Akermann.
2006-11-27 17:11:35 +00:00
frohlich
a3bc2eb836 Modified Files:
simgear/math/interpolater.cxx simgear/math/interpolater.hxx
	simgear/props/condition.cxx simgear/props/condition.hxx
	simgear/scene/model/animation.cxx
	simgear/scene/model/animation.hxx: Optimize interpolation table
	lookup by using a std::map.
2006-11-21 18:44:54 +00:00
frohlich
3059da5805 Modified Files:
SGVec2.hxx SGVec3.hxx SGVec4.hxx: Implement min/max for vectors
2006-11-21 18:39:57 +00:00
frohlich
18d5a492c8 Modified Files:
model.cxx: Tweak model optimizations
2006-11-20 18:19:02 +00:00
frohlich
160b0ea7d9 Modified Files:
placementtrans.cxx placementtrans.hxx: Make use of that view
        information in the update visitor
2006-11-20 18:17:56 +00:00
frohlich
4dd1267bea Modified Files:
SGUpdateVisitor.hxx: Store some view imformation in the
	update visitor.
2006-11-20 18:15:34 +00:00
fredb
b5c4328682 Mac fix from Ima Sudonim 2006-11-18 18:58:51 +00:00
frohlich
571fc69ef4 Modified Files:
VC8/SimGear.vcproj: Import buildsystem from Olaf Flebbe
2006-11-14 21:15:20 +00:00
frohlich
f51595cfc9 Modified Files:
animation.hxx animation.cxx: Improove material/texture/blend animation
2006-11-14 21:09:44 +00:00
frohlich
d54aea0036 Modified Files:
animation.cxx animation.hxx: Fix crash on A-10 load
2006-11-12 10:32:42 +00:00
frohlich
51bb2974bc Modified Files:
model.cxx: Leave it to osg when to do mipmapping.
2006-11-12 07:28:59 +00:00
frohlich
7a859061fd Modified Files:
model.cxx: Reset the database path past the whole model is loaded
2006-11-12 07:23:42 +00:00
frohlich
cefa9fcd75 Modified Files:
SGQuat.hxx: Make const method const
2006-11-12 07:22:44 +00:00
frohlich
d3bacd0b73 Modified Files:
simgear/scene/material/mat.cxx
	simgear/scene/material/matlib.cxx simgear/scene/sky/cloud.cxx
	simgear/scene/sky/dome.cxx simgear/scene/sky/moon.cxx
	simgear/scene/sky/oursun.cxx simgear/scene/sky/sphere.cxx
	simgear/scene/sky/stars.cxx simgear/scene/tgdb/apt_signs.cxx
	simgear/scene/tgdb/leaf.cxx simgear/scene/tgdb/leaf.hxx
	simgear/scene/tgdb/obj.cxx simgear/scene/tgdb/pt_lights.cxx
	simgear/scene/util/SGDebugDrawCallback.hxx
	simgear/screen/Makefile.am: Use color arrays for every geode.
	Just use osg::Material instead of osg::Material and the associated
	mode.
2006-11-10 05:30:37 +00:00
frohlich
b94a98fc90 Modified Files:
scene/model/model.cxx: Next step in direction liveries
2006-11-09 05:42:06 +00:00
fredb
e0b2687231 copysign is already in compiler.h 2006-11-07 21:31:17 +00:00
frohlich
cc6179a4dd Modified Files:
simgear/screen/extensions.cxx simgear/screen/extensions.hxx: Avoid
	the assumption that with glx-1.4 glXGetProcAddress is available -
	use dlsym to get that function.
2006-11-07 17:49:36 +00:00
fredb
e947bac4a3 This class is for plib only 2006-11-07 07:22:48 +00:00
frohlich
11ecbb6ca7 Modified Files:
mat.cxx: Fix dark scenery problem.
2006-11-07 06:40:35 +00:00
frohlich
322789cd4c Modified Files:
simgear/Makefile.am: Make 'make distclean' work
2006-11-07 06:02:47 +00:00
frohlich
f28464dba0 Modified Files:
projects/VC8/SimGear.vcproj: Olaf Flebbe: updated project files
2006-11-07 05:55:46 +00:00
frohlich
8f6456b1f8 Modified Files:
simgear/scene/util/SGUpdateVisitor.hxx: Only traverse active
	children.
2006-11-07 05:47:00 +00:00
frohlich
1f32786c82 Modified Files:
simgear/scene/util/SGDebugDrawCallback.hxx
	simgear/math/SGQuat.hxx: Olaf Flebbe: Make it compile on some more
	win32 variants.
2006-11-07 05:46:25 +00:00
fredb
829c729ee9 Don't try to load textures when no name is given 2006-11-06 21:59:02 +00:00
fredb
5d3aacb892 Attempt to fix the APIENTRY problem. It looks like a problem in OSG, or a conflict between OSG and plib/pui 2006-11-03 18:08:46 +00:00
fredb
741e9c5ed5 For some reason I don't know yet, the APIENTRY stuff in osg/GL is broken for some files. Include the real windows.h until we find why. 2006-11-03 10:04:58 +00:00
fredb
1408c1b623 add copysign definition for MSVC 2006-11-03 09:57:02 +00:00
fredb
c256f8d09e Win32 compilation fix 2006-11-02 17:40:54 +00:00
frohlich
55c018c525 Modified Files:
SGMath.hxx: Attempt to help IRIX builds
2006-11-02 13:37:23 +00:00
frohlich
3fa94b5143 Modified Files:
projects/VC8/SimGear.sln projects/VC8/SimGear.vcproj: Import Olafs
	project files
2006-11-02 06:15:14 +00:00
frohlich
5127e2f89c Modified Files:
Makefile.am SGMath.hxx SGMathFwd.hxx SGMatrix.hxx SGQuat.hxx
Added Files:
	SGVec2.hxx
	Improove the matrix functions. Improove the quaterion functions.
	Add the 2d vector.
2006-11-01 21:25:21 +00:00
mfranz
3175fa3aca + .deps/ 2006-11-01 21:24:24 +00:00
frohlich
5614174b39 Modified Files:
simgear/scene/model/Makefile.am
	simgear/scene/model/animation.cxx
	simgear/scene/model/animation.hxx
	simgear/scene/model/modellib.cxx
	simgear/scene/model/modellib.hxx
Removed Files:
	simgear/scene/model/personality.cxx
	simgear/scene/model/personality.hxx:
	Updates to the animation system.
	Personality can be implemented easier now
2006-10-31 06:26:50 +00:00
frohlich
39fc52fe0a Modified Files:
Makefile.am SGStateAttributeVisitor.hxx
 	SGTextureStateAttributeVisitor.hxx
Added Files:
	SGStateAttributeVisitor.cxx SGTextureStateAttributeVisitor.cxx:
	Move implementation into cxx files
2006-10-31 06:14:38 +00:00
frohlich
81188705b1 Modified Files:
simgear/math/SGQuat.hxx: Initialize with zero not with null pointer
2006-10-31 05:37:45 +00:00
frohlich
63c4873d8a Modified Files:
simgear/screen/extensions.cxx simgear/screen/extensions.hxx:
	use glXGetProcAddress if approriate
2006-10-31 05:36:50 +00:00
frohlich
1a85dcd890 Modified Files:
simgear/timing/timestamp.hxx: Remove reimplemented default
	implementations
2006-10-31 05:33:48 +00:00
frohlich
27470fc504 Modified Files:
configure.ac: Add a configure flag for osg
2006-10-30 19:56:09 +00:00
mfranz
65d18445d3 Makefile(.in) 2006-10-29 20:08:27 +00:00
frohlich
84dd54b33a Modified Files:
configure.ac simgear/environment/visual_enviro.cxx
	simgear/ephemeris/ephemeris.cxx
	simgear/ephemeris/ephemeris.hxx simgear/ephemeris/stardata.cxx
	simgear/ephemeris/stardata.hxx simgear/math/SGMatrix.hxx
	simgear/math/SGQuat.hxx simgear/math/SGVec3.hxx
	simgear/math/SGVec4.hxx simgear/scene/Makefile.am
 	simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx
	simgear/scene/material/matmodel.cxx
	simgear/scene/material/matmodel.hxx
	simgear/scene/model/Makefile.am
	simgear/scene/model/animation.cxx
	simgear/scene/model/animation.hxx
	simgear/scene/model/custtrans.hxx
	simgear/scene/model/model.cxx simgear/scene/model/model.hxx
	simgear/scene/model/modellib.cxx
	simgear/scene/model/modellib.hxx
	simgear/scene/model/personality.cxx
	simgear/scene/model/personality.hxx
	simgear/scene/model/placement.cxx
	simgear/scene/model/placement.hxx
	simgear/scene/model/placementtrans.cxx
	simgear/scene/model/placementtrans.hxx
	simgear/scene/model/shadanim.cxx
	simgear/scene/model/shadowvolume.hxx
	simgear/scene/sky/cloud.cxx simgear/scene/sky/cloud.hxx
	simgear/scene/sky/cloudfield.cxx simgear/scene/sky/dome.cxx
	simgear/scene/sky/dome.hxx simgear/scene/sky/moon.cxx
	simgear/scene/sky/moon.hxx simgear/scene/sky/newcloud.cxx
	simgear/scene/sky/oursun.cxx simgear/scene/sky/oursun.hxx
	simgear/scene/sky/sky.cxx simgear/scene/sky/sky.hxx
	simgear/scene/sky/sphere.cxx simgear/scene/sky/sphere.hxx
	simgear/scene/sky/stars.cxx simgear/scene/sky/stars.hxx
	simgear/scene/tgdb/apt_signs.cxx
	simgear/scene/tgdb/apt_signs.hxx simgear/scene/tgdb/leaf.cxx
	simgear/scene/tgdb/leaf.hxx simgear/scene/tgdb/obj.cxx
	simgear/scene/tgdb/obj.hxx simgear/scene/tgdb/pt_lights.cxx
	simgear/scene/tgdb/pt_lights.hxx
	simgear/scene/tgdb/userdata.cxx
	simgear/scene/tgdb/userdata.hxx simgear/scene/tgdb/vasi.hxx
	simgear/screen/jpgfactory.cxx simgear/screen/tr.cxx
	simgear/structure/Makefile.am simgear/threads/SGThread.hxx
Added Files:
	simgear/scene/util/Makefile.am
	simgear/scene/util/SGDebugDrawCallback.hxx
	simgear/scene/util/SGNodeMasks.hxx
	simgear/scene/util/SGStateAttributeVisitor.hxx
	simgear/scene/util/SGTextureStateAttributeVisitor.hxx
	simgear/scene/util/SGUpdateVisitor.hxx
Removed Files:
	simgear/screen/ssgEntityArray.cxx
	simgear/screen/ssgEntityArray.hxx
	simgear/structure/ssgSharedPtr.hxx
	Big BLOB on the way to OSG.
2006-10-29 19:27:08 +00:00
curt
7c410d36e3 wim van hoydonck:
Updated to World Magnetic Model 2005.
2006-10-28 22:12:48 +00:00
mfranz
98a603a570 - don't need a guarded pointer here
- shorten variable, fix indentation
2006-10-24 20:28:08 +00:00
mfranz
5876052170 allow to switch on/off at runtime a whole imported <model> via <condition>:
<model>
      <path>some/model.xml</path>
      <condition>
          <property>model/switch</property>
      </condition>
  </model>

Of course, one could add "select" animations for all <object-name> in the
<model>, but this is tedious and can hardly be done e.g. for all
objects in all instruments in $FG_ROOT/Aircraft/Instruments-3d/ etc.

The feature will be used in the bo105, so that civilian variants can
have a HSI instrument, where military variants have a TACAN etc.
2006-10-24 19:44:38 +00:00
durk
f8303b4623 Compile time fixes needed to build SimGear on recent cygwin versions. 2006-10-22 19:42:17 +00:00
durk
20005a7a22 Make configuration script compatible with "home-built" openal libraries
on cygwin.
2006-10-22 19:41:16 +00:00
mfranz
4f0bfbab21 - // This will come back and remove
- // the current item each time.  Is
- // that OK?

No, it is not OK. This messes up the vector and confuses the iterator.
And it leads to crashes. Better read the vector in reverse order.
2006-10-22 13:08:09 +00:00
curt
811442832e Step #1 towards abandoning the original point lighting scheme in favor of
sprite based lighting.
2006-10-19 03:36:22 +00:00
frohlich
40811311d7 Modified Files:
SimGear.vcproj: Import changes from Olaf
2006-09-30 07:11:16 +00:00
durk
198de211f8 Memory leak fix. 2006-09-30 05:11:25 +00:00
fredb
9f5412fa9d Win32 only : Don't alloc a console when it is not needed 2006-09-27 20:16:32 +00:00
fredb
0dc9de81ae Add a simple program to benchmark SGTimeStamp::stamp() 2006-09-02 11:21:22 +00:00
fredb
5b8f42ce5e Make the SGTimeStamp behave under Windows just like for other environments 2006-08-31 18:26:45 +00:00
fredb
5314274ed6 Use getNodeValue as initially planned 2006-08-28 19:38:23 +00:00
ehofman
c831856711 MispPro requires an explicit declaration. 2006-08-28 18:53:36 +00:00
curt
1bade6d796 Frederic Bouvier:
Make line feed behavior consistent between linux/windows.
2006-08-26 14:02:17 +00:00
fredb
629a4a950e Better encapsulation for personality 2006-08-25 19:25:56 +00:00
mfranz
aebb1f6ec8 compile (gcc 4.1.0)
("In member function 'T SGPersonalityParameter<T>::shuffle()':
28: error: there are no arguments to 'sg_random' that depend on a template
parameter, so a declaration of 'sg_random' must be available")
2006-08-24 23:03:52 +00:00
fredb
6e42bc55e0 Reorganize personality parameters and add personality to translate, blend and scale animations 2006-08-24 22:46:40 +00:00
frohlich
1235fba7ee Remove duplicate linker line in the resulting Makefile 2006-08-08 05:05:09 +00:00
fredb
7a459db022 Win32 fix 2006-07-30 21:02:36 +00:00
frohlich
607987def5 Remove fastmath funktions like discussed on the list.
Add a new header with forward declarations of the SGMath stuff.
2006-07-30 07:48:06 +00:00
frohlich
397ec62180 Clean up scenery center handling. 2006-07-27 16:34:32 +00:00
durk
9315210fbe Mark's dynamic sun color changes. 2006-07-27 05:15:20 +00:00
curt
5127990a43 Additional functionality for animated point lights (i.e. approach light
rabbits, REIL, VASI/PAPI, etc.)

This allows the calling layer (i.e. FlightGear) better control over the use
of OpenGL point drawing extensions.
2006-07-21 15:45:01 +00:00
curt
40ad2b155a Updated dist content. 2006-07-12 15:08:00 +00:00
mfranz
a0412d026c remove the last redundant "delete" check in all of fgfs/sg (except JSBSim) 2006-07-05 09:31:36 +00:00
andy
7d2134c488 The previous update (and, embarassingly, the "nasal 1.0" release I
announced on Freshmeat.net) was broken.  This is the proper
break/continue fix.
2006-07-05 02:52:06 +00:00
andy
d894f52b97 Been hacking at Nasal recently:
Fix bug with break/continue inside of a foreach or forindex: Don't pop
the vector/index inside OP_EACH, do it at the end of the loop.

In the process, discovered and fixed a scary corruption issue with
continue; it never really worked right, although simple usage was
likely to get away without crashing.  Both the continue's OP_BREAK and
the cleanup code at the end of a loop would pop the "mark" stack,
leading to an underflow.  Introduced an OP_CONTINUE which adjusts
stack but doesn't change markTop

Re-inline the PUSH macro.  This thing is called all over the place
from the inner loop.  If the problem is intra-expression side effects,
then just use another expression in the macro.

Return an empty vector when requesting zero-length subvec, not nil

Have call() return the call stack in the error vector; see docs on
plausible.org/nasal or ask Andy about this feature.

Default closure()'s level argument to zero, not nil

Add an optional "file name" argument to compile()
2006-07-03 05:13:27 +00:00
mfranz
735f475c24 actually query the <condition> that is already set up in SGShaderAnimation 2006-07-01 20:06:05 +00:00
mfranz
353dd73e24 add knots <-> feet-per-second conversion constants 2006-06-25 11:55:56 +00:00
fredb
49fe06498a Compile again on Win32 platforms 2006-06-17 22:02:32 +00:00
frohlich
bc95ec8084 Make at least the header aliasing safe. 2006-06-17 16:04:28 +00:00
frohlich
f79906bf16 Make it compile with gcc-3.3.6 2006-06-17 16:04:05 +00:00
fredb
b3262fcb80 Compile again on Win32 platforms 2006-06-16 10:03:38 +00:00
mfranz
52b8f924aa add float_to_int() rounding function from Cockpit/hud_opts.hxx. The original
file said "(c) FlightGear Project" and "probably written by Norman Vine".
2006-06-16 09:29:54 +00:00
frohlich
52f57160aa Add dist and distSqr functions 2006-06-15 19:13:24 +00:00
frohlich
6d4f23919c Remove unused extern decls 2006-06-15 19:12:57 +00:00
frohlich
899623f71b Remove deprecated, now unused functions. 2006-06-15 08:52:21 +00:00
frohlich
c5d677ac7b Small cleanups to the SGGeo[dc] classes, provide more hooks to use them directly 2006-06-15 08:27:31 +00:00
frohlich
c75270a9fc Use function argument in va_start instead of local variable. 2006-06-15 06:14:46 +00:00
frohlich
1588a379eb Remove now unused function 2006-06-11 13:59:59 +00:00
frohlich
72d2075828 Modified Files:
simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx
	simgear/scene/material/matlib.cxx
	simgear/scene/material/matlib.hxx simgear/scene/tgdb/leaf.cxx
	simgear/scene/tgdb/obj.cxx
	Attach userdata to groundtile scenegraph leafs that contains
	a SGMaterial reference to the material of that leaf.
	Add (physical) material properties to the material definitions.
	Plug a memory leak with GlyphSigns.
2006-06-11 13:30:59 +00:00
frohlich
e99c682637 Preliminary material lookup hooks - still unoptimized. 2006-06-08 05:54:23 +00:00
mfranz
c815f70831 whoops, sorry (Yes, it *was* tested, but then I made another "trivial"
change and ...)
2006-05-24 10:16:09 +00:00
mfranz
0da50eaa79 if we are going to die we better tell all our listeners 2006-05-24 09:37:44 +00:00
mfranz
b0af84a549 add optional position argument to SGRoute::add_waypoint(). Default is -1,
which appends the WP like it used to. Valid vector indices insert the WP
at this position.
2006-05-08 11:31:16 +00:00
fredb
b9631e8521 Mac fix 2006-05-04 05:58:59 +00:00
fredb
f664f7a201 Fix the initial texture path problem. Loaders are setting the one given to ssgLoad as the default one behind our back :-( 2006-04-29 08:09:51 +00:00
fredb
f72b3882c3 Redefine the default PLIB loader behavior : don't clear the texture cache after every model load 2006-04-28 18:05:46 +00:00
mfranz
ea47a2973c add method to delete any waypoint (last waypoint if n is out of range) 2006-04-28 15:43:13 +00:00
frohlich
04be9ca670 Pigeons remaining fix for the soundmanager crashes. 2006-04-25 18:47:37 +00:00
mfranz
6f0baf6ca9 thanks to Erik's texture map I can now drop empty.rgb altogether and just
specify the same texture in the "foo.lighted" and "foo.unlighted" material
entry. This also allows to drop the state cloning and thereby solves the
most urgent apt_signs.cxx TODO. :-)
2006-04-22 13:41:06 +00:00
ehofman
1f5ec6b8d5 Add a texture cache mechanism. Fortunately this oly seems affective for empty.rgb ... 2006-04-22 09:38:14 +00:00
mfranz
a2a91520aa don't allow new command name to overwrite material name 2006-04-20 17:46:40 +00:00
mfranz
fd7b5d3de7 - don't use hard-coded emission values for unlighted signs, but load both
states from material.xml (separate <material> entries for now)
- clone state less often: not once per sign element, but once per material
  switch (TODO: clone only once per material)
2006-04-20 16:06:00 +00:00
mfranz
30ea844c43 fix "unknown.rgb" path (the wrong path was the reason why we always only
got plib's lowres red-white chequer-board pattern along with an error
message, and not ours ... which is much prettier, but also bigger.
(Should we downscale it?)
2006-04-20 15:20:40 +00:00
mfranz
efac53b121 make headers include headers they depend on, don't rely on the c(xx)
file to do that. (This is a requirement for header precompiling.)
2006-04-17 11:29:01 +00:00
mfranz
73c0ef59c1 rename OBJECT_TAXI_SIGN to OBJECT_SIGN. This isn't about taxi signs any
more, but all sorts of signs. Now is the best time to get rid of a
misleading name.
2006-04-14 14:50:08 +00:00
mfranz
7e65ab2d3b add <condition> support to textranslate & texrotate animation 2006-04-12 20:27:38 +00:00
mfranz
fec769f632 set sign orientation such, that when the sign heading=0, one looks straight
on the sign face when looking North
2006-04-12 12:13:03 +00:00
mfranz
90e42642b6 lower signs 2006-04-11 23:04:24 +00:00
mfranz
9d9610a882 add minimalistic backside to signs as a temporary solution 2006-04-11 21:32:15 +00:00
mfranz
1fc81f4b66 re-add hard-coded vertical distance. The coordinates should be surface
points and not add this distance, which depends on the sign housing/hardware,
after all.
2006-04-11 17:34:17 +00:00
mfranz
4f0b1e847c - commands do now have to start with @
- add commands @size, @material, @light
- make "BlackSign" texture default
- make @B, @R, @L, @Y open close their frames automatically (this can be
  avoided by setting the @material manually)
- add number variants for those 4 sign commands: @Y2, @B5, etc (according
  to the spec; defaulting to the respective biggest panel size, i.e. @B = @B3)
(detailed description will be added to $FG_ROOT/Docs/)
2006-04-11 15:57:08 +00:00
mfranz
9567ac32f2 remove obsolete files (on request by Christian Mayer, who has introduced them):
- they are not used anywhere in sg/fgfs
- and are very clearly *not* GPL compatible!
2006-04-10 16:36:52 +00:00
andy
8dd9cfa2a6 Manabu Nishiyama (non-FlightGear Nasal user) discovered an
uninitialized data bug in naHash_cget().  When the hashcode field of
naStr was introduced, I forgot to set it in this function, which
creates a temporary naStr on the stack.
2006-04-10 16:21:17 +00:00
mfranz
dbda8ef893 drop xscale member again, and use xsize/ysize instead. (One interface
element less to confuse people.)
2006-04-10 15:32:55 +00:00
mfranz
cd143c15d5 rewrite of OBJECT_TAXI_SIGN code. The name is a bit misleading, as this
type can also create runway signs. (/me thinks about changing that ...)
2006-04-09 19:51:00 +00:00
mfranz
509a388ccc support for font textures. They are normal (but rather lenghty) <material>,
but contain <glyph> entries with <name>, <left> and <right>. The latter two
describe where in the texture a letter or symbol begins and where it ends.
(range 0-1). <xscale> defines a horizontal scaling factor.
2006-04-09 19:21:13 +00:00
curt
76c6482495 v0.3.10 changes. 2006-04-05 18:42:45 +00:00
mfranz
010a44f831 protect ssg pointers to avoid occasional crashes (of course it would be
nicer if the Occluder would always get removed before its model branch,
but that's not easily enforcable)
2006-03-30 14:13:22 +00:00
curt
e6b0d644d4 v0.3.10-pre3 updates. 2006-03-27 18:48:36 +00:00
curt
02dc68c899 Olaf Flebbe:
Unfortunatly the original SimGear Project I submitted contained local
changes which I didn't intend to submit. Please use this file instead...
2006-03-27 16:32:15 +00:00
mfranz
11ac97cd09 If the author of this message isn't alerted enough to *fix* this, then I'm
sure the users won't do that either. This is regularly triggerd and leads
to meaningless error reports.
2006-03-26 08:22:26 +00:00
mfranz
61f6565321 more guarded pointers (we are still getting spurious crashes on exit because
of that)
2006-03-24 23:24:20 +00:00
curt
55d951f211 Initial revision. 2006-03-24 19:06:05 +00:00
mfranz
143ce6fcd5 remove so that complete dir can be dropped 2006-03-23 22:05:22 +00:00
curt
e264c6ad2e Updates to remove unneeded and old version of zlib source. 2006-03-23 21:59:59 +00:00
curt
036b6785f1 Remove old depricated files. There is a much newer version of zlib
available and just about every unix-based platform already comes with this.
2006-03-23 21:52:03 +00:00
curt
caf5cc90ae v0.3.10-pre2 updates. 2006-03-23 16:37:35 +00:00
mfranz
b05e98b1b6 Vassilii KHACHATUROV: rain fix, cleanup, read formerly hard-coded values
from provided node

"* minor redundant gl call in DrawCone2 optimized away (twice per frame)
* corrected the glRotatef() order in drawRain even further (a less
obvious mistake than before, which is noticed by looking skywards and wiggling
the mouse in the view direction change mode)
* all the "magic numbers" used in the rain rendering code have been
provided a default (based on the old hardcoded value) in a form of a
define, and a meaningfully named static member in SGEnviro"
2006-03-23 15:39:00 +00:00
mfranz
31d0779377 Vassilii KHACHATUROV: fix typos, add/fix comments, change variable names 2006-03-22 16:02:55 +00:00
andy
6b056e915e Oops, implement the previously-mentioned fix without breaking support
for omitting a length argument to mean "the rest of the vector".
2006-03-21 23:12:30 +00:00
andy
9d6c0dc580 The original code (rather oddly) interprets a length of zero in
subvec() to mean "the whole vector".  Melchior showed a use case
(removal of the first element from a vector) where getting a
zero-length subvector is actually desired.  And since I can't come up
with a good reason for why the "feature" was there in the first place,
out it goes...
2006-03-21 22:22:47 +00:00
andy
6e973e07f4 Melchior discovered that cmp() was just wrong, failing to actually
inspect the string pointers.  It also failed to properly sort strings
where one is a prefix of the other.  It looks to me like I just never
finished this, and it ended up in CVS because it just happened to
compile...
2006-03-21 21:57:00 +00:00
curt
c8098b9eac Updates for v0.3.10-pre1. 2006-03-20 19:22:20 +00:00
mfranz
ed20ce388a - better error message when submodel loading failed
- use alignmainmodel node in callback (not used anywhere yet)
2006-03-17 19:01:52 +00:00
andy
33e01e431d The handle gets nulled out if the user has closed the file; don't pass that
null to fclose() in a garbage collection destructor too...
2006-03-16 18:01:56 +00:00
andy
7d631e4959 Fix broken checkin in iolib.c. Also add the 'bits' library, which has a buf()
function needed to make convenient use of io.read().
2006-03-15 19:42:37 +00:00
andy
29eb566448 Melchior found the first bug -- report EOF as nil in readln(). 2006-03-15 19:35:30 +00:00
andy
a770d2a972 Add the Nasal I/O library so Melchior can play with it. Not enabled currently (see NasalSys.cxx in the flightgear CVS) 2006-03-15 18:09:50 +00:00
mfranz
688cffb031 --warnings 2006-03-14 15:55:24 +00:00
mfranz
2cccc26541 --warnings 2006-03-14 15:49:29 +00:00
mfranz
f96f083bb5 close zone.tab file after having read all entries 2006-03-14 12:58:28 +00:00
mfranz
2e078aff7d prevent animations from losing nodes, because other processes removed them
(We are currently getting a lot of aborts in the condition code when
running MP. I don't expect this to fix it, but a bug is a bug.)

(reviewed by Fred, who also fixed *my* bugs :-)
2006-03-14 10:38:06 +00:00
mfranz
bd1f192dc4 Better use a node that is very clearly not used by other services
(e.g. animations). The data class doesn't mind.
2006-03-12 18:56:48 +00:00
mfranz
b62f241051 activate model load/unload callback again. It turned out *not* to be the
cause for the MP crashes -- the same crashes did still occur without it.
2006-03-12 10:09:34 +00:00
ehofman
95d1ac354e Mac OS X fixes from Ima Sudonim. 2006-03-11 22:20:19 +00:00
mfranz
54728f5d57 commenting out Nasal in scenery models for now. This could be responsible
for an MP/AI crash. Still investigating.
2006-03-10 22:58:24 +00:00
mfranz
d9356b0f86 warning-- 2006-03-09 16:17:35 +00:00
ehofman
6b68d9d90b Alexander Powell:
Add MAC OS X Render Texture support:

Most texture modes seem to work on my Powerbook, but I don't have a wide array
of machines to test it on otherwise.

If you have problems, please let me know and I'll see if I can help track down
the source of the bug.  I'd love to keep working on it if time permits (I use
RenderTexture in a few other projects), so I'll keep you informed if there are
any changes that I make for the better.
2006-03-09 09:54:43 +00:00
mfranz
359a8c4a81 model.[ch]xx:
add abstract class SGModelData. If a pointer to such a class is handed over
  to sgLoad3DModel, then its modelLoaded() method is called with path, property
  node and branch. And then it's added to the scene graph so that it's
  destroyed when the model branch is removed from the graph.

modellib.[ch]xx:
  only cache objects when asked to. This is the case for OBJECT_SHARED
  and random objects (like before), but no longer for OBJECT_STATIC.
  These are now removed from the graph when they are "out of sight". This
  prevents accumulation of static models, and makes destroying model data
  possible (e.g. removing Nasal modules)

matmodel.cxx:
  set cache flag for random objects (same behavior as before)
2006-03-09 09:03:57 +00:00
mfranz
dcb95d131b - new FSF addresses
- coplied license headers from h(xx) files to respective c(xx) files
- removed trailing spaces
- fixe $Id$
- fixed typos
2006-03-08 18:16:08 +00:00
david
f4e37ba7c0 Ignore generated binaries. 2006-03-04 13:27:11 +00:00
ehofman
1cbceec0e1 Mathias Frhlich:
zero out all parent pointers, else they might be dangling.
2006-03-04 12:46:29 +00:00
ehofman
5b3c5407a1 Mathias Frhlich:
I have some bugfixes which will avoid fg just crashing if the sound device
could not be opened.
2006-03-03 15:11:35 +00:00
fredb
27a120c7c3 Wrong config file name 2006-02-26 11:02:21 +00:00
andy
375f3e8bc1 Fix from Melchior: Set static values at every condition change, not only initially. 2006-02-22 20:50:35 +00:00
fredb
a75b4af374 Melchior FRANZ:
- don't unlock an already unlocked mutex (Someone wanted to be on
  the safe side with this, but the result is undefined and makes
  pthread_mutex_destroy fail. Reference: manpage for
  pthread_mutexattr_gettype/The Open Group[1]: "Attempting to
  unlock a mutex of this type which is not locked results in
  undefined behaviour.")

- re-enabled all subsystem destructors again (this has been disabled
  because fgfs hung on exit, due to the mutex destroy failure from
  above.)


Reference:
  http://www.opengroup.org/onlinepubs/007908799/xsh/pthread_mutexattr_gettype.html
2006-02-21 12:59:31 +00:00
ehofman
b2a4cd488d Back out the previous patch. 2006-02-21 10:47:20 +00:00
ehofman
1d8d203e9e Declare specified functions, otherwise MIPSpro bails out. 2006-02-21 09:48:33 +00:00
ehofman
4e7fe460a5 Melchior FRANZ:
- new FSF address
- removed a few hundred trailing spaces
- fixed a few $Id$ lines
- copied two license headers from *.hxx files to their respective
  *.cxx counterparts
- added two test aps to .cvsignore
- don't unlock an already unlocked mutex (Someone wanted to be on
  the safe side with this, but the result is undefined and makes
  pthread_mutex_destroy fail. Reference: manpage for
  pthread_mutexattr_gettype/The Open Group[1]: "Attempting to
  unlock a mutex of this type which is not locked results in
  undefined behaviour.")
- re-enabled all subsystem destructors again (this has been disabled
  because fgfs hung on exit, due to the mutex destroy failure)
2006-02-21 09:40:12 +00:00
ehofman
9be14a63b1 Mathias Froehlich: Add license information. 2006-02-20 15:12:13 +00:00
ehofman
afd3c76088 Mathias Frhlich:
This patch makes use of the vectors now available in simgear with that past
patch. And using that it simplyfies the carrier code somehow.

- Small additional factory's to the quaternion code are done in the simgear
  part. Also more explicit unit names in the factory functions.
- The flightgear part makes use of them and simplyfies some computations
  especially in the carrier code.
- The data part fixes the coordinate frames I used for the park positions in
  the carrier to match the usual ones. I believed that I had done so, but it
  was definitly different. Also there are more parking positions avaliable now.
2006-02-19 17:22:17 +00:00
ehofman
6b697506c3 Melchior FRANZ:
- change SG back to FG (this was accidently changed in three wrong
  places when I prepared the file for SG)
- correct length for the proxy id detection
- set (guessed) deposit depth < 1mm correctly
- set deposit type string
- formatting
2006-02-19 17:13:37 +00:00
fredb
3eba296157 Missing defines 2006-02-18 16:19:54 +00:00
fredb
1b51de08f5 Add missing include files needed by the new math code under windows 2006-02-18 13:24:24 +00:00
fredb
3e37f3fa54 Fix Code generation option for debug build 2006-02-18 12:04:37 +00:00
fredb
a18679e95d Remove compiler warnings 2006-02-17 21:57:13 +00:00
curt
0154f81e33 Clean up some compiler warnings. 2006-02-17 15:13:42 +00:00
ehofman
366931952b Remove unused files. 2006-02-17 09:59:27 +00:00
ehofman
606fc352aa Melchior FRANZ:
This patch fixes the sound of 737, Concorde and others, if fgfs
was compiled with newer gcc versions (e.g. gcc 4.0.2). These compilers
implement the c++ standard more strictly, and thus don't guarantee
that c-style casted pointers to different data types really point
to the same address. This is only guaranteed for union members.
2006-02-17 09:23:40 +00:00
ehofman
75f817b39c Mathias Frhlich:
The patch adds a vector lib I have put together during the last time,
it is just handy and interfaces well with s(s)g*. Together with some small
modifications this will later also interface well with OpenSceneGraphs
vectors/matrices. Using this vector kernel is targeted to have a handy
matrix/vector lib available and to provide a scenegraph independent vector
type for use with a small scenegraph wrapper aimed for a smooth transition to
openscenegraph.

That vector code also includes an improoved geodetic conversion routine I
have found some time ago published in the 'journal of geodesy' which avoids
iterative computations for that purpose.

Also the geodetic position class is more typesafe and unitsafe than the
Point3D currently is.

That part is relatively old and in use in my local trees for several months
now.
2006-02-17 09:22:04 +00:00
ehofman
0bc49bf244 Olaf Flebbe:
This patch makesFlightGear at least compile on MSVC. I hope I have removed
reference of my other local changes. DSP and DSW files are included for
reference. They have been reconstructed with am2dsp.pl. I had to introduce a
change to am2dsp because of the need of filenames with embedded spaces. (Yuck)

The major direction is to remove clutter like the _USE_MATH_DEFINES and
have it on the compiler command line sice there is no central include
file. You will have to put it on the command line for your locale
Project files, if it not there, already. I added the
_CRT_SECURE_NO_DEPRECATE define for 2005, since it does no harm to other
VC version.

Third Party Libs like plib, OpenALSDK, freeglut, pthreads-win32, zlib
are unpacked as is side by side. Only change put the includes of OpenAL
into include/AL rather directly into include.
2006-02-17 08:58:56 +00:00
fredb
930a84b459 Outputing 6 digits is not enough for a double 2006-02-07 20:50:35 +00:00
ehofman
21c89e8163 Vassilii Khachaturov:
Fix the current buggy rain orientation behaviour for the views attached to the
aircraft (while still inheriting bugs with the views attached to anything else).
2006-02-02 09:56:48 +00:00
ehofman
b3770cd26c Expose the sun halo texture handle. 2006-01-31 15:14:02 +00:00
ehofman
0cd4d44bd3 Expose GL_COORD_REPLACE 2006-01-31 15:13:12 +00:00
ehofman
af15e73e64 create an absolute value before calling log or log10, this adds support for sound on negative numbers (thrust reverse for example). 2006-01-30 20:30:56 +00:00
ehofman
33f176b8f9 Melchior FRANZ:
add optional arg to SGPropertyNode::addChangeListener that triggers
the listener function call initially. This is useful for cases where
a freshly installed listener wants to treat the current property
value as changed from 'unknown' to the actual value right away.

Examples can be found in the Nasal incarnation setlistener(),
where we have for example this (in $FG_ROOT/Nasal/gui.nas):

  INIT = func {
      ...
      setlistener("/sim/rendering/fps-display", fpsDisplay);
      if (getprop("/sim/rendering/fps-display")) {
          fgcommand("dialog-show", props.Node.new({"dialog-name": "fps"}));
      }
  }


That is: we first attach a listener that cares for changes to the FPS
display switch, but then we have to manually open the dialog initially.
That's a duplication of code and could be as simple as this
(INIT part only):

  INIT = func {
      ...
      setlistener("/sim/rendering/fps-display", fpsDisplay, 1);
  }

That is: the optional third arg makes fpsDisplay be called initially,
and then again with every write action. My first solution was in the
Nasal code only, but Andy (rightfully) says that this should rather
be in sg.
2006-01-30 10:56:34 +00:00
ehofman
42f21972fd On a second thought, disable smooth shaded lines for all segments of the lightning. 2006-01-27 15:27:43 +00:00
ehofman
2d79e54c46 Disable smooth lines for certain lightning segments. 2006-01-27 15:18:45 +00:00
ehofman
224408b0e8 Add support for point sprites. 2006-01-26 09:15:42 +00:00
fredb
610e447d7c The sample is now managed by a SGSharedPtr and shouldn't be deleted explicitely 2006-01-24 21:49:56 +00:00
ehofman
c2c0e19305 Mathias Frhlich:
Incorporating the shared ptr code:
- All scenegraph references from SimGear
- SGMaterial which already had a reference counter uses now that common
  infrastructure.
- SGMatModel is now counted.
- SGSoundSample from SimGear
- And the corresponding change for the sound samples in flightgear which fixes
  a latent crash if FGBeacon would evern be deleted.
2006-01-24 14:44:35 +00:00
ehofman
e8c4b0d57c Mathias Frhlich:
Use the new automatic reference counter instead of doing
that ourselfes.
2006-01-12 13:47:04 +00:00
fredb
36e7684d9a MSVC vsnprintf ( in fact _vsnprinft ) returns -1 when the buffer is too short 2006-01-10 20:25:46 +00:00
fredb
795c079af0 Use the new SGPath::create_dir function
Ensure no triangles array could have more than 32767 vertices, a PLIB limit.
2006-01-07 13:21:36 +00:00
curt
94e1d3f0fc John Ellson:
This patch fixes this SimGear compile error on x86_64 Fedora Development with gcc-4.1:

placement.hxx:49: error: extra qualification ‘SGModelPlacement::’ on member ‘init’
2006-01-04 16:44:08 +00:00
ehofman
1df002de81 MinGW fixes. 2006-01-04 09:08:35 +00:00
ehofman
b7115659b3 Make the sgi code the default to prevent future problems. 2006-01-03 17:40:49 +00:00
ehofman
258ec6b89a Save some memory. 2006-01-03 17:34:00 +00:00
ehofman
d1ecdfc510 Fix the persisent IRIX bug. 2006-01-02 13:32:16 +00:00
ehofman
a807e66d4a prevent confusion by not using a standard name. 2006-01-02 10:04:10 +00:00
ehofman
8f9921d00c Mathias Frhlich:
Add the basic infrastructure for a reference counter class.
Adding it now (without using it) enables Mathias and others to
prepare some memory reduction code.
2005-12-29 12:00:29 +00:00
ehofman
99bc4e9a87 Vassilii Khachaturov:
clean up some build warnings caught with gcc-4.0.
2005-12-19 12:52:02 +00:00
ehofman
9289cfdde9 Frederic Bouvier:
Fix a problem where the directory being created is made relative when in fact
it's absolute. It also tightens things a bit on the Windows side.

Erik:

Make the section that splits up the directory in a lists of parent directories
a standalone function.
2005-12-19 10:22:27 +00:00
ehofman
bedbe3caad Frederic: this patch to sg_path.cxx will filter out false alarms when directory already exists. 2005-12-18 09:37:37 +00:00
ehofman
2e329426ab Frederic Bouvier:
The create_dir was totally broken. No function was used at the right place
except mkdir. This patch now create directories without segfaulting.


Erik:

This was my bad, I've been using a really slow computer for the last ten months
and recompiling SimGear with a change to the properties code takes ages, so
once in a while I apply something not entirely tested. This is one really bad
example which shouldn't have happened. Thanks to Frederic for fixing it.
2005-12-17 22:12:53 +00:00
ehofman
4c68d03457 Add the subdir to the path before trying to create it, instead of afterwards. 2005-12-17 15:41:48 +00:00
ehofman
0911fa4fa2 MSVC fixes. 2005-12-17 15:32:43 +00:00
ehofman
c5737c5f74 Try to detect the proper type for mode_t 2005-12-17 15:15:09 +00:00
ehofman
106198fa20 Stefan Seifert: Add the posibility to specify a userarchive attribute which could be used to save user prefferences at program exit. 2005-12-17 15:11:37 +00:00
ehofman
4eb74a3c93 Add a function to create aa new directory 2005-12-17 15:06:56 +00:00
ehofman
3f0bcc9568 Mathias Frhlich:
Detect whether we support pubuffers at runtime using the GLX extension string.


Erik:

Add support to compile TestRenderTexture if GLUT is installed.
2005-12-14 10:28:16 +00:00
ehofman
f0c35fde6d MacOs X fix. 2005-12-11 13:41:57 +00:00
ehofman
8357eeb762 Vassilii Khachaturov:
* in some cases more specific sg exception types were used in place
  of the more generic one, e.g., sg_io_exception instead of sg_exception
  when the context of the error was an IO error
* in some cases, the error message was made more specific
* minor style fix for exception rethrowing --- using throw; whenever
  a re-throw is made; sometimes optimizing away the exception symbol name
  in the catch handler at all
* more specific catch handlers added in some places -- e.g.,
  an sg_io_exception caught ahead of sg_exception
2005-12-11 13:35:05 +00:00
ehofman
61da54d6ca add swap_test to .cvsignore 2005-12-11 13:26:30 +00:00
ehofman
efea47833d Add a proper return statement for MSVC. 2005-12-11 12:51:51 +00:00
ehofman
24ea08b6d3 Vassilii: help those
using the Doxygen docs.
2005-12-06 18:45:14 +00:00
ehofman
2808b334ed Mathias: silence some valgrind warnings so that you can concentrate better on the real problems. 2005-12-06 18:29:28 +00:00
ehofman
96159cf739 How did this end up there?? 2005-11-27 09:48:51 +00:00
ehofman
577dfa4f54 Initialize glut before using it. 2005-11-27 09:46:58 +00:00
ehofman
66075d620e More WIN32 fixes. 2005-11-23 09:28:02 +00:00
ehofman
60f1d21914 Oops, WIN32 typo fix. 2005-11-22 18:42:16 +00:00
ehofman
b108621a59 * Use SimGear's logging facility isntead of printf's.
* Hopefuly fix a nasty (mostly ATI related) bug.
2005-11-22 18:03:26 +00:00
curt
4a4e703f16 Changes for v0.3.9 (final). 2005-11-17 20:54:06 +00:00
curt
61984730ac Add a small accessor function to expose local timezone offset. 2005-11-17 15:30:07 +00:00
curt
f196d3bab8 Fix a small spelling mistake. 2005-11-15 21:43:34 +00:00
ehofman
7da45cb49e Revert to the original (0.9.8) version, it causes more problems than it solves (did actually solve any?) 2005-11-14 18:25:17 +00:00
ehofman
e994305da6 Put in public domain, Curtis wants it (because net_fdm.hxx depends on it) and I created the other functions. 2005-11-13 09:42:38 +00:00
ehofman
2af37b484e Let the application free the buffer data. 2005-11-12 12:22:23 +00:00
ehofman
faf41f7d96 Prevent a possible memory leak. 2005-11-12 12:17:04 +00:00
ehofman
7629e29397 add a missing character. 2005-11-12 10:55:22 +00:00
ehofman
1cff7fcfea Make a clear separation between loading a sound file into main memroy and sending it to the driver. This prevents data to be loaded into the main memory (or onto the soundcard's memory) when it's not needed. 2005-11-12 10:26:21 +00:00
ehofman
694cf6e958 Expose some internals. 2005-11-11 13:19:58 +00:00
curt
0e12fbb2a0 v0.3.9-pre3 updates. 2005-11-11 00:44:59 +00:00
ehofman
450ad45882 MSVC fix. 2005-11-10 09:57:58 +00:00
ehofman
d674e50591 gcc 4.0 fix. 2005-11-10 09:55:57 +00:00
andy
61f2f4b761 Architectural fix allowing the "tip" popups (FOV, view name, etc...)
to pop themselves down while the simulator is paused.

The problem was with the "real time" queue in the event manager,
causing the third argument of Nasal's settimer() (a flag for "sim
time") to be ignored.  Inverts the default sense of the argument, as
there are lots of uses of settimer() in the current code, almost none
of which want to use real time.

Note this fix introduces a header file incompatibility in SimGear --
be sure to update.
2005-11-09 20:34:14 +00:00
curt
baa2f49b14 v0.9.9-pre2 changes. 2005-11-09 18:47:40 +00:00
curt
8c0bd234d8 v0.9.9-pre2 changes (just the version number!) 2005-11-09 18:41:49 +00:00
curt
c4fd41562f Spelling fixes and other small corrections. 2005-11-05 20:32:45 +00:00
curt
a1d1b4e49f Some pre-release updates. 2005-11-05 19:30:52 +00:00
curt
96fb7a45f7 Add a code comment for future thought. 2005-11-05 18:47:29 +00:00
ehofman
d5eedd2c65 Move Curt's ssgEntityArray experiment over to SimGear. 2005-11-01 09:45:10 +00:00
ehofman
fe4f907099 Remove some unused code. 2005-10-30 15:02:58 +00:00
ehofman
1b45eaf3de Mathias Frhlich:
I guess the most important memory leaks are plugged now.
Just by inspection: An other memory leak in Simgear.
2005-10-27 08:21:58 +00:00
ehofman
cfbc0a1579 MSVC fix. 2005-10-27 08:21:00 +00:00
ehofman
db1b99d8dd Back out the shared mutex code since it only works when the mutex is in shared
memory[1], something we don't support anyhow.
This also fixes a FreeBSD compile problem.

[1] http://hypermail.linklord.com/new-httpd.old/2002/Jan/0557.html
2005-10-26 11:19:58 +00:00
ehofman
65a880e9fa Oops, ALUT 1.0 requires a little more work than expected. 2005-10-25 18:05:23 +00:00
ehofman
37b4005d3e Alex Romosan:
* Use "const string&" rather than "string" in function calls when appropriate.
* Use "const Point3D&" instead of "Pint3D" in function calls when appropriate.
* Improved course calculation in calc_gc_course_dist()
* Safer thread handling code.

Vassilii Khachaturov:

Dont use "const Point3D&" for return types unless you're absolutely sure.

Erik Hofman:

* Use SGD_(2)PI(_[24]) as defined in simgear/constants.h rather than
  calculating it by hand every time.
2005-10-25 13:48:58 +00:00
ehofman
70faa252e7 Prepare for ALUT version 1.0 2005-10-25 13:06:25 +00:00
ehofman
3620be8dbc Cosmetic updates. 2005-10-23 14:04:42 +00:00
ehofman
21c64dd60f Slightly update the seasonal texture support code. 2005-10-23 13:47:46 +00:00
ehofman
fb69d790ce Add support for seasons. 2005-10-23 13:31:13 +00:00
ehofman
debd066edd Melchior FRANZ:
The attached patch makes remove_child() available as removeChild(pos, keep).
That's consistent with getChild. Only renamed remove_child to removeChild and
added a check for validity of the pos argument.

removeChildren() will be used in input.cxx, and a lot in the upcoming
dynamic new_gui dialogs, which are aiming at replacing the hard-coded
dialogs. I'll discuss them on the list once the infrastructure is
in place. (The <hide> gui property was one part of it.)
2005-10-23 11:55:48 +00:00
ehofman
f58d81b1e9 Harald JOHSEN: the sky color now fades to black with altitude 2005-10-23 11:46:41 +00:00
ehofman
8d507f161b Remove some dead code. 2005-10-22 11:07:00 +00:00
ehofman
b015f7c801 Harald JOHNSEN:
I have corrected a few bugs with the owner draw gauge, weather radar code and heat-haze effect.

- shadanim.cxx :
  the heat/haze effect was showing artifacts when using a screen resolution >
  1024 pixels.
2005-10-16 17:23:59 +00:00
ehofman
80abe952ba Ima Sudonim remembered me there is still one problem for gcc Vs. 3.4 or later under Cygwin. This fixes it. 2005-10-15 14:59:02 +00:00
andy
c12162407c Fix memory leak discovered by Mathias Froehlich 2005-10-14 16:42:32 +00:00
ehofman
7f5c3b223a Mathias Frhlich:
This one, removes some virtual qualifiers at a private member class of
SGPropertyNode. These virtual qualifiers are really useless and stop the
compiler from inlineing these functions. I gain a single frame with my
favourite aircraft per second!
2005-10-14 16:27:06 +00:00
ehofman
2f3e4ebf39 Mathias Frhlich:
I have done a valgrind run in flightgear. Just start it up and close it at the
fist change I had about half an hour later.

property-leak.diff:
   A leak in the property system which I could even notice in top.

texture-leak.diff:
    minor one, but fixed is fixed ...
2005-10-14 16:21:57 +00:00
curt
2c14f8587e Use an unsigned vs. signed short to double our element capacity for higher
resolution scenery.
2005-10-12 16:43:26 +00:00
ehofman
42224052e2 Martin Spott:
make GCC on Solaris8 happy.
2005-10-12 08:59:39 +00:00
curt
a8dd5aa0fc Fix a small typo. 2005-10-11 18:56:45 +00:00
ehofman
f3d0a9bc3f David Luff:
The following patch needs to be applied to fix the errors that Georg
Vollnhals was getting whilst attempting to compile SimGear with gcc-3.4.x
2005-10-09 09:37:35 +00:00
ehofman
d629b9e36a Harald JOHNSEN:
- shadanim.cxx, animation.hxx :
  new chrome (sphere mapping) shading ;
  disabled the loading of the fresnel VP until it is fixed ;
2005-10-08 11:52:48 +00:00
ehofman
4d54ba2200 Another Solaris fix. 2005-10-06 14:39:12 +00:00
ehofman
0035ef9194 Martin Spott: Use standardized Sun directive. 2005-10-06 11:06:27 +00:00
ehofman
fcb20296d7 MSYS fix. 2005-10-06 09:45:36 +00:00
ehofman
6bb9080017 MSVC fixes. Frederic: MSVC has no ssize_t type 2005-10-06 08:25:14 +00:00
ehofman
bbde16dc08 Remove a leftover. 2005-10-04 11:49:24 +00:00
ehofman
ac9716f193 Cygwin fixes(?), it's a good idea to do it this way anyhow. 2005-10-01 11:41:59 +00:00
ehofman
8a2bc1c21b Cygwin fixes. 2005-09-29 12:05:22 +00:00
ehofman
942b474ad7 Fix an oops. 2005-09-28 08:03:44 +00:00
ehofman
f3ef9b671f Back out a patch from Sept. 25th. Setting the *factor* to 0.0 by default isn't generally a good idea. 2005-09-28 08:00:33 +00:00
curt
3538631e8e Make some adjustment to low level serial port configuration flags for unix. 2005-09-26 21:01:17 +00:00
ehofman
1577ab04e1 Vivian Meazza:
Correct the bug in the translate animation where the offset was part of the
multiplication. It now behaves like all other animations:
out = (prop * factor) + offset

I feel strongly that the existing is wrong and must be corrected - it is non-op
if the offset is zero as I have found to my cost! It is just a typo I expect.

The diff also provides non-op default values for the scale animation.

I've also included Harald's latest eye-candy animation which allows us to
have a very smart heat-haze for exhausts. They have been tested by me and
others on Linux and Cygwin. You might like to upload these - I have a
revised Hunter ready to go as soon as they are uploaded.
2005-09-25 07:44:50 +00:00
curt
7f2dfaa5b4 Add eof() support to SGIOChannel/SGFile. 2005-09-24 12:28:14 +00:00
curt
fd126746f7 Add an eof() method to SGFile. 2005-09-23 20:13:43 +00:00
ehofman
63f7e9feb0 AMD64 and sgi fixes. 2005-09-23 12:30:25 +00:00
ehofman
5eb380e103 Platform compatibility fix. 2005-09-22 13:43:09 +00:00
ehofman
832e821919 Add some linefeeds. 2005-09-22 09:15:10 +00:00
ehofman
197e3f144d Create our own stdint.h(xx) implementation and use it where needed. 2005-09-22 09:11:27 +00:00
ehofman
056b5b41e2 Prepare for Openal 1.1 and a separate alut library 2005-09-21 09:22:51 +00:00
andy
15d40fd64a Oops, Frederic caught an inline declaration that had snuck into the code. 2005-09-20 21:38:08 +00:00
andy
979d3da69c Sneak a Nasal update in before the next release. This version
*appears* to work correctly on all systems to which I have access
(i386 linux/win32, x86_64 linux, powerpc OS X, Sparc Solaris 10), but
not all systems are capable of running fgfs.  Beyond that, multiple
threading bugs were fixed, and the naCall() API changed slightly to
support named function arguments.

NOTE: this introduces a change in the external API, and therefore this
change *must* be compiled against current FlightGear code.
2005-09-20 21:09:34 +00:00
ehofman
72984cc4a8 Don't refference simgear_config.h because this header gets installed :-( 2005-09-18 21:05:04 +00:00
ehofman
0a7a815124 int64_t is in stdint.h by default. 2005-09-18 09:21:54 +00:00
ehofman
1ce68a49c6 MSVC fix. 2005-09-18 09:19:07 +00:00
ehofman
b1b6abf285 Use inttypes.h specified types. This is the standard and fixes some 64-bit problems. 2005-09-15 17:06:31 +00:00
ehofman
9dfd6970f1 Better XML error catching, proposed by Richard Harrison. 2005-09-15 16:54:27 +00:00
ehofman
3583c13339 Vivian Meazza:
After much trial and tribulation, Harald came up with a fix for the bug
which has been plaguing Cygwin for a couple of weeks now.

It's only a couple of lines. I've tested it exhaustively, and it seems to
cure the problem of Cygwin failing to start.
2005-09-05 13:30:38 +00:00
ehofman
00ab198c9f Mathias Frhlich:
There was a patch from Manuel Masing a few months ago which cleaned up
SGLocation's way depending on input values. That means that with that patch
SGLocation does no longer have calls with unneeded input arguments.
I took his patch and integrated that into flightgear and made maximum use of
that changes.
2005-09-05 13:23:55 +00:00
ehofman
669d9a89ca Mathias Frhlich:
just a few split out patches from my zoo of local work ...

The patch to simgear-glxproc.diff changes dlopen to not open a specific library.
If it is used with a NULL argument, we just get a handle to the current running
binary including all loaded libraries. This has the advantage that we do not
rely on the name of libGL on the specific platform.
Also a user can link with his own different named libGL or with a static libGL.a

Then the render texture again ...

glxQueryVersion turns out to return the  minimum of the client libraries glx
version and the servers glx version. *All* Xorg servers return 1.2 here.
So we never get the glxPBuffer functions  which are the only ones working with
ati's drivers ...
Reverted back to checking the required functions and just use them if they are
there. Still prefering the glx standard variants since they work on ati's
drivers ...
2005-09-05 09:02:56 +00:00
ehofman
9c54603726 Add some more defines as specified in FlightGear/src/Network/net_fdm_mini.hxx 2005-09-05 08:22:30 +00:00
ehofman
dc09a50472 Mac OS X fixes from Markus Morawitz
stdint.h replacement defines for Windows and Sun from Frederic et all.
2005-09-05 08:17:37 +00:00
ehofman
68eb7031e2 Harald JOHNSEN:
- model.cxx :
  load the 2.5D panels before the animations so that the panels can be used in
  animations his solve the problem of 2.5D panels visible outside of the
  aircraft (one can add a null animation to put the panel at the top of the
  aircraft graph so it is drawn first) and this adds the possibility to have
  billboarded/popup panels.

- newcloud.cxx :
  removed 'this' pointer cast for amd64 compiler.
2005-08-22 17:44:35 +00:00
ehofman
19623cac21 Cygwin fix. 2005-08-10 08:04:39 +00:00
ehofman
4ca25ca533 Harald JOHNSEN:
added a cull test on fields
2005-07-31 08:56:27 +00:00
ehofman
178c49a430 Fix a problem with systems that don't define GLXPbufferSGIX or GLXFBConfigSGIX 2005-07-31 08:46:37 +00:00
ehofman
32e2cd9f06 Harald JOHNSEN:
This is the low level shader class for Simgear.
It's the code from Roman Grigoriev with a few adaptations.
2005-07-31 07:59:08 +00:00
ehofman
7aa514d9ba MacOS-X fixes. 2005-07-27 08:02:11 +00:00
andy
7c2575d723 Josh discovered a bug parsing negative numbers with leading zeros
("-0.3") which also affected ones of the form "-.3".  This got
introduced a few months back, I'm not sure how it went undetected for
so long...
2005-07-21 23:03:26 +00:00
ehofman
f93ea20d5e Harald JOHSEN:
Changes
=======

- shadowvolume.cxx, renderer.cxx :
  - reduced the polygon offset a bit to eliminate some artifact ;
  - changed again the cleanup code for objects inside a tile because it could crash on rare occasion ;
  - the culling of shadow casters has been rewritten to traverse the scene graph, it should be
    a bit faster when there is a lot of objects ;
  - the range selector was not correctly handled, sometimes the wrong LOD was casting shadows.
  - added the option to display aircraft's transparent objects after the shadows, this will
    reduce the problem of shadows being hidden by the transparent object (propeller disk,
    rotor, etc). A side effect is that aircraft's transparent objects won't receive shadows
    anymore. This is usually a good thing except when the aircraft use a 'transparent'
    texture where it should not. A transparent texture in the plib context is a texture
    with an alpha channel or a material with alpha <= 0.99.

- model.cxx, animation.cxx, shadowvolume.cxx :
  - added an optional <condition> under the <noshadow> animation

- tower.cxx
  - correct a rare bug where all occurences of the aircraft are not deleted from the
  departure list causing a crash in FGTower::CheckDepartureList function.
2005-07-18 16:57:20 +00:00
ehofman
73cb6ff00d Adjustments to better support GLX1.3 and ATI drivers. 2005-07-13 12:00:30 +00:00
ehofman
72267fa60b Harald JOHNSEN:
Melchior has found another bug, I tried to skip some computation for a few
frames but that introduced some bad rendering bug with the aircraft moving
parts.
I corrected that and reduced a bit the cpu usage for ground objects.
2005-07-06 08:44:25 +00:00
ehofman
6b6a27e849 Another update, the previous one could crash if you leave the surrounding tiles (try Set aircraft in air and choose a distant airport). 2005-07-05 18:53:16 +00:00
ehofman
daea10121c Somehow gcc allows function overriding but MIPSpro doesn't. Fix this. 2005-07-05 18:00:58 +00:00
ehofman
999a1e514b Harald JOHNSEN:
- shadow volume vertex are now shared, using DrawElements instead of repeated
  calls to glVertex, this can improve performance on some systems.
- added a rendering path that use the alpha channel instead of the stencill
  buffer.
- releasing memory when tiles objects are destroyed
- objects sub parts will not cast shadows if their name begins with "noshadow"
  or if they are in a <noshadow> animation

- bbcache.cxx :
   don't ask for a 32 bits context when the primary context is only 16 bits

- RenderTexture.cpp :
   corrected a crash when asking for a second rendering context
   on win32 and extensions not being supported

- model.cxx, animation.cxx :
   added a <noshadow> animation, added an animation type needed by the shadow
   code.
2005-07-05 17:08:27 +00:00
ehofman
be30960366 Make sure it works with the lates version of OpenAL. 2005-07-04 09:20:11 +00:00
ehofman
38e5084018 Restore the old behavior. Additions are likely. 2005-06-30 19:10:18 +00:00
ehofman
fdd9bb1af6 Melchior FRANZ:
- check for isTied() and refcount has to be made *before* we go into
  recursion, so as to pertain subtrees of refcounted nodes, even if there
  are no refcounted/tied nodes *in* this tree
- return value inverted, because it's more logical to say
  removeChildren() == true --> everything removed;  false --> failed
- further cleanup
2005-06-29 09:41:07 +00:00
ehofman
81546820ab Frederic: Also copy the attributes over to the new tree. 2005-06-28 11:19:41 +00:00
ehofman
84e87f0e8a Due to a misunderstanding of what removeChild() actually does, some used it to detach a subtree from the main tree. The previous patch broke that behaviour so a new function call detchChild() is now added. 2005-06-28 11:19:09 +00:00
ehofman
901592a88e fix return value 2005-06-27 17:48:13 +00:00
ehofman
24f908d9be Melchior FRANZ:
- introduce removeChildren() and removeChildren(name)  to remove all children
  or all with a given name
- let removeChild() and removeChildren() also remove child trees, and let them
  return a "dirty" boolean that indicates if one or more subnodes had to be
  kept because of refcounting (removeChild returned a SGPropertyNode_ptr before)
- make alias/unalias increase/decrease the refcounter
- don't remove refcounted or tied nodes

This patch makes the SGPropertyNode_ptr actually useful. Until today, they did
proper refcounting (except for aliases), but no other part did check this counter.

But SGPropertyNode_ptr aren't only useful for the first time, they are now
highly recommended for every place that relies on a node address, and wants
to "lock" it (so that removeChild(ren) will never try to remove them). This
is not guaranteed for SGPropertyNode* (and never was). Of course, that's not
an imminent problem, as only four places currently use removeChild(ren) and
these are careful to only remove their own data.
2005-06-27 13:49:28 +00:00
ehofman
f62ff0ad66 Harald JOHNSEN:
Changes
=======

New volumetric shadows for FlightGear.

There is now two new checkboxes in the rendering dialog to enable/disable shadows
for the user aircraft and for static scenery objects (ie those defined in the .stg files).
AI and random objects are not handled for the moment.


known bugs
==========
- ghost objects
2005-06-26 17:16:45 +00:00
ehofman
8e0ecbeb8f Remove the 'old' 3D clouds code. 2005-06-25 11:22:06 +00:00
ehofman
095367f760 Melchior: Make the (lack of) axis or center location definitions more consistent. 2005-06-12 11:23:28 +00:00
ehofman
5d34eb12e0 Melchior FRANZ:
This is the more elegant solution that Andy had proposed in a response
to my RFC on Nasal initialization code in joystick configuration files.
As Nasal is initialized last (for good reason), subsystem can currently
not use it for initializing. postinit() is called on all subsystems
after all have been initialized.
2005-06-11 08:39:26 +00:00
ehofman
d4e760efe1 fix a coredump situation, discovered by Melchior. 2005-06-08 14:07:53 +00:00
ehofman
75ab8e697b Harald JOHSEN:
Changes
=======

- changed the rotation of sprites, they don't rotate strangely when we
  approach them now
- corrected the strange movement of clouds when banking quickly
- it no more rain above cloud layers
- add a radar echo container used by the weather radar instrument
2005-05-30 09:04:57 +00:00
andy
f4b05d46ed Fix two crash conditions Ampere found. These are just temporary
patches; my private version has rewritten both of these functions
(ironically fixing these bugs in the process) to handle negative
offsets meaning "from the end".
2005-05-29 16:13:48 +00:00
ehofman
04c5f2c36a Melchior FRANZ:
Turn the material animation's <transparency> property into a group, with
members <alpha-prop>/<alpha>, <offset-prop>/<offset>, <factor-prop>/<factor>,
<min>, and <max>. The "material" animation can now fully replace "blend" and
"alpha-test" (--> <threshold>) animations, with enhanced possibilities:
The "material" animation can be used for one or more explicit objects (like
"blend"), but also for all objects that share one material (<global>), which
avoids problems with objects being forced together into one tree. Also, an
object doesn't have to be semitransparent or textured with a semitransparent
texture to make blending work. Unlike the "blend" animation, the "material"
animation also makes fully opaque and untextured objects transparent. (This
fixes the bo105's formerly semi-transparent rotor.)

Erik:
The blend animation and alpha-test animation are depreciated as of now.
2005-05-24 08:13:09 +00:00
ehofman
db50f95482 Melchior FRANZ:
Currently, the material animation sets glColorMaterial(GL_AMBIENT_AND_DIFFUSE)
for all material properties. This breaks emission-only (e.g. cockpit lighting
for the p51d) or specular-only animation. ==> set glColorMaterial only where
it is really required.
2005-05-23 16:35:00 +00:00
ehofman
0e52a08a47 MSVC fix. 2005-05-22 09:18:56 +00:00
ehofman
7b5d49ef60 Harald JOHSNEN:
Changes
=======

- correct the transparency probleme when old 3d clouds were enabled
 (rendering context with an alpha channel)
- changed rain cone orientation, it can now be viewed from helicopter or chase
  view (still not tower view)
- clouds are a bit more yellow/red at dawn/dusk
- weather data is now correctly propagated to the interpolator, this correct
  visibility, wind, etc
- the 'metar' weather scenario now immedialty reuse the real metar data
- real metar no more overwrite custom weather scenario
2005-05-22 08:09:08 +00:00
ehofman
430ba60b33 MSVC fix. 2005-05-22 07:35:39 +00:00
ehofman
3af1f3bc63 Make removeChild() work (again?) 2005-05-17 09:56:08 +00:00
ehofman
bdcb94af81 gcc fix. 2005-05-15 09:34:04 +00:00
ehofman
2ea9e723c2 Harald JOHNSEN:
This is another update for the cloud code, a lot of lines but this time I have started to add the doxygen doc.

Misc
====

- corrected a bug when RTT is not available, the current rendering context was
  altered
- if RTT is not available then 3d clouds are not drawn at all
- impostors lighting is now recomputed when the sun changes position
- distant objects are no more seen in front of clouds
- blending of distant clouds is a bit better now
- litle optimization of code (uses a less cpu time)
- use layer wind speed and direction (no more hardcoded wind)
- fov is no more hardcoded

Changes
=======

- clouds (cu only) are dissipating/reforming (experimental)
- compute a turbulence factor that depends on surrounding clouds and type of
  clouds (experimental)
- clouds shapes are defined in cloudlayers.xml
- type of clouds present in a layer is also defined in cloudlayers.xml
- cloud layers are generated from metar and other misc. data (in progress)
- added a rain effect around the viewer (enabled in the rendering dialog and
  when the metar property says so)
- added a lightning effect (enabled in the rendering dialog) : cb clouds spawn
  new lightnings
- added a dialog to select from different weather source : metar/property,
  a 'fair weather' environment and a 'thunderstorm' environment.
2005-05-15 09:27:00 +00:00
ehofman
e19091d809 Melchior: Only change types when explicitly requested. 2005-05-09 16:18:41 +00:00
ehofman
64ab59c0e0 Melchior FRANZ:
Vivian pointed out that a redefined Ctrl-U key binding didn't work
correctly. I found out that this is, because the definition in
$FG_ROOT/keyboard.xml sets <value type="bool"> for binding[1],
and ... [better sit down first!] ... and assigning <value type="double">
in a *-set.xml file doesn't *really* set "double" as new type!

Instead, the boolean is kept, and a double sqeezed into it. In other
words: once tainted as bool, you can throw all doubles in the universe
on a property node, and all it will accept is 0 and 1. Without warning!

BTW: I changed the patch: I was overly cautious: clear_value() does already
care for ties and for setting NONE, so we just need to make that public as
clearValue(), and use that. Makes the patch a bit more verbose, though.  :-/
2005-05-09 14:31:41 +00:00
ehofman
4707b363aa Solaris fix. 2005-05-07 08:46:04 +00:00
andy
1a72245c15 Properly release the mod lock when returning from a runtime error.
Ampere discovered that the interpreter would deadlock at runtime if it
hit such a condition during initialization.
2005-05-04 20:17:28 +00:00
ehofman
dea7b9050d Phil Cazzola:
This is a minor bug fix for sgBucketDiff().
If you crossed the bucket size boundary, the answer for dx could be wrong.

E.g.
 going from   0:0, 21:7  to 0:7, 21:7   would give you dx = 7 (correct)
 but going from 0:0, 21:7 to 0:3, 22:0 would give you dx = 6 (instead of 7)

Previously it differenced the center longitudes of the buckets.  When you
cross a boundary, the center point of the larger bucket now lies on the edge of the smaller bucket.

The result was a dx with an integer + 1/2 bucket, which rint() was rounding to the nearest even int.

This function only seems to be used in TerraGear.
2005-05-01 08:50:39 +00:00
ehofman
3bd810fedc Make use of the repeatable sg_random() function so display systems can synchronize 3d clouds too. 2005-04-30 10:00:16 +00:00
ehofman
f9cbf8361d Add a seed function that gives the same random seed within a ten minute period of time. This should be useful for synchronizing display systems. 2005-04-30 09:59:12 +00:00
ehofman
eccd4d0325 Mathias:
I have done a patch to eliminate the jitter of 3D-objects near the viewpoint
(for example 3D cockpit objects).
The problem is the roundoff accuracy of the float values used in the
scenegraph together with the transforms of the eyepoint relative to the
scenery center.

The solution will be to move the scenery center near the view point.
This way floats relative accuracy is enough to show a stable picture.

To get that right I have introduced a transform node for the scenegraph which
is responsible for that shift and uses double values as long as possible.
The scenery subsystem now has a list of all those transforms required to place
objects in the world and will tell all those transforms that the scenery
center has changed when the set_scenery_center() of the scenery subsystem is
called.
The problem was not solvable by SGModelPlacement and SGLocation, since not all
objects, especially the scenery, are placed using these classes.

The first approach was to have the scenery center exactly at the eyepoint.
This works well for the cockpit.
But then the ground jitters a bit below the aircraft. With our default views
you can't see that, but that F-18 has a camera view below the left engine
intake with the nose gear and the ground in its field of view, here I could
see that.
Having the scenery center constant will still have this roundoff problems, but
like it is now too, the roundoff error here is exactly the same in each
frame, so you will not notice any jitter.

The real solution is now to keep the scenery center constant as long as it is
in a ball of 30m radius around the view point. If the scenery center is
outside this ball, just put it at the view point.

As a sideeffect of now beeing able to switch the scenery center in the whole
scenegraph with one function call, I was able to remove a one half of a
problem when switching views, where the scenery center was far off for one or
two frames past switching from one view to the next. Also included is a fix
to the other half of this problem, where the view position was not yet copied
into a view when it is switched (at least under glut). This was responsible
for the 'Error: ...' messages of the cloud subsystem when views were
switched.
2005-04-29 14:37:27 +00:00
ehofman
e0decf1233 Mathias:
have done a patch to eliminate the jitter of 3D-objects near the viewpoint
(for example 3D cockpit objects).
The problem is the roundoff accuracy of the float values used in the
scenegraph together with the transforms of the eyepoint relative to the
scenery center.

The solution will be to move the scenery center near the view point.
This way floats relative accuracy is enough to show a stable picture.

To get that right I have introduced a transform node for the scenegraph which
is responsible for that shift and uses double values as long as possible.
The scenery subsystem now has a list of all those transforms required to place
objects in the world and will tell all those transforms that the scenery
center has changed when the set_scenery_center() of the scenery subsystem is
called.
The problem was not solvable by SGModelPlacement and SGLocation, since not all
objects, especially the scenery, are placed using these classes.

The first approach was to have the scenery center exactly at the eyepoint.
This works well for the cockpit.
But then the ground jitters a bit below the aircraft. With our default views
you can't see that, but that F-18 has a camera view below the left engine
intake with the nose gear and the ground in its field of view, here I could
see that.
Having the scenery center constant will still have this roundoff problems, but
like it is now too, the roundoff error here is exactly the same in each
frame, so you will not notice any jitter.

The real solution is now to keep the scenery center constant as long as it is
in a ball of 30m radius around the view point. If the scenery center is
outside this ball, just put it at the view point.

As a sideeffect of now beeing able to switch the scenery center in the whole
scenegraph with one function call, I was able to remove a one half of a
problem when switching views, where the scenery center was far off for one or
two frames past switching from one view to the next. Also included is a fix
to the other half of this problem, where the view position was not yet copied
into a view when it is switched (at least under glut). This was responsible
for the 'Error: ...' messages of the cloud subsystem when views were
switched.
2005-04-29 14:36:50 +00:00
ehofman
100927f16c Harald Johnsen: Fix a 'terrible' bug with culling of the clouds. 2005-04-26 20:14:37 +00:00
ehofman
bb670f6658 IRIX fixes. 2005-04-26 09:08:58 +00:00
ehofman
d37992aaf9 Harald Johnson:
Changes
=======

- corrected some strange behavior when playing with the render dialog options
- the density slider is now working : if you are fps limited and still want to see clouds in
  the distance you should play with that
- added the choice for texture resolution, its more comprehensible now (before it was
  wrongly allways choosing 64x64 textures)
- changed the initial texture size : you now have 64 texture of 64x64, this uses 1Mo of
  texture memory (before it was 20 texture of  256x256, that took more memory and there was
  not enought impostors)
- sun vector is now right so the lighting is a bit better
- removed useless sort and light computations for impostors, this should save a lot of cpu
- blending of distant cloud is more accurate now
- clouds are now positioned correctly, they don't try to escape you anymore
- no more red/white boxes around cloud
- textures are now filtered (no more big pixels)

known bugs
==========

- distant objects are seen in front of clouds
2005-04-26 08:30:38 +00:00
ehofman
9048ee533d Don't refference GLUT but GLU instead. 2005-04-24 13:55:20 +00:00
ehofman
2b1e5927ca This one time I did a commit using Linux. <sigh> 2005-04-24 11:45:34 +00:00
ehofman
b5e03030d1 Harald Johnson:
- new and updated sources for the new volumetric clouds
- 2 new textures for the clouds
- an update to the render dialog to enable/disable and change a few parameters
  for the new clouds
2005-04-24 11:16:50 +00:00
andy
65056bfa72 Support for a "forindex(idx; list) {...}" construct analagous to
foreach, except that the variable gets the index instead of the list
element.  Should be useful, and took almost no code to implement.

Support for operator/assignment syntax: +=, -=, *=, /= and ~= now do
what you think they should.

Library support for a bind() function (see the docs Andy is still
writing), allowing runtime modifications to function lexical
environments.
2005-04-22 21:54:16 +00:00
andy
c50bb90374 Fix clamping of the minimum hash size, because the Melchior discovered
that the column math goes wacky when lgalloced is allowed to be
  zero.
Augment the find() function to take a starting index.
Fix strc() to use a default index of zero.
Fix parser precedence of TOK_MINUS, so that "a-b-1" means (a-b)-1 and
  not a-(b-1).
2005-04-19 14:19:46 +00:00
ehofman
ec4fc265e0 Non gcc fixes. 2005-04-19 12:30:12 +00:00
andy
8ea41af5c4 Fix crash in the code generator when compiling a (now illegal, because
"var" is a reserved word) expresssion of the vorm "var=<expr>".
2005-04-18 20:43:29 +00:00
andy
966331dac7 Upgrade to nasal 1.0 test candidate 2005-04-18 19:48:47 +00:00
andy
cf056bace7 Fix boolean semantics so that the empty string evaluates to false, and
numeric strings are false if their numeric values are false.
2005-03-30 18:45:01 +00:00
ehofman
405a455906 Melchior FRANZ:
Re-organisation: <diffuse>, <ambient>, <emission>, <specular> are
now groups with members <red>, <green>, <blue>, <factor>, <offset>,
and their <*-prop> forms. Additionally, there's an option <property-base>
that can be used to set a path that is prepended to all <*-prop> paths.
It defaults to an empty string. Rationale: see model-howto.html.
2005-03-28 09:13:45 +00:00
andy
3a8b431a5b Don't parse a single "e" or "E" as a numerical zero. You need a
numerical prefix to use the 1.0e12 notation, "e" alone is not enough.
2005-03-22 20:28:47 +00:00
ehofman
3ce0c17237 Melchior FRANZ:
here is the promised material animation. It looks a bit longish, but that
wasn't avoidable -- there are simply too many parameters to consider. I tried
hard, though, to make the animation fast by only doing the necessary stuff.
It doesn't affect the frame rate here with my test model. The animation is
heavily based on Jim's "material-emission" animation.

* implementation of the "material" animation (this required to make the
  texture path available) + documentation update ($FG_ROOT/Docs/)
* fix some more return values (texture animations, and select) for the
  shadow problem (and some in anticipation of other problems  :-)
* fix compiler warning
2005-03-22 13:12:51 +00:00
ehofman
61a2e0f104 Melchior FRANZ:
the cause for the disappearing shadows is, that SimGear doesn't tell plib
to call the pre-traversal-callback function on culled objects. These calls,
however, are necessary to execute the transform animation that does, for
example, translate a shadow back into the frustum! Curretnly, the callback
is only executed, and the shadow only magically pops up again, when the object
enters the frustum because the view has changed significantly.

The plib documentation does only talk about TRUE and FALSE for possible
return values from the pre-traversal-callback. But src/ssgEntity.cxx reads
like this:

   int ssgEntity::preTravTests ( int *test_needed, int which )
   ...
       int result = (*preTravCB)(this,which) ;

       if ( result == 0 ) return FALSE ;
       if ( result == 2 ) *test_needed = 0 ;
   ...

So the return value needs to be 2 to bypass the cull test for pretraversal,
and get the pretraversal in any case. I only changed the return values in
four animations: scale, rotate, translate, and range, because these are
the most likely to move an object out of the frustum. It's not necessary
for blend/alpha/texture manipulation etc. Of course, this is a bit more work
for plib, but the performance will probably not be affected, because:

* these four animations are mainly used for the aircraft model (the spin
  and billboard (trees!) animations are not affected)

* the number of extra nodes to process is quite low

* a part of the time spent for the extra nodes to be processed, was before
  used for workarounds that are now not necessary any more

I didn't observe a frame rate drop, at least.
2005-03-19 10:19:30 +00:00
andy
7c44251216 Oops, fixed the wrong test 2005-03-12 15:51:37 +00:00
andy
26e70664d6 Off by one error when printing exact poweres of ten 2005-03-12 15:49:53 +00:00
andy
8ac27cc798 Fix an infinite loop (due to an overflow condition) when printing some
very large numbers.
2005-03-11 21:49:31 +00:00
andy
d314164fed Fix the fixes. Note that "." had the same problem as "+" and "-", and
that we can still match non-identical constants if they are both
strings with the same numerical value.
2005-03-11 20:39:07 +00:00
andy
d2cbed151b Don't parse the strings "+" and "-" as numerical zeros. Also fix the
code generation of constant objects to use real identity and not Nasal
equality, so (e.g.) the constants 1 (number) and "1.0" (string) do not
get turned into the same object in the generated code.
2005-03-11 19:07:06 +00:00
ehofman
fc06ae58b2 Ima Sudonim:
I have (hopefully) generated a patch for a previously mentioned simgear  problem for a hang condition in mac os x.  Mentioned in  <http://baron.flightgear.org/pipermail/flightgear-devel/2005-February/ 035004.html>
2005-03-10 08:58:48 +00:00
ehofman
a8768c78a2 automake 1.8+ fixes 2005-02-15 18:13:15 +00:00
ehofman
ee8763f60d More MacOS X fixes 2005-02-12 12:44:46 +00:00
ehofman
db633330fe Fixes from Norman for users running Cugwin with the XServer package installed. 2005-02-11 15:19:04 +00:00
ehofman
c1ffafd663 MacOS X fix(?) 2005-02-11 15:07:22 +00:00
ehofman
72f35dc914 Comment out GLX code for MacOS and (hopefully) add some MacOS AGL compattible code. More needs to be done though. 2005-02-01 10:35:43 +00:00
ehofman
e5f82f53b9 MacOS doesn't have glx.h 2005-01-31 18:29:38 +00:00
ehofman
e39e6893e0 Jim Wilson:
Fix a couple of loose ends and missed edits on the earlier patch.  For the
most part no change in functionality.
2005-01-31 18:21:12 +00:00
ehofman
9ab77d65f4 Cygwin fixes 2005-01-31 18:07:40 +00:00
ehofman
8ed96cad1d Windows fixes. 2005-01-29 11:44:01 +00:00
ehofman
7795eb8239 Jim Wilson:
This patch adds support to the model animation system for modifying emissive
states on the fly so that it is possible to make "lights" appear to dimm.

This is an example of a configuration entry which should explain how it is used:


 <animation>
  <type>material-emission</type>
  <object-name>Face</object-name>
  <property>/controls/lighting/instruments-norm</property>
  <emiss-red>1.0</emiss-red>
  <emiss-green>0.8</emiss-green>
  <emiss-blue>0.5</emiss-blue>
 </animation>

Note the color entries are the emissive colors when the "property" value is
1.0.  They are useful for tinting the light.   The "property" itself must be
float or double and is clamped to values between 0 ~ 1.0 inclusively.   The
"property" value is multiplied against the colors to get the actual material
properties.  Thus property value 0.0 = darkest, and 1.0 = brightest.
2005-01-29 10:31:25 +00:00
ehofman
207c7ab1e0 MSVC fix. 2005-01-28 15:23:26 +00:00
ehofman
27af79684f Frederic Bouvier:
code.c is C code ( according to the file extension ), so variables should be declared at the beginning of the function.
2005-01-28 15:21:29 +00:00
ehofman
6b61a8eed1 use a proper delete[] 2005-01-28 15:15:23 +00:00
ehofman
181e6eac75 MSVC fixes 2005-01-28 09:32:57 +00:00
ehofman
fd1979857c Fix an NVIDIA problem. 2005-01-27 17:49:22 +00:00
ehofman
448bc3facd Add a RenderTexture test program. 2005-01-27 10:56:22 +00:00
ehofman
97cabadb88 Melchior FRANZ:
If alcOpenDevice( NULL ) is NULL, then context is never assigned a
value, and it's pointless to ask for it in the next "if". But as the
ALCcontext that context points to doesn't seem to be fully defined
(OpenAL bug), valgrind still complains ...


Erik Hofman:
Extend this some further and define context=0 otherwise and check for
context != 0 before using it.
2005-01-27 10:47:09 +00:00
ehofman
8e284a70b7 Melchior FRANZ:
Trying to find the bug in tower.cxx (that crashes fgfs quite frequently
for me!), I'm playing with valgrind again. Until I'm in the ATC subsystem
there will be some other bugs and nitpicking along the way.

valgrind doesn't like that imgage->tmp is once allocated with new and
once with new[], sometimes with malloc() (via map), and sometimes freed
with delete (not delete[]!) and sometimes with free(). With simple types
such as GLubyte this shouldn't really make a difference, but anyway.

Also, I promised that I'd send patches for "if (foo) delete foo;" as
I'm making other changes to concerned files. texture.cxx is one with a
few occurrences thereof. (Remember: C++ explicitly allows to delete
null-pointers, so this check is redundant, and hence not tolerated in
other projects, such as KDE. Doesn't have to impress us, of course.  :-)

Also, fixes 4 signed/unsigned warnings (gcc 3.3.4)
2005-01-27 10:42:31 +00:00
ehofman
73f9febe06 Add Mark Haris' RenderTexture class based on SimGear's extesion support files. 2005-01-27 10:39:15 +00:00
andy
6a6cc22e9c Move error handling in setupFuncall above the stack frame creation.
The error properly belongs to the enclosing scope, not the called
(non-)function.  This bug was fixed a few months back in my private
tree, but Melchior just discovered that the new Concorde scripts
tickle it.  I really need to re-synchronize SimGear with my own Nasal
tree...
2005-01-25 22:37:22 +00:00
ehofman
b293639b76 Add a bunch of extensions in preparation of render-to-texture support. 2005-01-25 18:33:59 +00:00
curt
f06036be09 Frederic Bouvier:
The Beaver triggered a problem ( uninitialized variable ). Here is the updated
code.
2005-01-24 21:46:12 +00:00
curt
867571af78 Frederic Bouvier:
this is the animation code that do randomisation of the spin animation. The XML tags are modified to support the syntax below :

  <use-personality type="bool">true</use-personality>
  <factor>
    <random>
      <min>1.8</min>
      <max>2.2</max>
    </random>
  </factor>
  <starting-pos-deg>
    <random>
      <min>0</min>
      <max>360</max>
    </random>
  </starting-pos-deg>

instead of usual :

  <factor>1.42</factor>
  <starting-deg-pos>42.0</starting-deg-pos>
2005-01-24 19:49:35 +00:00
ehofman
f6314d3124 Erik Hofman
1. Remove the dependency on alut  which (on certein platforms) might pose
   some restrictuons on commercial use.

2. Create a sound source just prior to playing the sound and destroy it
   again when the sound has stopped. This should greatly reduce the
   error reports from Windows users.
2005-01-24 15:51:37 +00:00
ehofman
1e87dd7903 Melchior FRANZ:
The following patches to SimGear & FlightGear ...

- create an FGMetar abstraction layer, whose purpose is:
  * provide defaults for unset values
  * interpolate/randomize data (GREATER_THAN)
  * derive additional values (time, age, snow cover)
  * consider minimum identifier (CAVOK, mil. color codes)
- add rain/hail/snow/snowcover support on the METAR side
- add max age of METAR data handling (currently set to
- add support for an external METAR cache proxy server
- add CAVOK handling
- set missing year/month in regular METAR messages
- fix a small bug in metar.cxx (wrong return value)
2005-01-20 09:28:04 +00:00
curt
3b6af2f0c2 Ready for 0.3.8 release. 2005-01-18 14:34:13 +00:00
curt
5bdff41641 Require plib-1.8.4 2005-01-17 21:48:05 +00:00
ehofman
67e9d105cb Use the double precission pow() function to get Solaris compiling. 2005-01-16 08:52:22 +00:00
ehofman
f1fc99f16f Solaris fix 2005-01-15 14:24:28 +00:00
ehofman
f89e359d53 Solaris fix. 2005-01-15 14:22:56 +00:00
ehofman
77ec170a50 MingW/MSYS fix 2005-01-15 14:18:30 +00:00
ehofman
34320f5f20 Eliminate some compiler warnings about converting float to int. 2005-01-15 11:57:34 +00:00
ehofman
a26271e46e Add a make_bumpmap and a make_maxcolorwindow function, modify the make_normalmap function to maximize the color window before proceding. 2005-01-15 10:48:40 +00:00
ehofman
e2e7466250 Add support for contrast. 2005-01-14 15:52:56 +00:00
ehofman
1e24cc4643 little endian fixes. 2005-01-14 14:27:57 +00:00
ehofman
dfc23c3528 Add a make_grayscale function and call it from make_normalmap automatically, removing the need to do it make_grayscale prior to calling make_normalmap. 2005-01-14 13:36:38 +00:00
ehofman
cd11a5dc27 Fix a mistake. 2005-01-14 13:12:44 +00:00
ehofman
899734296b Add a function to calculate the normalmap from a regular texture. 2005-01-14 13:08:57 +00:00
ehofman
7a3a81c152 RGBA textures can be made monochrome also 2005-01-14 10:12:00 +00:00
ehofman
e62a4a05ac Fix a few bugs and add a make_monochrome() function 2005-01-14 10:09:21 +00:00
ehofman
463ca207ce Some small updates to the saving code. 2005-01-13 18:35:56 +00:00
ehofman
da6e1b31ea Fix a crash situation. 2005-01-13 18:05:46 +00:00
ehofman
8c783b1680 Update the code a bit more, add a function to retreive the last error string and add a function to write SGI texture fils. 2005-01-13 14:47:31 +00:00
curt
efce88ff12 - Fix a couple oops's in cloud.cxx
- In sky.cxx blend low density cloud layers (few/scattered) into nothing (but
  don't touch visibility distance) as we approach them so we can fly through
  clean.
- For high density cloud layers (broken/overcast) we do not fade the layers
  out, but we fade visibility to nearly nothing as we approach the layer.
2005-01-11 16:02:39 +00:00
curt
01608b7e18 Add a method to SGCloudLayer to set overall cloud alpha. This gives us the
capability to slowly fade a cloud layer in or out.

We use this effect in combination with lowering visibility as we approach
a cloud layer to hide the fact that it is simply a 2d textured polygon being
drawn across the sky.
2005-01-11 15:21:58 +00:00
david
a5f0e0395a Do not reduce visibility when passing through a 'few' or 'scattered'
cloud layer (i.e. <50% coverage).  This is a quick hack rather than a
proper fix, but it will at least make it possible to get above a
scattered layer VFR.
2005-01-10 23:34:52 +00:00
ehofman
0b723174fd Add support for binding a thread to a specific CPU (IRIX only at this time). 2005-01-09 10:24:54 +00:00
ehofman
5d248bf0df Frederic Bouvier:
It comes to me that the bulk of all problem reports, especially from Windows users, have it's cause in an obsolete sound driver. These messages should direct them to the right solution before complaining.
2005-01-08 11:47:19 +00:00
curt
c039ccdeb0 Updates for 0.3.8-pre2 release. 2005-01-03 19:05:32 +00:00
ehofman
d88fb32a73 Melchior FRANZ:
My recent fix for the load/save fgfs.sav feature was a bit too ambitious.
While aliases lead to abortion before, I tried to copy them properly,
although this wasn't a requirement. Unfortunately, this seems to have
worked for absolute aliases only, not for relative ones, and hence broke
several panel instruments. The attached patch backs most of the previous
patch out again, and goes a simpler route: just ignore aliases.
2004-12-23 13:32:01 +00:00
ehofman
37ac409586 Melchior FRANZ:
fgLoadFlight() loads a property file ("fgfs.sav") to a new property tree,
and then copies that over to the main tree. copyProperties() didn't know
how to handle type SGPropertyNode::ALIAS and hence threw an exception that
made fgfs abort.

The attached patch adds support for ALIAS to copyProperties(): aliased
nodes are created in the target tree if necessary, and then linked like in
the source tree. It seemed useful to add an optional argument to
props.[ch]xx/getType() that would indeed return the property type "ALIAS"
for aliased nodes, and not the type of the node that it refers to. The patch
also fixes a bug in writeNode() that caused extra lines after alias entries.

If there's resistance to the change to getType() (David?) I can easily use
isAlias(). This just makes copyProperties() a tad uglier, but I can live with
it. It's useful for scanning a tree, though, if an alias node can be treated
exactly like all other nodes, without automatic redirection.
2004-12-19 10:19:14 +00:00
ehofman
7b24e94c66 gcc 4.0 fix. 2004-12-18 10:53:54 +00:00
ehofman
e12cd2a50c Initialize volume to inaudiable at startup. 2004-12-16 13:15:13 +00:00
curt
98b2ba4fc1 More prerelease updates. 2004-12-15 16:45:57 +00:00
curt
2f0afdccc1 Prerelease updates. 2004-12-15 16:34:14 +00:00
ehofman
79734df554 Threads detection code cleanup and FreeBSD fixes. 2004-12-13 20:31:44 +00:00
ehofman
c52657fa1a This was too quick, now pthreads isn't detected on IRIX (and other platforms?) anymore. This needs some more thought. 2004-12-08 15:12:11 +00:00
ehofman
9cac8409cd FreeBSD fix. 2004-12-08 15:00:45 +00:00
ehofman
18703ce02d AIX fix 2004-12-05 09:36:49 +00:00
curt
709a166bd6 Oops, 2nd try ... 2004-12-02 15:08:54 +00:00
curt
8048e6297c Martin Spott: Revised handling of missing isnan() on earlier versions of
FreeBSD.
2004-12-02 15:00:26 +00:00
curt
fb0dded103 Fix a typo for the Mac OSX platform. 2004-12-01 17:37:43 +00:00
curt
055e969e7a Fix a dumb bug. 2004-11-21 21:46:02 +00:00
curt
f10db8a30e Fix a dumb bug for FreeBSD. 2004-11-21 21:45:35 +00:00
ehofman
c19af3525e Melchior FRANZ:
At last I've found the reason why fgfs crashed routinely for me. When I still
used KDE's artsdsp (preloads lib with OSS replacement functions) I saw
this crash only occasionally. After letting OpenAl communicate with artsd
directly (by means of ~/.openalrc setting), I got the crash always when
I left fgfs.

This bug may also have crashed fgfs when running with sound daemons other than
aRts.
2004-11-21 17:05:42 +00:00
curt
7c60ccfc35 I don't understand why FreeBSD doesn't see isnan() after including math.h
but it doesn't.  Trying the apple approach to fixing isnan results in an
infinite loop (making me wonder what happens on OSX?)  This is an alternative
approach to checking isnan() on freebsd ...
2004-11-21 03:13:54 +00:00
curt
84cba33aab FreeBSD fix. 2004-11-20 19:11:08 +00:00
ehofman
a52b1ec64f MSVC fix. 2004-11-20 12:35:28 +00:00
curt
f30c4720ae Update a few more instances of my email address. 2004-11-19 21:47:05 +00:00
curt
7fc8c02688 My old email address is no longer valid ... point to my web page. 2004-11-19 21:44:16 +00:00
curt
54a7a0d534 Ooops, fix an unintentional line wrap. 2004-11-18 19:12:17 +00:00
curt
8d73160a75 Abstract out location of gl.h, glut.h, and glu.h includes so that we can
make the Mac platform happy since they put these in a different place compared
to the rest of the world.
2004-11-18 19:10:34 +00:00
andy
ff10602c65 Make sure that timer delay values are positive-definite, otherwise
user code that wants to use zero delay to mean "next frame" will get
stuck in an infinite loop.
2004-11-17 19:37:45 +00:00
ehofman
ca50fe386d Roy Vegard Ovesen:
I've added two new debug log types for the instrumentation and systems. They
used to use the autopilot debug log, because I couldn't figure out how to
make new log types. Well, now I have figured it out.  ;-)
2004-10-24 09:29:56 +00:00
ehofman
39f3c6e41d Frederic Bouvier:
This is a patch to make display list usage optional. They are on by default.
Use --prop:/sim/rendering/use-display-list=false to use immediate mode.
There is also a change in exception handling in main.cxx and bootstrap.cxx
2004-10-17 17:06:50 +00:00
ehofman
ba1b96e518 Roy Vegard Ovesen:
I'm working on a route manager in the GPS module. So I've added a name
parameter to the waypoint class in Simgear. I use the existing ID parameter
to store the ID, for example KLAX, and the name parameter to store the name,
San Francisco Intl.
2004-10-16 12:23:53 +00:00
ehofman
ef486b2cc6 Remove the refference to fgsg 2004-10-14 13:35:11 +00:00
curt
06f3cb4f8e Fix a couple bugs in openal detection. I should actually generate a new
configure and test it, rather than testing the old configure script.
2004-10-13 20:18:35 +00:00
curt
074f5ff996 Oops, missed a part of the previous change. 2004-10-13 19:52:13 +00:00
curt
8c26f32d5f Add a sanity check for the existance of OpenAL. If not there, bail from
the configure script with an appropriate/helpful message.
2004-10-13 19:51:38 +00:00
999 changed files with 150578 additions and 59593 deletions

View File

@@ -1,19 +0,0 @@
Makefile
Makefile.in
SimGear.spec
aclocal.m4
autom4te.cache
config.cache
config.log
config.status
configure
do-config.sh
.cdtproject
.project
config.guess
config.sub
depcomp
INSTALL
install-sh
missing
mkinstalldirs

16
.gitignore vendored Normal file
View File

@@ -0,0 +1,16 @@
.*
*~
Makefile
*.o
lib*.a
.*.swp
cmake_install.cmake
CMakeFiles
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
cmake_uninstall.cmake
CTestTestfile.cmake
install_manifest.txt
build*
Build

4
3rdparty/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,4 @@
if (NOT SYSTEM_EXPAT)
add_subdirectory(expat)
endif()

33
3rdparty/expat/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,33 @@
configure_file (
"${PROJECT_SOURCE_DIR}/3rdparty/expat/expat_config_cmake.in"
"${PROJECT_BINARY_DIR}/3rdparty/expat/expat_config.h"
)
set(expat_sources
asciitab.h
hashtable.h
iasciitab.h
latin1tab.h
nametab.h
utf8tab.h
xmldef.h
xmlparse.h
xmlrole.h
xmltok.h
xmltok_impl.h
hashtable.c
xmlparse.c
xmlrole.c
xmltok.c
internal.h
ascii.h
sg_expat.h
sg_expat_external.h
)
foreach(s ${expat_sources})
set_property(GLOBAL
APPEND PROPERTY LOCAL_EXPAT_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/${s}")
endforeach()

22
3rdparty/expat/Expat.COPYING vendored Normal file
View File

@@ -0,0 +1,22 @@
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
and Clark Cooper
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

92
3rdparty/expat/ascii.h vendored Normal file
View File

@@ -0,0 +1,92 @@
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
*/
#define ASCII_A 0x41
#define ASCII_B 0x42
#define ASCII_C 0x43
#define ASCII_D 0x44
#define ASCII_E 0x45
#define ASCII_F 0x46
#define ASCII_G 0x47
#define ASCII_H 0x48
#define ASCII_I 0x49
#define ASCII_J 0x4A
#define ASCII_K 0x4B
#define ASCII_L 0x4C
#define ASCII_M 0x4D
#define ASCII_N 0x4E
#define ASCII_O 0x4F
#define ASCII_P 0x50
#define ASCII_Q 0x51
#define ASCII_R 0x52
#define ASCII_S 0x53
#define ASCII_T 0x54
#define ASCII_U 0x55
#define ASCII_V 0x56
#define ASCII_W 0x57
#define ASCII_X 0x58
#define ASCII_Y 0x59
#define ASCII_Z 0x5A
#define ASCII_a 0x61
#define ASCII_b 0x62
#define ASCII_c 0x63
#define ASCII_d 0x64
#define ASCII_e 0x65
#define ASCII_f 0x66
#define ASCII_g 0x67
#define ASCII_h 0x68
#define ASCII_i 0x69
#define ASCII_j 0x6A
#define ASCII_k 0x6B
#define ASCII_l 0x6C
#define ASCII_m 0x6D
#define ASCII_n 0x6E
#define ASCII_o 0x6F
#define ASCII_p 0x70
#define ASCII_q 0x71
#define ASCII_r 0x72
#define ASCII_s 0x73
#define ASCII_t 0x74
#define ASCII_u 0x75
#define ASCII_v 0x76
#define ASCII_w 0x77
#define ASCII_x 0x78
#define ASCII_y 0x79
#define ASCII_z 0x7A
#define ASCII_0 0x30
#define ASCII_1 0x31
#define ASCII_2 0x32
#define ASCII_3 0x33
#define ASCII_4 0x34
#define ASCII_5 0x35
#define ASCII_6 0x36
#define ASCII_7 0x37
#define ASCII_8 0x38
#define ASCII_9 0x39
#define ASCII_TAB 0x09
#define ASCII_SPACE 0x20
#define ASCII_EXCL 0x21
#define ASCII_QUOT 0x22
#define ASCII_AMP 0x26
#define ASCII_APOS 0x27
#define ASCII_MINUS 0x2D
#define ASCII_PERIOD 0x2E
#define ASCII_COLON 0x3A
#define ASCII_SEMI 0x3B
#define ASCII_LT 0x3C
#define ASCII_EQUALS 0x3D
#define ASCII_GT 0x3E
#define ASCII_LSQB 0x5B
#define ASCII_RSQB 0x5D
#define ASCII_UNDERSCORE 0x5F
#define ASCII_LPAREN 0x28
#define ASCII_RPAREN 0x29
#define ASCII_FF 0x0C
#define ASCII_SLASH 0x2F
#define ASCII_HASH 0x23
#define ASCII_PIPE 0x7C
#define ASCII_COMMA 0x2C

41
3rdparty/expat/expat_config_cmake.in vendored Normal file
View File

@@ -0,0 +1,41 @@
#ifndef EXPAT_CONFIG_H
#define EXPAT_CONFIG_H
#cmakedefine HAVE_WINDOWS_H
#ifdef HAVE_WINDOWS_H
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif
/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
#define BYTEORDER 1234
/* Define to 1 if you have the `bcopy' function. */
#cmakedefine HAVE_BCOPY
/* Define to 1 if you have the `memmove' function. */
#define HAVE_MEMMOVE
/* Define to 1 if you have a working `mmap' system call. */
#cmakedefine HAVE_MMAP
/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H
/* whether byteorder is bigendian */
#undef WORDS_BIGENDIAN
/* Define to specify how much context to retain around the current parse
point. */
#define XML_CONTEXT_BYTES 1024
/* Define to make parameter entity parsing functionality available. */
#define XML_DTD
/* Define to make XML Namespaces functionality available. */
#define XML_NS
#endif /* ifndef EXPAT_CONFIG_H */

View File

@@ -1,7 +1,7 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
csompliance with the License. You may obtain a copy of the License at
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"

73
3rdparty/expat/internal.h vendored Normal file
View File

@@ -0,0 +1,73 @@
/* internal.h
Internal definitions used by Expat. This is not needed to compile
client code.
The following calling convention macros are defined for frequently
called functions:
FASTCALL - Used for those internal functions that have a simple
body and a low number of arguments and local variables.
PTRCALL - Used for functions called though function pointers.
PTRFASTCALL - Like PTRCALL, but for low number of arguments.
inline - Used for selected internal functions for which inlining
may improve performance on some platforms.
Note: Use of these macros is based on judgement, not hard rules,
and therefore subject to change.
*/
#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
/* We'll use this version by default only where we know it helps.
regparm() generates warnings on Solaris boxes. See SF bug #692878.
Instability reported with egcs on a RedHat Linux 7.3.
Let's comment out:
#define FASTCALL __attribute__((stdcall, regparm(3)))
and let's try this:
*/
#define FASTCALL __attribute__((regparm(3)))
#define PTRFASTCALL __attribute__((regparm(3)))
#endif
/* Using __fastcall seems to have an unexpected negative effect under
MS VC++, especially for function pointers, so we won't use it for
now on that platform. It may be reconsidered for a future release
if it can be made more effective.
Likely reason: __fastcall on Windows is like stdcall, therefore
the compiler cannot perform stack optimizations for call clusters.
*/
/* Make sure all of these are defined if they aren't already. */
#ifndef FASTCALL
#define FASTCALL
#endif
#ifndef PTRCALL
#define PTRCALL
#endif
#ifndef PTRFASTCALL
#define PTRFASTCALL
#endif
#ifndef XML_MIN_SIZE
#if !defined(__cplusplus) && !defined(inline)
#ifdef __GNUC__
#define inline __inline
#endif /* __GNUC__ */
#endif
#endif /* XML_MIN_SIZE */
#ifdef __cplusplus
#define inline inline
#else
#ifndef inline
#define inline
#endif
#endif

1047
3rdparty/expat/sg_expat.h vendored Normal file

File diff suppressed because it is too large Load Diff

115
3rdparty/expat/sg_expat_external.h vendored Normal file
View File

@@ -0,0 +1,115 @@
/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
*/
#ifndef Expat_External_INCLUDED
#define Expat_External_INCLUDED 1
/* External API definitions */
#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
#define XML_USE_MSC_EXTENSIONS 1
#endif
/* Expat tries very hard to make the API boundary very specifically
defined. There are two macros defined to control this boundary;
each of these can be defined before including this header to
achieve some different behavior, but doing so it not recommended or
tested frequently.
XMLCALL - The calling convention to use for all calls across the
"library boundary." This will default to cdecl, and
try really hard to tell the compiler that's what we
want.
XMLIMPORT - Whatever magic is needed to note that a function is
to be imported from a dynamically loaded library
(.dll, .so, or .sl, depending on your platform).
The XMLCALL macro was added in Expat 1.95.7. The only one which is
expected to be directly useful in client code is XMLCALL.
Note that on at least some Unix versions, the Expat library must be
compiled with the cdecl calling convention as the default since
system headers may assume the cdecl convention.
*/
#ifndef XMLCALL
#if defined(_MSC_VER)
#define XMLCALL __cdecl
#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
#define XMLCALL __attribute__((cdecl))
#else
/* For any platform which uses this definition and supports more than
one calling convention, we need to extend this definition to
declare the convention used on that platform, if it's possible to
do so.
If this is the case for your platform, please file a bug report
with information on how to identify your platform via the C
pre-processor and how to specify the same calling convention as the
platform's malloc() implementation.
*/
#define XMLCALL
#endif
#endif /* not defined XMLCALL */
#if !defined(XML_STATIC) && !defined(XMLIMPORT)
#ifndef XML_BUILDING_EXPAT
/* using Expat from an application */
#ifdef XML_USE_MSC_EXTENSIONS
#define XMLIMPORT __declspec(dllimport)
#endif
#endif
#endif /* not defined XML_STATIC */
/* If we didn't define it above, define it away: */
#ifndef XMLIMPORT
#define XMLIMPORT
#endif
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
#ifdef __cplusplus
extern "C" {
#endif
#ifdef XML_UNICODE_WCHAR_T
#define XML_UNICODE
#endif
#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
#ifdef XML_UNICODE_WCHAR_T
typedef wchar_t XML_Char;
typedef wchar_t XML_LChar;
#else
typedef unsigned short XML_Char;
typedef char XML_LChar;
#endif /* XML_UNICODE_WCHAR_T */
#else /* Information is UTF-8 encoded. */
typedef char XML_Char;
typedef char XML_LChar;
#endif /* XML_UNICODE */
#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
typedef __int64 XML_Index;
typedef unsigned __int64 XML_Size;
#else
typedef long long XML_Index;
typedef unsigned long long XML_Size;
#endif
#else
typedef long XML_Index;
typedef unsigned long XML_Size;
#endif /* XML_LARGE_SIZE */
#ifdef __cplusplus
}
#endif
#endif /* not Expat_External_INCLUDED */

View File

@@ -53,7 +53,7 @@ particular environments. */
#ifdef MOZILLA
#include "nspr.h"
#include <nspr.h>
#define malloc(x) PR_Malloc(x)
#define realloc(x, y) PR_Realloc((x), (y))
#define calloc(x, y) PR_Calloc((x),(y))

6403
3rdparty/expat/xmlparse.c vendored Normal file

File diff suppressed because it is too large Load Diff

1336
3rdparty/expat/xmlrole.c vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,16 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is expat.
The Initial Developer of the Original Code is James Clark.
Portions created by James Clark are Copyright (C) 1998, 1999
James Clark. All Rights Reserved.
Contributor(s):
Alternatively, the contents of this file may be used under the terms
of the GNU General Public License (the "GPL"), in which case the
provisions of the GPL are applicable instead of those above. If you
wish to allow use of your version of this file only under the terms of
the GPL and not to allow others to use your version of this file under
the MPL, indicate your decision by deleting the provisions above and
replace them with the notice and other provisions required by the
GPL. If you do not delete the provisions above, a recipient may use
your version of this file under either the MPL or the GPL.
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
*/
#ifndef XmlRole_INCLUDED
#define XmlRole_INCLUDED 1
#ifdef __VMS
/* 0 1 2 3 0 1 2 3
1234567890123456789012345678901 1234567890123456789012345678901 */
#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt
#endif
#include "xmltok.h"
#ifdef __cplusplus
@@ -42,16 +22,21 @@ enum {
XML_ROLE_NONE = 0,
XML_ROLE_XML_DECL,
XML_ROLE_INSTANCE_START,
XML_ROLE_DOCTYPE_NONE,
XML_ROLE_DOCTYPE_NAME,
XML_ROLE_DOCTYPE_SYSTEM_ID,
XML_ROLE_DOCTYPE_PUBLIC_ID,
XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
XML_ROLE_DOCTYPE_CLOSE,
XML_ROLE_GENERAL_ENTITY_NAME,
XML_ROLE_PARAM_ENTITY_NAME,
XML_ROLE_ENTITY_NONE,
XML_ROLE_ENTITY_VALUE,
XML_ROLE_ENTITY_SYSTEM_ID,
XML_ROLE_ENTITY_PUBLIC_ID,
XML_ROLE_ENTITY_COMPLETE,
XML_ROLE_ENTITY_NOTATION_NAME,
XML_ROLE_NOTATION_NONE,
XML_ROLE_NOTATION_NAME,
XML_ROLE_NOTATION_SYSTEM_ID,
XML_ROLE_NOTATION_NO_SYSTEM_ID,
@@ -67,11 +52,13 @@ enum {
XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
XML_ROLE_ATTRIBUTE_ENUM_VALUE,
XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
XML_ROLE_ATTLIST_NONE,
XML_ROLE_ATTLIST_ELEMENT_NAME,
XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
XML_ROLE_FIXED_ATTRIBUTE_VALUE,
XML_ROLE_ELEMENT_NONE,
XML_ROLE_ELEMENT_NAME,
XML_ROLE_CONTENT_ANY,
XML_ROLE_CONTENT_EMPTY,
@@ -87,19 +74,35 @@ enum {
XML_ROLE_CONTENT_ELEMENT_REP,
XML_ROLE_CONTENT_ELEMENT_OPT,
XML_ROLE_CONTENT_ELEMENT_PLUS,
XML_ROLE_PI,
XML_ROLE_COMMENT,
#ifdef XML_DTD
XML_ROLE_TEXT_DECL,
XML_ROLE_IGNORE_SECT,
XML_ROLE_INNER_PARAM_ENTITY_REF,
#endif /* XML_DTD */
XML_ROLE_PARAM_ENTITY_REF
};
typedef struct prolog_state {
int (*handler)(struct prolog_state *state,
int tok,
const char *ptr,
const char *end,
const ENCODING *enc);
int (PTRCALL *handler) (struct prolog_state *state,
int tok,
const char *ptr,
const char *end,
const ENCODING *enc);
unsigned level;
int role_none;
#ifdef XML_DTD
unsigned includeLevel;
int documentEntity;
int inEntityValue;
#endif /* XML_DTD */
} PROLOG_STATE;
void XMLTOKAPI XmlPrologStateInit(PROLOG_STATE *);
void XmlPrologStateInit(PROLOG_STATE *);
#ifdef XML_DTD
void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
#endif /* XML_DTD */
#define XmlTokenRole(state, tok, ptr, end, enc) \
(((state)->handler)(state, tok, ptr, end, enc))

File diff suppressed because it is too large Load Diff

316
3rdparty/expat/xmltok.h vendored Normal file
View File

@@ -0,0 +1,316 @@
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
*/
#ifndef XmlTok_INCLUDED
#define XmlTok_INCLUDED 1
#ifdef __cplusplus
extern "C" {
#endif
/* The following token may be returned by XmlContentTok */
#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
start of illegal ]]> sequence */
/* The following tokens may be returned by both XmlPrologTok and
XmlContentTok.
*/
#define XML_TOK_NONE -4 /* The string to be scanned is empty */
#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan;
might be part of CRLF sequence */
#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
#define XML_TOK_PARTIAL -1 /* only part of a token */
#define XML_TOK_INVALID 0
/* The following tokens are returned by XmlContentTok; some are also
returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
*/
#define XML_TOK_START_TAG_WITH_ATTS 1
#define XML_TOK_START_TAG_NO_ATTS 2
#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
#define XML_TOK_END_TAG 5
#define XML_TOK_DATA_CHARS 6
#define XML_TOK_DATA_NEWLINE 7
#define XML_TOK_CDATA_SECT_OPEN 8
#define XML_TOK_ENTITY_REF 9
#define XML_TOK_CHAR_REF 10 /* numeric character reference */
/* The following tokens may be returned by both XmlPrologTok and
XmlContentTok.
*/
#define XML_TOK_PI 11 /* processing instruction */
#define XML_TOK_XML_DECL 12 /* XML decl or text decl */
#define XML_TOK_COMMENT 13
#define XML_TOK_BOM 14 /* Byte order mark */
/* The following tokens are returned only by XmlPrologTok */
#define XML_TOK_PROLOG_S 15
#define XML_TOK_DECL_OPEN 16 /* <!foo */
#define XML_TOK_DECL_CLOSE 17 /* > */
#define XML_TOK_NAME 18
#define XML_TOK_NMTOKEN 19
#define XML_TOK_POUND_NAME 20 /* #name */
#define XML_TOK_OR 21 /* | */
#define XML_TOK_PERCENT 22
#define XML_TOK_OPEN_PAREN 23
#define XML_TOK_CLOSE_PAREN 24
#define XML_TOK_OPEN_BRACKET 25
#define XML_TOK_CLOSE_BRACKET 26
#define XML_TOK_LITERAL 27
#define XML_TOK_PARAM_ENTITY_REF 28
#define XML_TOK_INSTANCE_START 29
/* The following occur only in element type declarations */
#define XML_TOK_NAME_QUESTION 30 /* name? */
#define XML_TOK_NAME_ASTERISK 31 /* name* */
#define XML_TOK_NAME_PLUS 32 /* name+ */
#define XML_TOK_COND_SECT_OPEN 33 /* <![ */
#define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */
#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */
#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */
#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */
#define XML_TOK_COMMA 38
/* The following token is returned only by XmlAttributeValueTok */
#define XML_TOK_ATTRIBUTE_VALUE_S 39
/* The following token is returned only by XmlCdataSectionTok */
#define XML_TOK_CDATA_SECT_CLOSE 40
/* With namespace processing this is returned by XmlPrologTok for a
name with a colon.
*/
#define XML_TOK_PREFIXED_NAME 41
#ifdef XML_DTD
#define XML_TOK_IGNORE_SECT 42
#endif /* XML_DTD */
#ifdef XML_DTD
#define XML_N_STATES 4
#else /* not XML_DTD */
#define XML_N_STATES 3
#endif /* not XML_DTD */
#define XML_PROLOG_STATE 0
#define XML_CONTENT_STATE 1
#define XML_CDATA_SECTION_STATE 2
#ifdef XML_DTD
#define XML_IGNORE_SECTION_STATE 3
#endif /* XML_DTD */
#define XML_N_LITERAL_TYPES 2
#define XML_ATTRIBUTE_VALUE_LITERAL 0
#define XML_ENTITY_VALUE_LITERAL 1
/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
#define XML_UTF8_ENCODE_MAX 4
/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
#define XML_UTF16_ENCODE_MAX 2
typedef struct position {
/* first line and first column are 0 not 1 */
XML_Size lineNumber;
XML_Size columnNumber;
} POSITION;
typedef struct {
const char *name;
const char *valuePtr;
const char *valueEnd;
char normalized;
} ATTRIBUTE;
struct encoding;
typedef struct encoding ENCODING;
typedef int (PTRCALL *SCANNER)(const ENCODING *,
const char *,
const char *,
const char **);
struct encoding {
SCANNER scanners[XML_N_STATES];
SCANNER literalScanners[XML_N_LITERAL_TYPES];
int (PTRCALL *sameName)(const ENCODING *,
const char *,
const char *);
int (PTRCALL *nameMatchesAscii)(const ENCODING *,
const char *,
const char *,
const char *);
int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
int (PTRCALL *getAtts)(const ENCODING *enc,
const char *ptr,
int attsMax,
ATTRIBUTE *atts);
int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
int (PTRCALL *predefinedEntityName)(const ENCODING *,
const char *,
const char *);
void (PTRCALL *updatePosition)(const ENCODING *,
const char *ptr,
const char *end,
POSITION *);
int (PTRCALL *isPublicId)(const ENCODING *enc,
const char *ptr,
const char *end,
const char **badPtr);
void (PTRCALL *utf8Convert)(const ENCODING *enc,
const char **fromP,
const char *fromLim,
char **toP,
const char *toLim);
void (PTRCALL *utf16Convert)(const ENCODING *enc,
const char **fromP,
const char *fromLim,
unsigned short **toP,
const unsigned short *toLim);
int minBytesPerChar;
char isUtf8;
char isUtf16;
};
/* Scan the string starting at ptr until the end of the next complete
token, but do not scan past eptr. Return an integer giving the
type of token.
Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
Return XML_TOK_PARTIAL when the string does not contain a complete
token; nextTokPtr will not be set.
Return XML_TOK_INVALID when the string does not start a valid
token; nextTokPtr will be set to point to the character which made
the token invalid.
Otherwise the string starts with a valid token; nextTokPtr will be
set to point to the character following the end of that token.
Each data character counts as a single token, but adjacent data
characters may be returned together. Similarly for characters in
the prolog outside literals, comments and processing instructions.
*/
#define XmlTok(enc, state, ptr, end, nextTokPtr) \
(((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
#define XmlContentTok(enc, ptr, end, nextTokPtr) \
XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
#ifdef XML_DTD
#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
#endif /* XML_DTD */
/* This is used for performing a 2nd-level tokenization on the content
of a literal that has already been returned by XmlTok.
*/
#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
(((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
(((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
#define XmlNameLength(enc, ptr) \
(((enc)->nameLength)(enc, ptr))
#define XmlSkipS(enc, ptr) \
(((enc)->skipS)(enc, ptr))
#define XmlGetAttributes(enc, ptr, attsMax, atts) \
(((enc)->getAtts)(enc, ptr, attsMax, atts))
#define XmlCharRefNumber(enc, ptr) \
(((enc)->charRefNumber)(enc, ptr))
#define XmlPredefinedEntityName(enc, ptr, end) \
(((enc)->predefinedEntityName)(enc, ptr, end))
#define XmlUpdatePosition(enc, ptr, end, pos) \
(((enc)->updatePosition)(enc, ptr, end, pos))
#define XmlIsPublicId(enc, ptr, end, badPtr) \
(((enc)->isPublicId)(enc, ptr, end, badPtr))
#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
(((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
(((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
typedef struct {
ENCODING initEnc;
const ENCODING **encPtr;
} INIT_ENCODING;
int XmlParseXmlDecl(int isGeneralTextEntity,
const ENCODING *enc,
const char *ptr,
const char *end,
const char **badPtr,
const char **versionPtr,
const char **versionEndPtr,
const char **encodingNamePtr,
const ENCODING **namedEncodingPtr,
int *standalonePtr);
int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
const ENCODING *XmlGetUtf8InternalEncoding(void);
const ENCODING *XmlGetUtf16InternalEncoding(void);
int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
int XmlSizeOfUnknownEncoding(void);
typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
ENCODING *
XmlInitUnknownEncoding(void *mem,
int *table,
CONVERTER convert,
void *userData);
int XmlParseXmlDeclNS(int isGeneralTextEntity,
const ENCODING *enc,
const char *ptr,
const char *end,
const char **badPtr,
const char **versionPtr,
const char **versionEndPtr,
const char **encodingNamePtr,
const ENCODING **namedEncodingPtr,
int *standalonePtr);
int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
const ENCODING *XmlGetUtf8InternalEncodingNS(void);
const ENCODING *XmlGetUtf16InternalEncodingNS(void);
ENCODING *
XmlInitUnknownEncodingNS(void *mem,
int *table,
CONVERTER convert,
void *userData);
#ifdef __cplusplus
}
#endif
#endif /* not XmlTok_INCLUDED */

File diff suppressed because it is too large Load Diff

115
3rdparty/expat/xmltok_ns.c vendored Normal file
View File

@@ -0,0 +1,115 @@
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
*/
/* This file is included! */
#ifdef XML_TOK_NS_C
const ENCODING *
NS(XmlGetUtf8InternalEncoding)(void)
{
return &ns(internal_utf8_encoding).enc;
}
const ENCODING *
NS(XmlGetUtf16InternalEncoding)(void)
{
#if BYTEORDER == 1234
return &ns(internal_little2_encoding).enc;
#elif BYTEORDER == 4321
return &ns(internal_big2_encoding).enc;
#else
const short n = 1;
return (*(const char *)&n
? &ns(internal_little2_encoding).enc
: &ns(internal_big2_encoding).enc);
#endif
}
static const ENCODING * const NS(encodings)[] = {
&ns(latin1_encoding).enc,
&ns(ascii_encoding).enc,
&ns(utf8_encoding).enc,
&ns(big2_encoding).enc,
&ns(big2_encoding).enc,
&ns(little2_encoding).enc,
&ns(utf8_encoding).enc /* NO_ENC */
};
static int PTRCALL
NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
const char **nextTokPtr)
{
return initScan(NS(encodings), (const INIT_ENCODING *)enc,
XML_PROLOG_STATE, ptr, end, nextTokPtr);
}
static int PTRCALL
NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
const char **nextTokPtr)
{
return initScan(NS(encodings), (const INIT_ENCODING *)enc,
XML_CONTENT_STATE, ptr, end, nextTokPtr);
}
int
NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
const char *name)
{
int i = getEncodingIndex(name);
if (i == UNKNOWN_ENC)
return 0;
SET_INIT_ENC_INDEX(p, i);
p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
p->initEnc.updatePosition = initUpdatePosition;
p->encPtr = encPtr;
*encPtr = &(p->initEnc);
return 1;
}
static const ENCODING *
NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
{
#define ENCODING_MAX 128
char buf[ENCODING_MAX];
char *p = buf;
int i;
XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
if (ptr != end)
return 0;
*p = 0;
if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
return enc;
i = getEncodingIndex(buf);
if (i == UNKNOWN_ENC)
return 0;
return NS(encodings)[i];
}
int
NS(XmlParseXmlDecl)(int isGeneralTextEntity,
const ENCODING *enc,
const char *ptr,
const char *end,
const char **badPtr,
const char **versionPtr,
const char **versionEndPtr,
const char **encodingName,
const ENCODING **encoding,
int *standalone)
{
return doParseXmlDecl(NS(findEncoding),
isGeneralTextEntity,
enc,
ptr,
end,
badPtr,
versionPtr,
versionEndPtr,
encodingName,
encoding,
standalone);
}
#endif /* XML_TOK_NS_C */

403
CMakeLists.txt Normal file
View File

@@ -0,0 +1,403 @@
cmake_minimum_required (VERSION 2.6.4)
include (CheckFunctionExists)
include (CheckIncludeFile)
include (CheckCXXSourceCompiles)
include (CheckCXXCompilerFlag)
project(SimGear)
# read 'version' file into a variable (stripping any newlines or spaces)
file(READ version versionFile)
string(STRIP ${versionFile} SIMGEAR_VERSION)
set(FIND_LIBRARY_USE_LIB64_PATHS ON)
# use simgear version also as the SO version (if building SOs)
SET(SIMGEAR_SOVERSION ${SIMGEAR_VERSION})
# Warning when build is not an out-of-source build.
string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" InSourceBuild)
if(InSourceBuild)
message(WARNING "Avoid building inside the source tree!")
message(WARNING "Create a separate build directory instead (i.e. 'sgbuild') and call CMake from there: ")
message(WARNING " mkdir ../sgbuild && cd ../sgbuild && cmake ${CMAKE_SOURCE_DIR}")
endif(InSourceBuild)
#packaging
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
SET(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simulation support libraries for FlightGear and related projects")
SET(CPACK_PACKAGE_VENDOR "The FlightGear project")
SET(CPACK_GENERATOR "TBZ2")
SET(CPACK_INSTALL_CMAKE_PROJECTS ${CMAKE_CURRENT_BINARY_DIR};SimGear;ALL;/)
# split version string into components, note CMAKE_MATCH_0 is the entire regexp match
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" CPACK_PACKAGE_VERSION ${SIMGEAR_VERSION} )
set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_3})
message(STATUS "version is ${CPACK_PACKAGE_VERSION_MAJOR} dot ${CPACK_PACKAGE_VERSION_MINOR} dot ${CPACK_PACKAGE_VERSION_PATCH}")
set(CPACK_SOURCE_GENERATOR TBZ2)
set(CPACK_SOURCE_PACKAGE_FILE_NAME "simgear-${SIMGEAR_VERSION}" CACHE INTERNAL "tarball basename")
set(CPACK_SOURCE_IGNORE_FILES
"^${PROJECT_SOURCE_DIR}/.git;\\\\.gitignore;Makefile.am;~$;${CPACK_SOURCE_IGNORE_FILES}")
message(STATUS "ignoring: ${CPACK_SOURCE_IGNORE_FILES}")
include (CPack)
# We have some custom .cmake scripts not in the official distribution.
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
# Change the default build type to something fast
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)
# Determine name of library installation directory, i.e. "lib" vs "lib64", which
# differs between all Debian-based vs all other Linux distros.
# See cmake bug #11964, http://cmake.org/gitweb?p=cmake.git;a=commit;h=126c993d
# GNUInstallDirs requires CMake >= 2.8.5, use own file for older cmake
if(${CMAKE_VERSION} VERSION_GREATER 2.8.4)
include(GNUInstallDirs)
else(${CMAKE_VERSION} VERSION_GREATER 2.8.4)
include(OldGNUInstallDirs)
endif(${CMAKE_VERSION} VERSION_GREATER 2.8.4)
message(STATUS "Library installation directory: ${CMAKE_INSTALL_LIBDIR}")
#####################################################################################
# Configure library search paths
#####################################################################################
if(NOT "${CMAKE_LIBRARY_ARCHITECTURE}" STREQUAL "")
# Workaround for Ubuntu/Debian which introduced the "multiarch" library
# directory structure, which is unsupported by CMake < 2.8.10, so we need to
# add paths manually
# see http://www.cmake.org/Bug/view.php?id=12049 and
# http://www.cmake.org/Bug/view.php?id=12037
list(APPEND ADDITIONAL_LIBRARY_PATHS
/usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/lib/${CMAKE_LIBRARY_ARCHITECTURE})
message(STATUS "additional library directories: ${ADDITIONAL_LIBRARY_PATHS}")
endif()
#####################################################################################
if (NOT MSVC)
option(SIMGEAR_SHARED "Set to ON to build SimGear as a shared library/framework" OFF)
option(SYSTEM_EXPAT "Set to ON to build SimGear using the system libExpat" OFF)
else()
# Building SimGear DLLs is currently not supported for MSVC.
set(SIMGEAR_SHARED OFF)
# Using a system expat is currently not supported for MSVC - it would require shared simgear (DLL).
set(SYSTEM_EXPAT OFF)
endif()
option(SIMGEAR_HEADLESS "Set to ON to build SimGear without GUI/graphics support" OFF)
option(JPEG_FACTORY "Enable JPEG-factory support" OFF)
option(ENABLE_RTI "Set to ON to build SimGear with RTI support" OFF)
option(ENABLE_TESTS "Set to OFF to disable building SimGear's test applications" ON)
option(ENABLE_SOUND "Set to OFF to disable building SimGear's sound support" ON)
option(ENABLE_PKGUTIL "Set to ON to build the sg_pkgutil application (default)" ON)
if (MSVC)
GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_BINARY_DIR} PATH)
if (CMAKE_CL_64)
SET(TEST_3RDPARTY_DIR "${PARENT_DIR}/3rdparty.x64")
else (CMAKE_CL_64)
SET(TEST_3RDPARTY_DIR "${PARENT_DIR}/3rdparty")
endif (CMAKE_CL_64)
if (EXISTS ${TEST_3RDPARTY_DIR})
set(MSVC_3RDPARTY_ROOT ${PARENT_DIR} CACHE PATH "Location where the third-party dependencies are extracted")
else (EXISTS ${TEST_3RDPARTY_DIR})
set(MSVC_3RDPARTY_ROOT NOT_FOUND CACHE PATH "Location where the third-party dependencies are extracted")
endif (EXISTS ${TEST_3RDPARTY_DIR})
else (MSVC)
set(MSVC_3RDPARTY_ROOT NOT_FOUND CACHE PATH "Location where the third-party dependencies are extracted")
endif (MSVC)
if (MSVC AND MSVC_3RDPARTY_ROOT)
message(STATUS "3rdparty files located in ${MSVC_3RDPARTY_ROOT}")
set( OSG_MSVC "msvc" )
if (${MSVC_VERSION} EQUAL 1700)
set( OSG_MSVC ${OSG_MSVC}110 )
elseif (${MSVC_VERSION} EQUAL 1600)
set( OSG_MSVC ${OSG_MSVC}100 )
else (${MSVC_VERSION} EQUAL 1700)
set( OSG_MSVC ${OSG_MSVC}90 )
endif (${MSVC_VERSION} EQUAL 1700)
if (CMAKE_CL_64)
set( OSG_MSVC ${OSG_MSVC}-64 )
set( MSVC_3RDPARTY_DIR 3rdParty.x64 )
else (CMAKE_CL_64)
set( MSVC_3RDPARTY_DIR 3rdParty )
endif (CMAKE_CL_64)
set (CMAKE_LIBRARY_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenRTI/lib )
set (CMAKE_INCLUDE_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenRTI/include)
find_path(BOOST_ROOT boost/version.hpp
${MSVC_3RDPARTY_ROOT}/boost
${MSVC_3RDPARTY_ROOT}/boost_1_52_0
${MSVC_3RDPARTY_ROOT}/boost_1_51_0
${MSVC_3RDPARTY_ROOT}/boost_1_50_0
${MSVC_3RDPARTY_ROOT}/boost_1_49_0
${MSVC_3RDPARTY_ROOT}/boost_1_48_0
${MSVC_3RDPARTY_ROOT}/boost_1_47_0
${MSVC_3RDPARTY_ROOT}/boost_1_46_1
${MSVC_3RDPARTY_ROOT}/boost_1_46_0
${MSVC_3RDPARTY_ROOT}/boost_1_45_0
${MSVC_3RDPARTY_ROOT}/boost_1_44_0
)
# set (BOOST_ROOT ${MSVC_3RDPARTY_ROOT}/boost_1_44_0)
message(STATUS "BOOST_ROOT is ${BOOST_ROOT}")
set (OPENAL_INCLUDE_DIR ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include)
set (OPENAL_LIBRARY_DIR ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/lib)
endif (MSVC AND MSVC_3RDPARTY_ROOT)
if(APPLE)
find_library(CORE_SERVICES_LIBRARY CoreServices)
endif()
find_package(Boost REQUIRED)
set (BOOST_CXX_FLAGS "-DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DBOOST_BIMAP_DISABLE_SERIALIZATION")
if(SIMGEAR_HEADLESS)
message(STATUS "SimGear mode: HEADLESS")
set(ENABLE_SOUND 0)
else()
message(STATUS "SimGear mode: NORMAL")
find_package(OpenGL REQUIRED)
if (ENABLE_SOUND)
find_package(OpenAL REQUIRED)
message(STATUS "Sound support: ENABLED")
endif(ENABLE_SOUND)
find_package(OpenSceneGraph 3.0.0 REQUIRED osgText osgSim osgDB osgParticle osgGA osgUtil)
endif(SIMGEAR_HEADLESS)
if(JPEG_FACTORY)
message(STATUS "JPEG-factory: ENABLED")
find_package(JPEG REQUIRED)
include_directories(${JPEG_INCLUDE_DIR})
else()
message(STATUS "JPEG-factory: DISABLED")
endif(JPEG_FACTORY)
find_package(ZLIB REQUIRED)
find_package(Threads REQUIRED)
if (SYSTEM_EXPAT)
message(STATUS "Requested to use system Expat library, forcing SIMGEAR_SHARED to true")
set(SIMGEAR_SHARED ON)
find_package(EXPAT REQUIRED)
else()
message(STATUS "Using built-in expat code")
# XML_STATIC is important to avoid sg_expat_external.h
# declaring symbols as declspec(import)
add_definitions(-DHAVE_EXPAT_CONFIG_H -DXML_STATIC)
set(EXPAT_INCLUDE_DIRS
${PROJECT_SOURCE_DIR}/3rdparty/expat
${PROJECT_BINARY_DIR}/3rdparty/expat)
endif(SYSTEM_EXPAT)
include_directories(${EXPAT_INCLUDE_DIRS})
check_include_file(inttypes.h HAVE_INTTYPES_H)
check_include_file(sys/time.h HAVE_SYS_TIME_H)
check_include_file(sys/timeb.h HAVE_SYS_TIMEB_H)
check_include_file(unistd.h HAVE_UNISTD_H)
check_include_file(windows.h HAVE_WINDOWS_H)
if(HAVE_INTTYPES_H)
# ShivaVG needs inttypes.h
add_definitions(-DHAVE_INTTYPES_H)
endif()
if(ENABLE_RTI)
# See if we have any rti library variant installed
message(STATUS "RTI: ENABLED")
find_package(RTI)
else()
message(STATUS "RTI: DISABLED")
endif(ENABLE_RTI)
check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
check_function_exists(ftime HAVE_FTIME)
check_function_exists(timegm HAVE_TIMEGM)
check_function_exists(rint HAVE_RINT)
check_function_exists(mkdtemp HAVE_MKDTEMP)
check_function_exists(bcopy HAVE_BCOPY)
check_function_exists(mmap HAVE_MMAP)
if(HAVE_UNISTD_H)
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH})
check_cxx_source_compiles(
"#include <unistd.h>
#if !defined(_POSIX_TIMERS) || (0 >= _POSIX_TIMERS)
#error clock_gettime is not supported
#endif
int main() { return 0; }
"
HAVE_CLOCK_GETTIME)
endif(HAVE_UNISTD_H)
set(RT_LIBRARY "")
if(HAVE_CLOCK_GETTIME)
check_library_exists(rt clock_gettime "" HAVE_RT)
if(HAVE_RT)
set(RT_LIBRARY rt)
endif(HAVE_RT)
endif(HAVE_CLOCK_GETTIME)
set(DL_LIBRARY "")
check_cxx_source_compiles(
"#include <dlfcn.h>
int main(void) {
return 0;
}
"
HAVE_DLFCN_H)
if(HAVE_DLFCN_H)
check_library_exists(dl dlerror "" HAVE_DL)
set(DL_LIBRARY "dl")
endif()
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually 'd' on windows")
SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_MINSIZEREL_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
# isnan might not be real symbol, so can't check using function_exists
check_cxx_source_compiles(
"#include <cmath>
void f() { isnan(0.0);} "
HAVE_ISNAN)
check_cxx_source_compiles(
"#include <cmath>
void f() { std::isnan(0.0);} "
HAVE_STD_ISNAN)
if(CMAKE_COMPILER_IS_GNUCXX)
set(WARNING_FLAGS_CXX "-Wall")
set(WARNING_FLAGS_C "-Wall")
# certain GCC versions don't provide the atomic builds, and hence
# require is to provide them in SGAtomic.cxx
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH})
check_cxx_source_compiles(
"int main() { unsigned mValue; return __sync_add_and_fetch(&mValue, 1); }"
GCC_ATOMIC_BUILTINS_FOUND)
endif(CMAKE_COMPILER_IS_GNUCXX)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(WARNING_FLAGS_CXX "-Wall -Wno-overloaded-virtual")
set(WARNING_FLAGS_C "-Wall")
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# boost goes haywire wrt static asserts
check_cxx_compiler_flag(-Wno-unused-local-typedefs HAS_NOWARN_UNUSED_TYPEDEFS)
if(HAS_NOWARN_UNUSED_TYPEDEFS)
set(WARNING_FLAGS_CXX " ${WARNING_FLAGS_CXX} -Wno-unused-local-typedefs")
endif()
endif()
if(WIN32)
if(MINGW)
add_definitions(-D_WIN32_WINNT=0x501)
endif()
if(MSVC)
# turn off various warnings
# foreach(warning 4244 4251 4267 4275 4290 4786 4305 4996)
# SET(WARNING_FLAGS "${WARNING_FLAGS} /wd${warning}")
# endforeach(warning)
set(MSVC_FLAGS "-DWIN32 -DNOMINMAX -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D__CRT_NONSTDC_NO_WARNINGS /wd4996 /wd4250 -Dstrdup=_strdup")
if (${MSVC_VERSION} GREATER 1599)
set( MSVC_LD_FLAGS "/FORCE:MULTIPLE" )
endif (${MSVC_VERSION} GREATER 1599)
endif(MSVC)
# assumed on Windows
set(HAVE_GETLOCALTIME 1)
set( WINSOCK_LIBRARY "ws2_32.lib" )
set( RT_LIBRARY "winmm" )
endif(WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS_C} ${MSVC_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS_CXX} ${MSVC_FLAGS} ${BOOST_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSVC_LD_FLAGS}")
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_SOURCE_DIR}/simgear/canvas/ShivaVG/include)
include_directories(${PROJECT_BINARY_DIR}/simgear)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}
${OPENAL_INCLUDE_DIR}
)
add_definitions(-DHAVE_CONFIG_H)
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/simgear/simgear_config_cmake.h.in"
"${PROJECT_BINARY_DIR}/simgear/simgear_config.h"
)
if(ENABLE_TESTS)
# enable CTest / make test target
message(STATUS "Tests: ENABLED")
include (Dart)
enable_testing()
else()
message(STATUS "Tests: DISABLED")
endif(ENABLE_TESTS)
# always set TEST_LIBS as it is also used by other tools/applications
set(TEST_LIBS_INTERNAL_CORE
${CMAKE_THREAD_LIBS_INIT}
${ZLIB_LIBRARY}
${WINSOCK_LIBRARY}
${RT_LIBRARY}
${DL_LIBRARY}
${CORE_SERVICES_LIBRARY})
set(TEST_LIBS SimGearCore ${TEST_LIBS_INTERNAL_CORE})
if(NOT SIMGEAR_HEADLESS)
set(TEST_LIBS SimGearScene ${OPENGL_LIBRARIES} ${TEST_LIBS})
endif()
install (FILES ${PROJECT_BINARY_DIR}/simgear/simgear_config.h DESTINATION include/simgear/)
add_subdirectory(3rdparty)
add_subdirectory(simgear)
#-----------------------------------------------------------------------------
### uninstall target
#-----------------------------------------------------------------------------
CONFIGURE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
ADD_CUSTOM_TARGET(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")

View File

@@ -0,0 +1,182 @@
# - Define GNU standard installation directories
# Provides install directory variables as defined for GNU software:
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
# Inclusion of this module defines the following variables:
# CMAKE_INSTALL_<dir> - destination for files of a given type
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
# where <dir> is one of:
# BINDIR - user executables (bin)
# SBINDIR - system admin executables (sbin)
# LIBEXECDIR - program executables (libexec)
# SYSCONFDIR - read-only single-machine data (etc)
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
# LOCALSTATEDIR - modifiable single-machine data (var)
# LIBDIR - object code libraries (lib or lib64)
# INCLUDEDIR - C header files (include)
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# DATAROOTDIR - read-only architecture-independent data root (share)
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
# INFODIR - info documentation (DATAROOTDIR/info)
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
# MANDIR - man documentation (DATAROOTDIR/man)
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
# install() commands for the corresponding file type. If the includer does
# not define a value the above-shown default will be used and the value will
# appear in the cache for editing by the user.
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
# from the corresponding destination by prepending (if necessary) the value
# of CMAKE_INSTALL_PREFIX.
#=============================================================================
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
# Copyright 2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Installation directories
#
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(_LIBDIR_DEFAULT "lib")
# Override this default 'lib' with 'lib64' iff:
# - we are on Linux system but NOT cross-compiling
# - we are NOT on debian
# - we are on a 64 bits system
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
# Note that the future of multi-arch handling may be even
# more complicated than that: http://wiki.debian.org/Multiarch
if(CMAKE_SYSTEM_NAME MATCHES "Linux"
AND NOT CMAKE_CROSSCOMPILING
AND NOT EXISTS "/etc/debian_version")
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
message(AUTHOR_WARNING
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
"Please enable at least one language before including GNUInstallDirs.")
else()
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(_LIBDIR_DEFAULT "lib64")
endif()
endif()
endif()
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
endif()
#-----------------------------------------------------------------------------
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
# the cache and store the defaults in local variables if the cache values are
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
if(NOT CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
endif()
if(NOT CMAKE_INSTALL_INFODIR)
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
endif()
if(NOT CMAKE_INSTALL_LOCALEDIR)
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
endif()
if(NOT CMAKE_INSTALL_MANDIR)
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
endif()
if(NOT CMAKE_INSTALL_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
endif()
#-----------------------------------------------------------------------------
mark_as_advanced(
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_DOCDIR
)
# Result directories
#
foreach(dir
BINDIR
SBINDIR
LIBEXECDIR
SYSCONFDIR
SHAREDSTATEDIR
LOCALSTATEDIR
LIBDIR
INCLUDEDIR
OLDINCLUDEDIR
DATAROOTDIR
DATADIR
INFODIR
LOCALEDIR
MANDIR
DOCDIR
)
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
else()
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
endif()
endforeach()

View File

@@ -0,0 +1,29 @@
macro(simgear_component_common name includePath sourcesList sources headers)
set(fc${sourcesList} ${name})
set(fh${sourcesList} ${name})
foreach(s ${sources})
set_property(GLOBAL
APPEND PROPERTY ${sourcesList} "${CMAKE_CURRENT_SOURCE_DIR}/${s}")
set(fc${sourcesList} "${fc${sourcesList}}#${CMAKE_CURRENT_SOURCE_DIR}/${s}")
endforeach()
foreach(h ${headers})
set_property(GLOBAL
APPEND PROPERTY PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/${h}")
set(fh${sourcesList} "${fh${sourcesList}}#${CMAKE_CURRENT_SOURCE_DIR}/${h}")
endforeach()
set_property(GLOBAL APPEND PROPERTY FG_GROUPS_${sourcesList}_C "${fc${sourcesList}}@")
set_property(GLOBAL APPEND PROPERTY FG_GROUPS_${sourcesList}_H "${fh${sourcesList}}@")
install (FILES ${headers} DESTINATION include/simgear/${includePath})
endmacro()
function(simgear_component name includePath sources headers)
simgear_component_common(${name} ${includePath} CORE_SOURCES "${sources}" "${headers}")
endfunction()
function(simgear_scene_component name includePath sources headers)
simgear_component_common(${name} ${includePath} SCENE_SOURCES "${sources}" "${headers}")
endfunction()

View File

@@ -0,0 +1,22 @@
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
ENDIF()
FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
STRING(REGEX REPLACE "\n" ";" files "${files}")
FOREACH(file ${files})
MESSAGE(STATUS "Uninstalling \"${file}\"")
IF(EXISTS "${file}")
EXEC_PROGRAM(
"@CMAKE_COMMAND@" ARGS "-E remove \"${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
IF(NOT "${rm_retval}" STREQUAL 0)
MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"")
ENDIF()
ELSE()
MESSAGE(STATUS "File \"${file}\" does not exist.")
ENDIF()
ENDFOREACH()

View File

@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -464,7 +464,7 @@ convey the exclusion of warranty; and each file should have at least the
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Also add information on how to contact you by electronic and paper mail.

12243
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -22,7 +22,7 @@ PROJECT_NAME = SimGear
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = 0.3.7
PROJECT_NUMBER = 2.11.0
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -56,7 +56,7 @@ EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = NO
EXTRACT_STATIC = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
@@ -303,16 +303,19 @@ INPUT = \
simgear/compiler.h \
simgear/constants.h \
simgear/debug \
simgear/environment \
simgear/ephemeris \
simgear/io \
simgear/magvar \
simgear/math \
simgear/misc \
simgear/nasal \
simgear/props \
simgear/route \
simgear/scene \
simgear/screen \
simgear/serial \
simgear/structure \
simgear/sg_inlines.h \
simgear/sg_traits.hxx \
simgear/sound \

56
INSTALL Normal file
View File

@@ -0,0 +1,56 @@
How to build SimGear
====================
SimGear uses the CMake build system to generate a platform-specific
build environment. CMake reads the CMakeLists.txt files that you'll
find throughout the source directories, checks for installed
dependencies and then generates the appropriate build system.
If you don't already have CMake installed on your system you can grab
it from http://www.cmake.org, use version 2.6.4 or later.
Under unices (i.e. Linux, Solaris, Free-BSD, HP-Ux, OSX) use the cmake
or ccmake command-line utils. Preferably, create an out-of-source
build directory and run cmake or ccmake from there. The advantage to
this approach is that the temporary files created by CMake won't
clutter the source directory, and also makes it possible to have
multiple independent build targets by creating multiple build
directories. In a directory alongside the SimGear source directory
use:
mkdir sgbuild
cd sgbuild
cmake ../simgear -DCMAKE_BUILD_TYPE=Release
make
sudo make install
Build Dependencies
==================
SimGear depends on a number of 3rd party libraries, the most notable
being:
* OpenSceneGraph (OSG) - see README.OSG
* zlib compression library - see README.zlib
* Open Audio Library (OpenAL) - see README.OpenAL
* Subversion Client Library (optional dependency)
Further information
===================
* README.cmake
for more detailed CMake instructions
* README.msvc
in the FlightGear source package for more Windows-specific instructions
* FlightGear Wiki
http://wiki.flightgear.org/Building_Flightgear
* FlightGear Forums
For help on building see: http://www.flightgear.org/forums
=> Support/Compiling
* FlightGear Mailing lists
http://wiki.flightgear.org/index.php/Mailing_list

View File

@@ -1,20 +0,0 @@
EXTRA_DIST = \
acinclude.m4 \
autogen.sh \
DoxygenMain.cxx \
README.MSVC \
README.zlib \
SimGear.dsp \
SimGear.dsw
SUBDIRS = src-libs simgear
dist-hook:
(cd $(top_srcdir); $(HOME)/Projects/FlightGear-0.9/admin/am2dsp.pl)
#
# Rule to build RPM distribution package
#
rpm: dist
rpm -ta $(PACKAGE)-$(VERSION).tar.gz

108
NEWS
View File

@@ -1,3 +1,95 @@
Version 1.9.0
* Thu Dec 18 15:12:15 CST 2008
Version 1.8.6
* Mon Dec 1 14:02:47 CST 2008
Version 1.8.5
* October 30, 2008 (source code snapshot release)
New in 0.3.10
* April 5, 2006
* Add a small accessor function to expose local timezone offset.
* Improved exception handling and made output more helpful in various places.
* Better pbuffer runtime detection.
* Add directory creation capability to file/path library.
* Added a basic reference counting class to improve robustness of
memory management in places. Use this for all scenegraph
references, sgmaterial references, sgmatmodel references, and
sgsoundsample references.
* Add support for point sprites.
* Updates to rain cone rendering.
* Add a new vector library and integrate that with improved coordinate
system conversion code.
* Mutex locking and cleanup improvements in the threading abstraction
library.
* Add MacOS RenderTexture support.
* Add a Nasal based io libarary that is not activated by default.
* Added a set of MS-VC8 project files.
* Various platform related bug fixes.
* Various compiler related bug/warning fixes.
* Clean up some things that triggered valgrind warnings.
* Fix a Nasal cmp() bug.
* Removed ancient version of zlib from distribution.
New in 0.3.9
* November 17, 2005
* Add support for OpenAL 1.1 (with a separate alut library.)
* Add support for volumetric shadows. Aircraft can cast shadows on themselves
as well as onto the ground (by Harald Johnsen.)
* New 3d volumetric clouds by Harald Johnsen (along with several rounds of
followup fixes and improvements.)
* Remove Mark Harris's old 3d clouds because they were never properly
integrated. And we now have new 3d clouds.
* Add support for seasonal textures (with a set of winter textures added
to FlightGear.)
* Updated Nasal scripting system. Adds several new syntax convenience
features, fixes parser bugs, fixes several internal bugs.
* Our 3d cockpit jitter problem is fixed (woohoo!)
* Add code to support rendering to a texture.
* Allow "tip" popups to pop themselves down after the appropriate
timeout, even if the sim time is paused.
* Various low model level animation fixes and additions ... color,
transparency, 'chrome' effects, randomized spin, etc.
* Create our own portable stdint.h implementation.
* Fixed several memory leaks.
* removeChildren() added to the property system.
* Fix many cases of 'const'.
* Fixes for cygwin, solaris/sun, Mac OS X, MSVC, gcc-3.4.x.
New in 0.3.8
* January 18, 2005
* Configure script does a sanity check for the existence of openal.
* Better pthreads detection for FreeBSD.
* Abstract out the location of gl.h, glu.h, and glut.h so we can more
easily support MacOS which puts these in an oddball location.
* Added two new debug output types for instrumentation and systems.
* Add a name parameter to the waypoint class for supporting a route
manager in the flightgear gps module.
* Make display list usage optional.
* Event manager: specifying a zero delay will force event execution in
the next frame rather than entering an infinite loop.
* gcc-4.0 fix.
* Fixes to property tree loading and saving.
* Make volume inaudible at startup.
* Solaris fixes.
* For low density cloud coverage, blend the layer to nothing as we pass
through instead of fully engulfing the aircraft in the cloud.
* Add several new capabilities to the texture management code for building
normal maps and doing some simple on-the-fly effects on textures.
* Better error message for sound problems.
* Add support for binding a thread to a specific CPU.
New in 0.3.7
* October 12, 2004
@@ -33,7 +125,7 @@ New in 0.3.5
* Support VASI/PAPI lights correctly.
* Fixes to cloud animation.
* Updates to sky dome coloring as well as sun/moon coloring.
* Vary environment lighting with visibility (subtlely.)
* Vary environment lighting with visibility (subtlety.)
* Support control of alpha test in model animation.
* Complete rewrite of the event manager.
* Updates to low level socket code to make it more flexible.
@@ -84,7 +176,7 @@ New in 0.3.2
management, basic model and model animation management, sky
rendering, and low level loaders for the "TerraGear" tile object format.
* Removed support of the flat shaded and non-textured material
property varients. You can still do these things, but extra states
property variants. You can still do these things, but extra states
are no longer set up automatically.
* Removed 3d clouds from the default build ... these need a maintainer
or better yet, a complete plib-based rewrite.
@@ -129,7 +221,7 @@ New in 0.2.0
* Removed efence support (in favor of valgrind.)
* Added a javascript interpreter.
* SGSocket reimplimented on top of plib/net libs.
* SGSocket reimplemented on top of plib/net libs.
* Added a new random number generation algorithm.
* Total rewrite of the strutils package.
@@ -139,7 +231,7 @@ New in 0.2.0
* Mac OS X fixes.
* Irix fixes.
* Code clean ups to remove warning messages.
* Optimizations in sg_binobj to reduce the amout of memory copying
* Optimizations in sg_binobj to reduce the amount of memory copying
needed when loading a binobj format file.
* Fixed a couple places where variables could be used before they were
initialized.
@@ -159,7 +251,7 @@ New in 0.0.18
* Upgrade to metakit-2.4.2-32.tar.gz (latest upstream release)
* Added support for point objects in the scenery file format.
* Additions to the binary file format to make it *much* more flexible.
For each major primative type: points, triangles, fans, and strips, you
For each major primitive type: points, triangles, fans, and strips, you
can specify an index list of vertices, normals, colors, and texture
coordinates. You can skip any of these you like to save on space.
* Added support for new file features in the binary -> ascii scenery file
@@ -210,7 +302,7 @@ New in 0.0.17pre1
New in 0.0.16
* July 12, 2001
* Various changes to the property manager implimentation to better support
* Various changes to the property manager implementation to better support
dumping out the desired portions of the property tree to file.
* Don't compile the metakit demos by default (causes problems for Irix)'
* Other various tweaks for Irix.
@@ -253,7 +345,7 @@ New in 0.0.15
read/write routines.
* Added doxygen comments for all public interface code. Documentation
can be accessed via the SimGear web page.
* Many FG -> SG name space changes for better consistancy throughout
* Many FG -> SG name space changes for better consistency throughout
this package.
* Added property aliases, repeated name tags, and a general xml
inclusion facilities. Many other property manager clean ups
@@ -344,4 +436,4 @@ New in 0.0.4
New in 0.0.3
* Release that conincides with FlightGear-0.7.2
* Release that coincides with FlightGear-0.7.2

16
README
View File

@@ -1 +1,15 @@
[ Nothing here at this time. ]
SimGear - Simulator Construction Tools
======================================
http://www.flightgear.org
SimGear is a set of open-source libraries designed to be used as building
blocks for quickly assembling 3d simulations, games, and visualization
applications.
SimGear is developed by the FlightGear project and also provides the base
for the FlightGear Flight Simulator.
Source code for SimGear is released under the GNU Library General Public
License (LGPL) - see COPYING for license details.
See INSTALL file for help on building SimGear.

View File

@@ -1,24 +0,0 @@
This document describes how to build SimGear using the supplied workspace and
project files.
Unpack the SimGear source file into your work directory. This creates a new
subdirectory called SimGear-X.Y.Z. Rename this to SimGear. Before we can
build SimGear you must unpack and build the third party libraries metakit and
zlib. Sources for these are included in the SimGear/src-libs directory.
Unpack these into the top level SimGear directory. At this point your
directory structure should look something like this:
<work_dir>/
SimGear/
metakit-x.y.z/
simgear/
src-libs/
zlib-x.y.z/
Now open the SimGear workspace. This workspace file contains projects for
building metakit(mklib), SimGear and zlib. Select each project as the active
project and build all. Order is unimportant since there are no dependencies
between the projects.
The workspace and project files are generated by a perl script with extra
input from the am2dsp.cfg file.

26
README.OSG Normal file
View File

@@ -0,0 +1,26 @@
[This file is mirrored in both the FlightGear and SimGear packages.]
You *must* have OpenSceneGraph (OSG) installed to build this version of
FlightGear.
Notice that this version of SimGear/FlightGear requires at least OSG 3.0.0.
You can get the latest version of OSG from:
http://www.openscenegraph.org/
Build notes:
Unzip the file OpenSceneGraph-x.x.zip and install using the following
commands:
unzip OpenSceneGraph-x.x
cd OpenSceneGraph
ccmake .
[ While running ccmake: press 'c' to configure, press 'c' once more, and
then press 'g' to generate and exit ]
make
sudo make install

20
README.OpenAL Normal file
View File

@@ -0,0 +1,20 @@
[This file is mirrored in both the FlightGear and SimGear packages.]
You *must* have the development components of OpenAL installed on your system
to build FlightGear!" You can get a copy here:
http://connect.creativelabs.com/openal/default.aspx
Build notes:
You can download a versioned release of the openal library from
http://www.openal.org/downloads.html. Download the openal source,
release 0.0.8 (dated February 11, 2006) and run:
tar xjvf openal-soft-1.5.304.tar.bz2
cd openal-soft-1.5.304/
ccmake .
[ While running ccmake: press 'c' to configure, press 'c' once more, and
then press 'g' to generate and exit ]

161
README.cmake Normal file
View File

@@ -0,0 +1,161 @@
Getting started with CMake
==========================
(These instructions apply to Unix-like systems, including Cygwin and Mac. To
build using Visual Studio or some other IDE supported by CMake, most of the
information below still applies. Otherwise see
http://wiki.flightgear.org/Building_Flightgear for Windows specific build
instructions.)
Always compile in a separate directory to the code. For example, if the
code (eg, from Git) is at /home/curt/projects/simgear, you might create
/home/curt/projects/sgbuild. Change into the new directory, and run
cmake ../simgear
To generate standard Unix Makefiles in sgbuild.
Probably you want to specify an install prefix:
cmake ../simgear -DCMAKE_INSTALL_PREFIX=/usr
Note the install prefix is automatically searched for required libraries
and header files, so if you install OpenSceneGraph to the same prefix,
most configuration options are unnecessary.
If for some reason you have a dependency (or several) at a different prefix,
you can specify one or more via CMAKE_PREFIX_PATH:
cmake ../simgear -DCMAKE_PREFIX_PATH="/opt/local;/opt/fgfs"
(note the use of semi-colons to specify multiple prefix paths)
Standard prefixes are searched automatically (/usr, /usr/local, /opt/local)
Most dependencies also expose an environment variable to specify their
installation directory explicitly eg OSG_DIR. Any of the methods
described above will work, but specifying an INSTALL_PREFIX or PREFIX_PATH is
usually simpler.
By default, we select a release build. To create a debug build, use
cmake ../simgear -DCMAKE_BUILD_TYPE=Debug
(or MinSizeRel, or RelWithDbg)
Debug builds will automatically use corresponding debug builds of required
libraries, if they are available. For example you can install debug builds of
OpenSceneGraph, and a debug SimGear build will use them.
(Debug builds of libraries have the 'd' suffix by default - Release builds
have no additional suffix)
Note most IDE projects (eg Xcode and Visual Studio) support building all the
build types from the same project, so you can omit the CMAKE_BUILD_TYPE option
when running cmake, and simply pick the build configuration as normal in the
IDE.
It's common to have several build directories with different build
configurations, eg
/home/curt/projects/simgear (the git clone)
/home/curt/projects/sgdebug
/home/curt/projects/sgrelease
/home/curt/projects/sg-with-svn-osg
To set an optional feature, do
cmake ../simgear -DFEATURE_NAME=ON
(or 'OFF' to disable )
To see the variables that can be configured / are currently defined, you can
run one of the GUI front ends, or the following command:
cmake ../simgear -L
Add 'A' to see all the options (including advanced options), or 'H' to see
the help for each option (similar to running configure --help under autoconf):
cmake ../simgear -LH
Build Targets
=============
For a Unix makefile build, 'make dist', 'make uninstall' and 'make test' are
all available and should work as expected. 'make clean' is also as normal,
but there is *no* 'make distclean' target. The equivalent is to completely
remove your build directory, and start with a fresh one.
Adding new files to the build
Add source files to the SOURCES list, and headers to the HEADERS list. Note
technically you only need to add source files, but omitting headers confuses
project generation and distribution / packaging targets.
For target conditional files, you can append to the SOURCES or HEADERS lists
inside an if() test, for example:
if(APPLE)
list(APPEND SOURCES extraFile1.cxx extraFile2.cxx)
endif()
Setting include directories
In any CMakeList.txt, you can do the following:
include_directories(${PROJECT_SOURCE_DIR}/some/path)
For example, this can be done in particular subdirectory, or at the project
root, or an intermediate level.
Setting target specific compile flags, includes or defines
Use set_target_property(), for example
set_target_property(fgfs PROPERTIES
COMPILE_DEFINITIONS FOO BAR=1)
You can set a property on an individual source file:
set_property(SOURCE myfile.cxx PROPERTY COMPILE_FLAGS "-Wno-unsigned-compare")
Detecting Features / Libraries
For most standard libraries (Gtk, wxWidget, Python, GDAL, Qt, libXml, Boost),
cmake provides a standard helper. To see the available modules, run:
cmake --help-module-list
In the root CMakeLists file, use a statement like:
find_package(OpenGL REQUIRED)
Each package helper sets various variables such aaa_FOUND, aaa_INCLUDE_DIR,
and aaa_LIBRARY. Depending on the complexity of the package, these variables
might have different names (eg, OPENSCENEGRAPH_LIBRARIES).
If there's no standard helper for a library you need, find a similar one, copy
it to CMakeModules/FindABC.cmake, and modify the code to fit. Generally this
is pretty straightforward. The built-in modules reside in the Cmake 'share'
directory, eg /usr/share/cmake/modules on Unix systems.
Note libraries support by pkg-config can be handled directly, with no need
to create a custom FindABC helper.
Adding a new executable target
add_executable(myexecutable ${SOURCES} ${HEADERS})
target_link_libraries(myexecutable .... libraries ... )
install(TARGETS myexecutable RUNTIME DESTINATION bin)
(If the executable should not be installed, omit the final line above)
If you add an additional line
add_test(testname ${EXECUTABLE_OUTPUT_PATH}/myexecutable)
Then running 'make test' will run your executable as a unit test. The
executable should return either a success or failure result code.

View File

@@ -1,16 +0,0 @@
[This file is mirrored in both the FlightGear and SimGear packages.]
You *must* have plib version 1.6.0 or later installed on your system
to build FlightGear!" Flight Gear is no longer compatible with the
earlier versions of the library.
You can get the latest version of plib from:
http://plib.sourceforge.net
Build notes:
You should be able to just run "./configure" to configure the package
and use all of plib's defaults. Then run "make" followed by "make
install". By default, plib installs itself into /usr so if you don't
like this, be sure to specify an alternate prefix such as --prefix=/usr/local

View File

@@ -1,173 +1,8 @@
For your convenience and allowed by zlib's license terms:
http://www.gzip.org/zlib/zlib_license.html a copy of the zlib source
is bundled with SimGear in $(top_srcdir)/src-libs/. You must have
zlib installed before you can build SimGear.
zlib is prerequisite for compiling SimGear and FlightGear. You can fetch
the latest version of zlib from:
- Most linux distributions have a zlib package. For linux
developers, we recommend ysou install your distributions package
rather than building from source.
http://www.zlib.net
- Cygwin installs zlib automatically.
Most modern unix distributions (and cygwin) come with a version of zlib
already installed or available to install as a package.
- For developers on most other platforms, you will have to build
zlib from source and install it yourself. For your convenience a
tar ball of the zlib source is included with the simgear source
distribution. Untar the zlib source, and follow the included
build and installation instructions.
Once zlib is installed you can return to configuring and building
Simgear.
We now send you to the official zlib README ...
=============================================================================
zlib 1.1.4 is a general purpose data compression library. All the code
is thread safe. The data format used by the zlib library
is described by RFCs (Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
format) and rfc1952.txt (gzip format). These documents are also available in
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact jloup@gzip.org). A usage
example of the library is given in the file example.c which also tests that
the library is working correctly. Another example is given in the file
minigzip.c. The compression library itself is composed of all source files
except example.c and minigzip.c.
To compile all files and run the test program, follow the instructions
given at the top of Makefile. In short "make test; make install"
should work for most machines. For Unix: "./configure; make test; make install"
For MSDOS, use one of the special makefiles such as Makefile.msc.
For VMS, use Make_vms.com or descrip.mms.
Questions about zlib should be sent to <zlib@gzip.org>, or to
Gilles Vollant <info@winimage.com> for the Windows DLL version.
The zlib home page is http://www.zlib.org or http://www.gzip.org/zlib/
Before reporting a problem, please check this site to verify that
you have the latest version of zlib; otherwise get the latest version and
check whether the problem still exists or not.
PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html
before asking for help.
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available in
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
The changes made in version 1.1.4 are documented in the file ChangeLog.
The only changes made since 1.1.3 are bug corrections:
- ZFREE was repeated on same allocation on some error conditions.
This creates a security problem described in
http://www.zlib.org/advisory-2002-03-11.txt
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
- Avoid accesses before window for invalid distances with inflate window
less than 32K.
- force windowBits > 8 to avoid a bug in the encoder for a window size
of 256 bytes. (A complete fix will be available in 1.1.5).
The beta version 1.1.5beta includes many more changes. A new official
version 1.1.5 will be released as soon as extensive testing has been
completed on it.
Unsupported third party contributions are provided in directory "contrib".
A Java implementation of zlib is available in the Java Development Kit
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
See the zlib home page http://www.zlib.org for details.
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
is in the CPAN (Comprehensive Perl Archive Network) sites
http://www.cpan.org/modules/by-module/Compress/
A Python interface to zlib written by A.M. Kuchling <amk@magnet.com>
is available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com>
is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html
An experimental package to read and write files in .zip format,
written on top of zlib by Gilles Vollant <info@winimage.com>, is
available at http://www.winimage.com/zLibDll/unzip.html
and also in the contrib/minizip directory of zlib.
Notes for some targets:
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
The zlib DLL support was initially done by Alessandro Iacopetti and is
now maintained by Gilles Vollant <info@winimage.com>. Check the zlib DLL
home page at http://www.winimage.com/zLibDll
From Visual Basic, you can call the DLL functions which do not take
a structure as argument: compress, uncompress and all gz* functions.
See contrib/visual-basic.txt for more information, or get
http://www.tcfb.com/dowseware/cmp-z-it.zip
- For 64-bit Irix, deflate.c must be compiled without any optimization.
With -O, one libpng test fails. The test works in 32 bit mode (with
the -n32 compiler flag). The compiler bug has been reported to SGI.
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
it works when compiled with cc.
- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1
is necessary to get gzprintf working correctly. This is done by configure.
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works
with other compilers. Use "make test" to check your compiler.
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
- For Turbo C the small model is supported only with reduced performance to
avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
- For PalmOs, see http://www.cs.uit.no/~perm/PASTA/pilot/software.html
Per Harald Myrvang <perm@stud.cs.uit.no>
Acknowledgments:
The deflate format used by zlib was defined by Phil Katz. The deflate
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
people who reported problems and suggested various improvements in zlib;
they are too numerous to cite here.
Copyright notice:
(C) 1995-2002 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not*
receiving lengthy legal documents to sign. The sources are provided
for free but without warranty of any kind. The library has been
entirely written by Jean-loup Gailly and Mark Adler; it does not
include third-party code.
If you redistribute modified sources, we would appreciate that you include
in the file ChangeLog history information documenting your changes.

File diff suppressed because it is too large Load Diff

View File

@@ -1,53 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "SimGear"=".\SimGear.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "mklib"=".\SimGear\metakit-2.4.3\win\msvc60\mklib.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "zlib"=".\SimGear\zlib.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

1
TODO
View File

@@ -1 +0,0 @@
03/25/2001 - Resolve location of Sky dome implimentation documentation.

27
Thanks
View File

@@ -47,6 +47,18 @@ Jean-Francois Doue
http://www.animats.com/simpleppp/ftp/public_html/topics/developers.html
Melchior Franz
METAR parser and fetcher. "material" animation (based on Jim Wilsons's
"emission" animation). Debugging and extension of property listener
features. Addition of removeChildren.
Mathias Froehlich
Reworked and cleaned up large parts of the infrastructure, of math
files, animations and rendering in preparation of a transition to
the OSG library. Added new handlers for shared and referenced objects.
Bruce Finney <bfinney@gte.net>
MSVC5 compatibility.
@@ -71,6 +83,10 @@ Bruce Jackson of NASA <e.b.jackson@larc.nasa.gov>
http://dcb.larc.nasa.gov/www/DCBStaff/ebj/ebj.html
Maik Justus
Fixed an old bug in the SGPropertyNode class.
Richard Kaszeta <bofh@me.umn.edu>
Contributed screen buffer to ppm screen shot routine.
Rich has also helped in the early development of the Flight Gear "altitude
@@ -90,7 +106,12 @@ David Megginson <david@megginson.com>
SimGear property manager/registry
Curt Olson <curt@flightgear.org>
Tim Moore
Ported the (chrome) "shader" animation to OSG, and helped with porting
the "material" animation.
Curt Olson http://www.flightgear.org/~curt/
Curt is responsible for overall project and source code management.
He has his hands in many of the areas.
@@ -99,7 +120,7 @@ Petter Reinholdtsen <pere@games.no>
Incorporated the Gnu automake/autoconf system (with libtool).
This should streamline and standardize the build process for all
Unix-like platforms. It should have little effect on IDE type
environments since the don't use the Unix make system.
environments since these don't use the Unix make system.
Paul Schlyter <pausch@saaf.se>
@@ -175,7 +196,7 @@ NOTE:
----
THIS DOCUMENT WAS INITIALLY WRITTEN BY
Curt L. Olson <curt@flightgear.org>
Curt L. Olson <http://www.flightgear.org/~curt>
05 Jul 2000 Removed non-SimGear entries (CLO)

View File

@@ -1,415 +0,0 @@
dnl
dnl originally from ncftp 2.3.0
dnl added wi_EXTRA_PDIR and wi_ANSI_C
dnl $Id$
dnl
AC_DEFUN(wi_EXTRA_IDIR, [
incdir="$1"
if test -r $incdir ; then
case "$CPPFLAGS" in
*-I${incdir}*)
# echo " + already had $incdir" 1>&6
;;
*)
if test "$CPPFLAGS" = "" ; then
CPPFLAGS="-I$incdir"
else
CPPFLAGS="$CPPFLAGS -I$incdir"
fi
echo " + found $incdir" 1>&6
;;
esac
fi
])
dnl
dnl
dnl
dnl
AC_DEFUN(wi_EXTRA_LDIR, [
mylibdir="$1"
if test -r $mylibdir ; then
case "$LDFLAGS" in
*-L${mylibdir}*)
# echo " + already had $mylibdir" 1>&6
;;
*)
if test "$LDFLAGS" = "" ; then
LDFLAGS="-L$mylibdir"
else
LDFLAGS="$LDFLAGS -L$mylibdir"
fi
echo " + found $mylibdir" 1>&6
;;
esac
fi
])
dnl
dnl __FP__
dnl
dnl
AC_DEFUN(wi_EXTRA_PDIR, [
progdir="$1"
if test -r $progdir ; then
case "$PATH" in
*:${progdir}*)
# echo " + already had $progdir" 1>&6
;;
*${progdir}:*)
# echo " + already had $progdir" 1>&6
;;
*)
if test "$PATH" = "" ; then
PATH="$progdir"
else
PATH="$PATH:$progdir"
fi
echo " + found $progdir" 1>&6
;;
esac
fi
])
dnl
dnl
dnl If you want to also look for include and lib subdirectories in the
dnl $HOME tree, you supply "yes" as the first argument to this macro.
dnl
dnl If you want to look for subdirectories in include/lib directories,
dnl you pass the names in argument 3, otherwise pass a dash.
dnl
AC_DEFUN(wi_EXTRA_DIRS, [echo "checking for extra include and lib directories..." 1>&6
ifelse([$1], yes, [dnl
b1=`cd .. ; pwd`
b2=`cd ../.. ; pwd`
exdirs="$HOME $j $b1 $b2 $prefix $2"
],[dnl
exdirs="$prefix $2"
])
subexdirs="$3"
if test "$subexdirs" = "" ; then
subexdirs="-"
fi
for subexdir in $subexdirs ; do
if test "$subexdir" = "-" ; then
subexdir=""
else
subexdir="/$subexdir"
fi
for exdir in $exdirs ; do
if test "$exdir" != "/usr" || test "$subexdir" != ""; then
incdir="${exdir}/include${subexdir}"
wi_EXTRA_IDIR($incdir)
mylibdir="${exdir}/lib${subexdir}"
wi_EXTRA_LDIR($mylibdir)
progdir="${exdir}/bin${subexdir}"
wi_EXTRA_PDIR($progdir)
fi
done
done
])
dnl
dnl
dnl
AC_DEFUN(wi_HPUX_CFLAGS,
[AC_MSG_CHECKING(if HP-UX ansi C compiler flags are needed)
AC_REQUIRE([AC_PROG_CC])
os=`uname -s | tr '[A-Z]' '[a-z]'`
ac_cv_hpux_flags=no
if test "$os" = hp-ux ; then
if test "$ac_cv_prog_gcc" = yes ; then
if test "$CFLAGS" != "" ; then
# Shouldn't be in there.
CFLAGS=`echo "$CFLAGS" | sed 's/-Aa//g'`
fi
else
# If you're not using gcc, then you better have a cc/c89
# that is usable. If you have the barebones compiler, it
# won't work. The good compiler uses -Aa for the ANSI
# compatible stuff.
x=`echo $CFLAGS | grep 'Aa' 2>/dev/null`
if test "$x" = "" ; then
CFLAGS="$CFLAGS -Aa"
fi
ac_cv_hpux_flags=yes
fi
# Also add _HPUX_SOURCE to get the extended namespace.
x=`echo $CFLAGS | grep '_HPUX_SOURCE' 2>/dev/null`
if test "$x" = "" ; then
CFLAGS="$CFLAGS -D_HPUX_SOURCE"
fi
fi
AC_MSG_RESULT($ac_cv_hpux_flags)
])
dnl
dnl
dnl
AC_DEFUN(wi_CFLAGS, [AC_REQUIRE([AC_PROG_CC])
wi_HPUX_CFLAGS
if test "$CFLAGS" = "" ; then
CFLAGS="-O"
elif test "$ac_cv_prog_gcc" = "yes" ; then
case "$CFLAGS" in
*"-g -O"*)
#echo "using -g as default gcc CFLAGS" 1>&6
CFLAGS=`echo $CFLAGS | sed 's/-g\ -O/-O/'`
;;
*"-O -g"*)
# Leave the -g, but remove all -O options.
#echo "using -g as default gcc CFLAGS" 1>&6
CFLAGS=`echo $CFLAGS | sed 's/-O\ -g/-O/'`
;;
esac
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_PROTOTYPES, [
AC_MSG_CHECKING(if the compiler supports function prototypes)
AC_TRY_COMPILE(,[extern void exit(int status);],[wi_cv_prototypes=yes
AC_DEFINE(PROTOTYPES)],wi_cv_prototypes=no)
AC_MSG_RESULT($wi_cv_prototypes)
])
dnl
dnl
dnl
AC_DEFUN(wi_ANSI_C, [
AC_MSG_CHECKING(ANSI-style function definitions)
AC_TRY_COMPILE(,[int blubb(int x) { return 0; }],[wi_cv_ansi_funcs=yes
AC_DEFINE(ANSI_FUNCS)],wi_cv_ansi_funcs=no)
AC_MSG_RESULT($wi_cv_ansi_funcs)
])
dnl
dnl
dnl
AC_DEFUN(wi_HEADER_SYS_SELECT_H, [
# See if <sys/select.h> is includable after <sys/time.h>
if test "$ac_cv_header_sys_time_h" = no ; then
AC_CHECK_HEADERS(sys/time.h sys/select.h)
else
AC_CHECK_HEADERS(sys/select.h)
fi
if test "$ac_cv_header_sys_select_h" = yes ; then
AC_MSG_CHECKING([if <sys/select.h> is compatible with <sys/time.h>])
selecth=yes
if test "$ac_cv_header_sys_time_h" = yes ; then
AC_TRY_COMPILE([#include <sys/time.h>
#include <sys/select.h>],[
fd_set a;
struct timeval tmval;
tmval.tv_sec = 0;],selecth=yes,selecth=no)
if test "$selecth" = yes ; then
AC_DEFINE(CAN_USE_SYS_SELECT_H)
fi
fi
AC_MSG_RESULT($selecth)
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_LIB_RESOLV, [
# See if we could access two well-known sites without help of any special
# libraries, like resolv.
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
main()
{
struct hostent *hp1, *hp2;
int result;
hp1 = gethostbyname("gatekeeper.dec.com");
hp2 = gethostbyname("ftp.ncsa.uiuc.edu");
result = ((hp1 != (struct hostent *) 0) && (hp2 != (struct hostent *) 0));
exit(! result);
}],look_for_resolv=no,look_for_resolv=yes,look_for_resolv=yes)
AC_MSG_CHECKING([if we need to look for -lresolv])
AC_MSG_RESULT($look_for_resolv)
if test "$look_for_resolv" = yes ; then
AC_CHECK_LIB(resolv,main)
else
ac_cv_lib_resolv=no
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_LIB_NSL, [
AC_MSG_CHECKING(if we can use -lnsl)
ac_save_LIBS="$LIBS";
LIBS="$LIBS -lnsl";
AC_CACHE_VAL(r_cv_use_libnsl, [
AC_TRY_RUN(
main() { if (getpwuid(getuid())) exit(0); exit(-1); },
nc_cv_use_libnsl=yes, nc_cv_use_libnsl=no, nc_cv_use_libnsl=no)
])
if test "$nc_cv_use_libnsl" = "no"; then LIBS="$ac_save_LIBS"; fi
AC_MSG_RESULT($nc_cv_use_libnsl)
])dnl
dnl
dnl
dnl
AC_DEFUN(nc_PATH_PROG_ZCAT, [
AC_PATH_PROG(GZCAT,gzcat)
AC_PATH_PROG(ZCAT,zcat)
if test "x$GZCAT" = x ; then
if test "x$ZCAT" != x ; then
# See if zcat is really gzcat. gzcat has a --version option, regular
# zcat does not.
AC_MSG_CHECKING(if zcat is really gzcat in disguise)
if $ZCAT --version 2> /dev/null ; then
AC_DEFINE_UNQUOTED(GZCAT, "$ZCAT")
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
else
AC_DEFINE_UNQUOTED(GZCAT, "$GZCAT")
fi
if test "x$ZCAT" != x ; then
AC_DEFINE_UNQUOTED(ZCAT, "$ZCAT")
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_SYSV_EXTRA_DIRS, [
# Use System V because their curses extensions are required. This must
# be done early so we use the -I and -L in the library checks also.
# This is mostly a Solaris/SunOS hack. Note that doing this will also
# use all of the other System V libraries and headers.
AC_MSG_CHECKING(for alternative System V libraries)
if test -f /usr/5include/curses.h ; then
CPPFLAGS="$CPPFLAGS -I/usr/5include"
LDFLAGS="$LDFLAGS -L/usr/5lib"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_DEFINE_UNAME, [
# Get first 127 chars of all uname information. Some folks have
# way too much stuff there, so grab only the first 127.
unam=`uname -a 2>/dev/null | cut -c1-127`
if test "$unam" != "" ; then
AC_DEFINE_UNQUOTED(UNAME, "$unam")
fi
])
dnl
dnl
dnl
AC_DEFUN(wi_READLINE_WITH_NCURSES, [
# Readline and Ncurses could both define "backspace".
# Warn about this if we have both things in our definitions list.
if test "$ac_cv_lib_readline" = yes && test "$ac_cv_lib_ncurses" = yes ; then
AC_MSG_CHECKING(if readline and ncurses will link together)
j="$LIBS"
LIBS="-lreadline -lncurses"
AC_TRY_LINK(,[
readline("prompt");
endwin();
],k=yes,k=no)
if test "$k" = no ; then
AC_MSG_RESULT(no)
# Remove '-lreadline' from LIBS.
LIBS=`echo $j | sed s/-lreadline//g`
ac_cv_lib_readline=no
AC_WARN([The versions of GNU readline and ncurses you have installed on this system
can't be used together, because they use the same symbol, backspace. If
possible, recompile one of the libraries with -Dbackspace=back_space, then
re-run configure.])
else
AC_MSG_RESULT(yes)
LIBS="$j"
fi
fi
])
dnl
dnl
dnl
dnl AC_EXT_DAYLIGHT
dnl Check for an external variable daylight. Stolen from w3c-libwww.
AC_DEFUN(AC_EXT_DAYLIGHT,
[ AC_MSG_CHECKING(int daylight variable)
AC_TRY_COMPILE([#include <time.h>], [return daylight;],
have_daylight=yes,
have_daylight=no)
AC_MSG_RESULT($have_daylight)
])dnl
dnl AC_EXT_TIMEZONE
dnl Check for an external variable timezone. Stolen from tcl-8.0.
AC_DEFUN(AC_EXT_TIMEZONE,
[
#
# Its important to include time.h in this check, as some systems (like convex)
# have timezone functions, etc.
#
have_timezone=no
AC_MSG_CHECKING([long timezone variable])
AC_TRY_COMPILE([#include <time.h>],
[extern long timezone;
timezone += 1;
exit (0);],
[have_timezone=yes
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
#
# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
#
if test "$have_timezone" = no; then
AC_MSG_CHECKING([time_t timezone variable])
AC_TRY_COMPILE([#include <time.h>],
[extern time_t timezone;
timezone += 1;
exit (0);],
[have_timezone=yes
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
fi
])dnl
## AC_BZ_SET_COMPILER: Addition by Theodore Papadopoulo
## Patch by Jim McKelvey: change sed -e 's/ /@/g' to sed -e 's/ /@/'
AC_DEFUN(AC_SG_SET_COMPILER,
[cxxwith=`echo $1 | sed -e 's/ /@/'`
case "$cxxwith" in
*:*@*) # Full initialization syntax
CXX=`echo "$cxxwith" | sed -n -e 's/.*:\(.*\)@.*/\1/p'`
CXXFLAGS=`echo "$cxxwith" | sed -n -e 's/.*:.*@\(.*\)/\1/p'`
;;
*:*) # Simple initialization syntax
CXX=`echo "$cxxwith" | sed -n -e 's/.*:\(.*\)/\1/p'`
CXXFLAGS=$3
;;
*) # Default values
CXX=$2
CXXFLAGS=$3
CC="$2 --c"
## CFLAGS=
;;
esac])

View File

@@ -1,39 +0,0 @@
type = StaticLibrary,Multithreaded,
exclude_dir = threads
include_path = .
include_path = ..
include_path = .\SimGear
include_path = .\SimGear\metakit-2.4.3\include
include_path = ..\SimGear\zlib-1.1.4
define = HAVE_CONFIG_H
add_project = .\SimGear\metakit-2.4.3\win\msvc60\mklib.dsp,mklib
add_project = .\SimGear\zlib.dsp,zlib
# Rule to create simgear_config.h
add_source_file = SOURCE=.\simgear\simgear_config.h.vc5\
\
!IF "$(CFG)" == "SimGear - Win32 Release"\
\
# Begin Custom Build - Creating config.h\
InputPath=.\simgear\simgear_config.h.vc5\
\
".\simgear\simgear_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\
copy .\simgear\simgear_config.h.vc5 .\simgear\simgear_config.h\
\
# End Custom Build\
\
!ELSEIF "$(CFG)" == "SimGear - Win32 Debug"\
\
# Begin Custom Build - Creating config.h\
InputPath=.\simgear\simgear_config.h.vc5\
\
".\simgear\simgear_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\
copy .\simgear\simgear_config.h.vc5 .\simgear\simgear_config.h\
\
# End Custom Build\
\
!ENDIF\

View File

@@ -1,52 +0,0 @@
#!/bin/sh
OSTYPE=`uname -s`
MACHINE=`uname -m`
AUTO_MAKE_VERSION=`automake --version | head -1 | awk '{print $4}' | sed -e 's/\.\([0-9]*\).*/\1/'`
if test $AUTO_MAKE_VERSION -lt 15; then
echo ""
echo "You need to upgrade to automake version 1.5 or greater."
echo "Most distributions have packages available to install or you can"
echo "find the source for the most recent version at"
echo "ftp://ftp.gnu.org/gnu/automake"
exit 1
fi
echo "Host info: $OSTYPE $MACHINE"
echo -n " automake: `automake --version | head -1 | awk '{print $4}'`"
echo " ($AUTO_MAKE_VERSION)"
echo ""
echo "Running aclocal"
aclocal
echo "Running autoheader"
autoheader
if [ ! -e simgear/simgear_config.h.in ]; then
echo "ERROR: autoheader didn't create simgear/simgear_config.h.in!"
exit 1
fi
echo "Running automake --add-missing"
automake --add-missing
echo "Running autoconf"
autoconf
if [ ! -e configure ]; then
echo "ERROR: configure was not created!"
exit 1
fi
echo ""
echo "======================================"
if [ -f config.cache ]; then
echo "config.cache exists. Removing the config.cache file will force"
echo "the ./configure script to rerun all it's tests rather than using"
echo "the previously cached values."
echo ""
fi
echo "Now you are ready to run './configure'"
echo "======================================"

View File

@@ -1,464 +0,0 @@
dnl Process this file with autoget.sh to produce a working configure
dnl script.
dnl
dnl $Id$
AC_INIT
AC_CONFIG_SRCDIR([simgear/bucket/newbucket.cxx])
dnl Require at least automake 2.52
AC_PREREQ(2.52)
dnl Initialize the automake stuff
AM_INIT_AUTOMAKE(SimGear, 0.3.7)
dnl Specify KAI C++ compiler and flags.
dnl Borrowed with slight modification from blitz distribution.
AC_ARG_WITH(cxx,
[ --with-cxx=COMPILER[:name-flags] set options for COMPILER (KCC)],
[case "$withval" in
KCC*) # KAI C++ http://www.kai.com/
echo "Configuring for KAI C++"
AC_SG_SET_COMPILER($withval,"KCC","--restrict --strict_warnings")
CXX_OPTIMIZE_FLAGS=="+K3 -O3"
CXX_DEBUG_FLAGS="-g +K0"
;;
esac
])
echo CXX = $CXX
echo CC = $CC
dnl Checks for programs.
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PROG_LN_S
dnl set the $host variable based on local machine/os
AC_CANONICAL_HOST
dnl Used on the Irix platform
case "${host}" in
*-*-irix*)
if test "x$CXX" = "xCC" -o "x$CXX" = "xccache CC"; then
AR="$CXX -ar"
ARFLAGS="-o"
CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro740"
compatibility_DIR="compatibility"
MIPSpro_DIRS="MIPSpro740"
AC_MSG_CHECKING([for MIPSpro compiler version 7.4 or newer])
AC_TRY_RUN([
int main() {
if ( _COMPILER_VERSION < 740 ) {
return -1;
}
return 0;
}
], AC_MSG_RESULT(yes),
[ AC_MSG_RESULT(no)
CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro721"
MIPSpro_DIRS="$(MIPSpro_DIRS) MIPSpro721"
AC_MSG_WARN([Using our own subset of the STL headers])
], AC_MSG_RESULT(yes))
AC_SUBST(MIPSpro_DIRS)
fi
;;
*)
AR="ar"
ARFLAGS="cru"
compatibility_DIR=
;;
esac
AC_SUBST(AR)
AC_SUBST(ARFLAGS)
AC_SUBST(compatibility_DIR)
if echo $includedir | egrep "simgear$" > /dev/null; then
echo "includedir is" $includedir "libdir is" $libdir
else
includedir="${includedir}/simgear"
echo "includedir changed to" $includedir "libdir is" $libdir
fi
dnl set logging; default value of with_logging=yes
AC_ARG_WITH(logging, [ --with-logging Include logging output (default)])
if test "x$with_logging" = "xno" ; then
AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
fi
# Specify if we want to build with Norman's jpeg image server support.
# This requires libjpeg to be installed and available.
# Default to with_jpeg_server=no
JPEGLIB=''
AC_ARG_WITH(jpeg_factory, [ --with-jpeg-factory Include Norman's jpeg image factory support code])
if test "x$with_jpeg_factory" = "xyes" ; then
echo "Building with Norman's jpeg image factory support"
AC_CHECK_LIB(jpeg, jpeg_start_compress)
if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
echo
echo "In order to build the jpeg factory code you need libjpeg installed."
echo "otherwise please configure with the --with-jpeg-sever=no option"
echo
echo "libjpeg is available at :"
echo " ftp://ftp.uu.net in the directory graphics/jpeg"
exit 1
fi
else
echo "Building without Norman's jpeg image server support"
fi
AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
# specify the plib location
AC_ARG_WITH(plib, [ --with-plib=PREFIX Specify the prefix path to plib])
if test "x$with_plib" != "x" ; then
echo "plib prefix is $with_plib"
EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
fi
dnl Determine an extra directories to add to include/lib search paths
case "${host}" in
*-apple-darwin* | *-*-mingw32*)
echo no EXTRA_DIRS for $host
;;
*)
if test -d /usr/X11R6 ; then
EXTRA_DIR1="/usr/X11R6"
fi
if test -d /opt/X11R6 ; then
EXTRA_DIR2="/opt/X11R6"
fi
EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
;;
esac
wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
dnl Using AM_CONDITIONAL is a step out of the protected little
dnl automake fold so it is potentially dangerous. But, we are
dnl beginning to run into cases where the standard checks are not
dnl enough. AM_CONDITIONALS are then referenced to conditionally
dnl build a Makefile.in from a Makefile.am which lets us define custom
dnl includes, compile alternative source files, etc.
dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
dnl to use it if it is.
case "${host}" in
*-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
echo no fancy X11 check
;;
*)
AC_PATH_XTRA
;;
esac
dnl Checks for libraries.
dnl Thread related checks
AC_CHECK_HEADER(pthread.h)
AC_CHECK_LIB(pthread, pthread_exit)
if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
CXXFLAGS="$CXXFLAGS -D_REENTRANT"
CFLAGS="$CFLAGS -D_REENTRANT"
fi
if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
dnl FreeBSD: System has pthread.h, but -lpthread library check
dnl fails. See if we need -pthread instead of -lpthread and look
dnl for the functions in libc_r.
save_CXXFLAGS="$CXXFLAGS"
save_CFLAGS="$CFLAGS"
CXXFLAGS="-pthread $CXXFLAGS"
CFLAGS="-pthread $FLAGS"
save_LIBS=$LIBS
AC_CHECK_LIB(c_r, pthread_exit)
if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
CXXFLAGS=$save_CXXFLAGS
CFLAGS=$save_CFLAGS
else
dnl This is cheating a bit. pthread_exit comes with using -pthread, not
-lpthread
ac_cv_lib_pthread_pthread_exit="yes"
fi
LIBS=$save_LIBS
fi
AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes")
thread_LIBS="$LIBS"
LIBS=""
dnl search for network related libraries
AC_SEARCH_LIBS(inet_addr, xnet)
AC_SEARCH_LIBS(socket, socket)
network_LIBS="$LIBS"
LIBS=""
dnl check for some default libraries
AC_SEARCH_LIBS(cos, m)
base_LIBS="$LIBS"
dnl check for OpenGL related libraries
case "${host}" in
*-*-cygwin* | *-*-mingw32*)
dnl CygWin under Windoze.
echo Win32 specific hacks...
AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
LIBS="$LIBS -lglu32 -lopengl32"
LIBS="$LIBS -luser32 -lgdi32 -lwinmm"
dnl add -lwsock32 for mingwin
case "${host}" in
*-*-mingw32*)
base_LIBS="$base_LIBS -lws2_32"
;;
esac
echo "Will link apps with $LIBS"
;;
*-apple-darwin*)
dnl Mac OS X
LIBS="$LIBS -framework OpenGL -framework Carbon -lobjc"
;;
*)
dnl X-Windows based machines
AC_SEARCH_LIBS(XCreateWindow, X11)
AC_SEARCH_LIBS(XShmCreateImage, Xext)
AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
AC_SEARCH_LIBS(IceOpenConnection, ICE)
AC_SEARCH_LIBS(SmcOpenConnection, SM)
AC_SEARCH_LIBS(XtMalloc, Xt)
AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
dnl if GLcore found, then also check for GL
AC_SEARCH_LIBS(glXCreateContext, GL)
fi
dnl if using mesa, check for xmesa.h
if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
AC_CHECK_HEADER(GL/fxmesa.h)
if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
AC_DEFINE([XMESA], 1, [Define for fxmesa])
AC_DEFINE([FX], 1, [Define for fxmesa])
fi
fi
AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
;;
esac
opengl_LIBS="$LIBS"
LIBS="$base_LIBS"
dnl check for OpenAL libraries
case "${host}" in
*-*-cygwin* | *-*-mingw32*)
dnl CygWin under Windoze.
AC_SEARCH_LIBS(alGenBuffers, openal32)
AC_SEARCH_LIBS(alutInit, [ openal32 ALut ] )
LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
;;
*-apple-darwin*)
dnl Mac OS X
LIBS="$LIBS -framework IOKit -framework OpenAL"
;;
*)
dnl default unix style machines
AC_SEARCH_LIBS(alGenBuffers, openal)
;;
esac
openal_LIBS="$LIBS"
LIBS="$base_LIBS"
AC_SUBST(base_LIBS)
AC_SUBST(openal_LIBS)
AC_SUBST(opengl_LIBS)
AC_SUBST(thread_LIBS)
AC_SUBST(network_LIBS)
dnl Check for MS Windows environment
AC_CHECK_HEADER(windows.h)
AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
# The following are C++ items that need to be tested for with the c++
# compiler
AC_LANG_PUSH(C++)
dnl Check for "plib" without which we cannot go on
AC_CHECK_HEADER(plib/ul.h)
if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
echo
echo "You *must* have the plib library installed on your system to build"
echo "SimGear!"
echo
echo "Please see README.plib for more details."
echo
echo "configure aborted."
exit
fi
AC_MSG_CHECKING([for plib 1.6.0 or newer])
AC_TRY_RUN([
#include <plib/ul.h>
#define MIN_PLIB_VERSION 160
int main() {
int major, minor, micro;
if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
return -1;
}
return 0;
}
],
AC_MSG_RESULT(yes),
[AC_MSG_RESULT(wrong version);
AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
AC_MSG_RESULT(yes)
)
LIBS="$saved_LIBS"
AC_LANG_POP
dnl Check for system installed zlib
AC_CHECK_HEADER(zlib.h)
if test "x$ac_cv_header_zlib_h" != "xyes"; then
echo
echo "zlib library not found."
echo
echo "If your OS does not provide an installable package for zlib"
echo "you will have to compile and install it first yourself. A copy"
echo "of zlib-1.1.4.tar.gz is included with SimGear. You will"
echo "have to untar this source code, and follow its included instructions"
echo "to compile and install on your system."
echo
echo "configure aborted."
echo
fi
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS( \
fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
sys/stat.h sys/time.h sys/timeb.h unistd.h values.h )
if test "x$ac_cv_header_stdint_h" = "xyes"; then
AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
fi
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
dnl Checks for library functions.
old_LIBS=$LIBS
LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS( [ \
ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
random drand48 setitimer getitimer signal GetLocalTime rint getrusage ] )
LIBS=$old_LIBS
AM_CONFIG_HEADER(simgear/simgear_config.h)
AC_CONFIG_FILES([ \
Makefile \
SimGear.spec \
src-libs/Makefile \
simgear/Makefile \
simgear/version.h \
simgear/compatibility/Makefile \
simgear/compatibility/MIPSpro721/Makefile \
simgear/compatibility/MIPSpro740/Makefile \
simgear/bucket/Makefile \
simgear/debug/Makefile \
simgear/ephemeris/Makefile \
simgear/io/Makefile \
simgear/magvar/Makefile \
simgear/math/Makefile \
simgear/environment/Makefile \
simgear/misc/Makefile \
simgear/nasal/Makefile \
simgear/props/Makefile \
simgear/route/Makefile \
simgear/scene/Makefile \
simgear/scene/fgsg/Makefile \
simgear/scene/material/Makefile \
simgear/scene/model/Makefile \
simgear/scene/sky/Makefile \
simgear/scene/sky/clouds3d/Makefile \
simgear/scene/tgdb/Makefile \
simgear/screen/Makefile \
simgear/serial/Makefile \
simgear/sound/Makefile \
simgear/structure/Makefile \
simgear/threads/Makefile \
simgear/timing/Makefile \
simgear/xgl/Makefile \
simgear/xml/Makefile \
])
AC_OUTPUT
echo ""
echo "Configure Summary"
echo "================="
echo "Prefix: $prefix"
if test "x$with_logging" != "x"; then
echo "Debug messages: $with_logging"
else
echo "Debug messages: yes"
fi
echo -n "Automake version: "
automake --version | head -1
if test "x$with_jpeg_factory" = "xyes"; then
echo "With JPEG Factory support"
else
echo "Without JPEG Factory support"
fi
if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
echo "Threads: pthread lib found."
else
echo "Threads: no threads (pthread lib not found.)"
fi

13
package/RedHat/README Normal file
View File

@@ -0,0 +1,13 @@
Building a SimGear RPM package for Red Hat
Please see the "package/openSUSE" directory for an
example how to build a SimGear RPM package with
shared SimGear libraries.
You may need to adapt the names (exact spelling) of some
of the package dependencies in the openSUSE RPM spec,
since these may slightly differ for Red Hat.
(If you have a working and tested Red Hat RPM spec,
you're welcome to contribute it to this project.)

23
package/openSUSE/README Normal file
View File

@@ -0,0 +1,23 @@
Building a SimGear RPM package for openSUSE
(Last tested with openSUSE 11.4+12.1)
This directory contains the files which, along with
the source code tar files, can be used to build
an RPM package targeted at an openSUSE Linux system.
To build SimGear from source do the following:
1. obtain simgear-2.8.0.tar.bz2 (adapt version if
necessary) and copy it into ~/rpmbuild/SOURCES
2. look in the BuildRequires section of SimGear.spec
and check that all the packages referred to are
installed (note, some of these packages may be part
of openSUSE's "games" repository).
3. run 'rpmbuild -ba simgear.spec' and find the RPM
build result in ~/rpmbuild/RPMS
That's all!

View File

@@ -0,0 +1,63 @@
Summary: Simulator Construction Gear
Name: SimGear
Version: 2.8.0
Release: 1
License: LGPL
URL: http://www.flightgear.org
Group: Amusements/Games/3D/Simulation
Source: http://mirrors.ibiblio.org/pub/mirrors/flightgear/ftp/Source/simgear-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gcc, gcc-c++, cmake
BuildRequires: libopenal1-soft, openal-soft
BuildRequires: libOpenSceneGraph-devel >= 3.0
BuildRequires: zlib, zlib-devel
BuildRequires: libjpeg62, libjpeg62-devel
BuildRequires: boost-devel >= 1.37
BuildRequires: subversion-devel, libapr1-devel
Requires: OpenSceneGraph-plugins >= 3.0
%description
This package contains a tools and libraries useful for constructing
simulation and visualization applications such as FlightGear or TerraGear.
%package devel
Group: Development/Libraries/Other
Summary: Development header files for SimGear
Requires: SimGear = %{version}
%description devel
Development headers and libraries for building applications against SimGear.
%prep
%setup -T -q -n simgear-%{version} -b 0
%build
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"
# build SHARED simgear libraries
cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} -DSIMGEAR_SHARED:BOOL=ON -DENABLE_TESTS:BOOL=OFF -DJPEG_FACTORY:BOOL=ON
make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr (-, root, root, -)
%doc AUTHORS COPYING ChangeLog NEWS README
%{_libdir}/libSimGear*.so.*
%files devel
%defattr(-,root,root,-)
%dir %{_includedir}/simgear
%{_includedir}/simgear/*
%{_libdir}/libSimGear*.so
%changelog
* Mon Jul 02 2012 thorstenb@flightgear.org
- Initial version

View File

@@ -1,8 +0,0 @@
Makefile
Makefile.in
simgear_config.h
simgear_config.h.in
stamp-h
stamp-h.in
stamp-h1
version.h

2
simgear/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
simgear_config.h
version.h

143
simgear/CMakeLists.txt Normal file
View File

@@ -0,0 +1,143 @@
file(WRITE ${PROJECT_BINARY_DIR}/simgear/version.h "#define SIMGEAR_VERSION ${SIMGEAR_VERSION}")
foreach( mylibfolder
bucket
bvh
debug
ephemeris
io
magvar
math
misc
nasal
nasal/cppbind
props
serial
structure
threads
timing
xml
package
)
add_subdirectory(${mylibfolder})
endforeach( mylibfolder )
if(NOT SIMGEAR_HEADLESS)
add_subdirectory(canvas)
add_subdirectory(environment)
add_subdirectory(screen)
add_subdirectory(scene)
add_subdirectory(sound)
endif(NOT SIMGEAR_HEADLESS)
if(ENABLE_RTI)
add_subdirectory(hla)
endif(ENABLE_RTI)
set(HEADERS compiler.h constants.h sg_inlines.h ${PROJECT_BINARY_DIR}/simgear/version.h)
install (FILES ${HEADERS} DESTINATION include/simgear/)
get_property(coreSources GLOBAL PROPERTY CORE_SOURCES)
get_property(sceneSources GLOBAL PROPERTY SCENE_SOURCES)
get_property(publicHeaders GLOBAL PROPERTY PUBLIC_HEADERS)
get_property(localExpatSources GLOBAL PROPERTY LOCAL_EXPAT_SOURCES)
if(SIMGEAR_SHARED)
message(STATUS "Library building mode: SHARED LIBRARIES")
add_library(SimGearCore SHARED ${coreSources} ${localExpatSources})
set_property(TARGET SimGearCore PROPERTY LINKER_LANGUAGE CXX)
set_property(TARGET SimGearCore PROPERTY VERSION ${SIMGEAR_VERSION})
set_property(TARGET SimGearCore PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
install(TARGETS SimGearCore EXPORT SimGearCoreConfig LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(EXPORT SimGearCoreConfig DESTINATION share/SimGearCore)
if(NOT SIMGEAR_HEADLESS)
add_library(SimGearScene SHARED ${sceneSources})
set_property(TARGET SimGearScene PROPERTY LINKER_LANGUAGE CXX)
set_property(TARGET SimGearScene PROPERTY VERSION ${SIMGEAR_VERSION})
set_property(TARGET SimGearScene PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
# EXPORT SimGearSceneConfig
install(TARGETS SimGearScene LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
# install(EXPORT SimGearSceneConfig DESTINATION share/SimGearScene)
endif()
else()
message(STATUS "Library building mode: STATIC LIBRARIES")
get_property(FG_GROUPS_CORE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_C)
string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_C} )
foreach(g ${groups})
string(REPLACE "#" ";" g2 ${g})
list(GET g2 0 name)
list(REMOVE_AT g2 0)
source_group("${name}\\Sources" FILES ${g2})
endforeach()
get_property(FG_GROUPS_CORE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_H)
string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_H} )
foreach(g ${groups})
string(REPLACE "#" ";" g2 ${g})
list(GET g2 0 name)
list(REMOVE_AT g2 0)
source_group("${name}\\Headers" FILES ${g2})
endforeach()
add_library(SimGearCore STATIC ${coreSources} ${localExpatSources})
install(TARGETS SimGearCore ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(NOT SIMGEAR_HEADLESS)
get_property(FG_GROUPS_SCENE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_C)
string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_C} )
foreach(g ${groups})
string(REPLACE "#" ";" g2 ${g})
list(GET g2 0 name)
list(REMOVE_AT g2 0)
source_group("${name}\\Sources" FILES ${g2})
endforeach()
get_property(FG_GROUPS_SCENE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_H)
string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_H} )
foreach(g ${groups})
string(REPLACE "#" ";" g2 ${g})
list(GET g2 0 name)
list(REMOVE_AT g2 0)
source_group("${name}\\Headers" FILES ${g2})
endforeach()
add_library(SimGearScene STATIC ${sceneSources})
install(TARGETS SimGearScene ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(NOT SIMGEAR_HEADLESS)
endif(SIMGEAR_SHARED)
target_link_libraries(SimGearCore
${ZLIB_LIBRARY}
${RT_LIBRARY}
${DL_LIBRARY}
${EXPAT_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${CORE_SERVICES_LIBRARY})
if(NOT SIMGEAR_HEADLESS)
target_link_libraries(SimGearScene
SimGearCore
${ZLIB_LIBRARY}
${OPENSCENEGRAPH_LIBRARIES}
${OPENAL_LIBRARY}
${OPENGL_LIBRARY}
${JPEG_LIBRARY})
endif()
if(ENABLE_RTI)
# Ugly first aid to make hla compile agian
set_property(SOURCE hla/RTI13InteractionClass.cxx hla/RTI13ObjectClass.cxx
hla/RTI13ObjectInstance.cxx hla/RTI13Federate.cxx
hla/RTI13FederateFactory.cxx
APPEND PROPERTY COMPILE_FLAGS "-I${RTI_INCLUDE_DIR}")
endif(ENABLE_RTI)

View File

@@ -1,38 +0,0 @@
if HAVE_THREADS
SGTHREAD_DIR = threads
else
SGTHREAD_DIR =
endif
# METAR_DIRS =
METAR_DIRS = environment
EXTRA_DIST = simgear_config.h.vc5 version.h.in
include_HEADERS = \
compiler.h constants.h sg_inlines.h sg_traits.hxx version.h
SUBDIRS = \
$(compatibility_DIR) \
xml \
debug \
misc \
structure \
bucket \
ephemeris \
io \
magvar \
math \
$(METAR_DIRS) \
nasal \
props \
route \
scene \
screen \
serial \
sound \
$(SGTHREAD_DIR) \
timing \
xgl
DIST_SUBDIRS = $(SUBDIRS) compatibility threads

View File

@@ -1,3 +0,0 @@
.deps
Makefile
Makefile.in

View File

@@ -0,0 +1,7 @@
include (SimGearComponent)
set(HEADERS newbucket.hxx)
set(SOURCES newbucket.cxx)
simgear_component(bucket bucket "${SOURCES}" "${HEADERS}")

View File

@@ -1,17 +0,0 @@
includedir = @includedir@/bucket
lib_LIBRARIES = libsgbucket.a
include_HEADERS = newbucket.hxx
libsgbucket_a_SOURCES = newbucket.cxx
# noinst_PROGRAMS = testbucket
# testbucket_SOURCES = testbucket.cxx
# testbucket_LDADD = \
# $(top_builddir)/bucket/libsgbucket.a \
# $(top_builddir)/misc/libsgmisc.a
INCLUDES = -I$(top_srcdir)

View File

@@ -3,7 +3,7 @@
*
* Written by Curtis L. Olson, started February 1999.
*
* Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
* Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt/
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -15,10 +15,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $Id$
**************************************************************************/
@@ -45,6 +44,9 @@ SGBucket::SGBucket(const double dlon, const double dlat) {
set_bucket(dlon, dlat);
}
SGBucket::SGBucket(const SGGeod& geod) {
set_bucket(geod);
}
// create an impossible bucket if false
SGBucket::SGBucket(const bool is_good) {
@@ -74,11 +76,6 @@ SGBucket::SGBucket(const long int bindex) {
}
// default destructor
SGBucket::~SGBucket() {
}
// Set the bucket params for the specified lat and lon
void SGBucket::set_bucket( double *lonlat ) {
set_bucket( lonlat[0], lonlat[1] );
@@ -95,6 +92,11 @@ void SGBucket::set_bucket( double dlon, double dlat ) {
// cout << "diff = " << diff << " span = " << span << endl;
/* Calculate the greatest integral longitude less than
* or equal to the given longitude (floor(dlon)),
* but attribute coordinates near the east border
* to the next tile.
*/
if ( (dlon >= 0) || (fabs(diff) < SG_EPSILON) ) {
lon = (int)dlon;
} else {
@@ -103,22 +105,48 @@ void SGBucket::set_bucket( double dlon, double dlat ) {
// find subdivision or super lon if needed
if ( span < SG_EPSILON ) {
/* sg_bucket_span() never returns 0.0
* or anything near it, so this really
* should not occur at any time.
*/
// polar cap
lon = 0;
x = 0;
} else if ( span <= 1.0 ) {
/* We have more than one tile per degree of
* longitude, so we need an x offset.
*/
x = (int)((dlon - lon) / span);
} else {
if ( (dlon >= 0) || (fabs(diff) < SG_EPSILON) ) {
lon = (int)( (int)(lon / span) * span);
} else {
// cout << " lon = " << lon
// << " tmp = " << (int)((lon-1) / span) << endl;
lon = (int)( (int)((lon + 1) / span) * span - span);
if ( lon < -180 ) {
lon = -180;
}
}
/* We have one or more degrees per tile,
* so we need to find the base longitude
* of that tile.
*
* First we calculate the integral base longitude
* (e.g. -85.5 => -86) and then find the greatest
* multiple of span that is less than or equal to
* that longitude.
*
* That way, the Greenwich Meridian is always
* a tile border.
*
* This gets us into trouble with the polar caps,
* which have width 360 and thus either span
* the range from 0 to 360 or from -360 to 0
* degrees, depending on whether lon is positive
* or negative!
*
* We also get into trouble with the 8 degree tiles
* north of 88N and south of 88S, because the west-
* and east-most tiles in that range will cover 184W
* to 176W and 176E to 184E respectively, with their
* center at 180E/W!
*/
lon=(int)floor(floor((lon+SG_EPSILON)/span)*span);
/* Correct the polar cap issue */
if ( lon < -180 ) {
lon = -180;
}
x = 0;
}
@@ -127,17 +155,26 @@ void SGBucket::set_bucket( double dlon, double dlat ) {
//
diff = dlat - (double)(int)dlat;
/* Again, a modified floor() function (see longitude) */
if ( (dlat >= 0) || (fabs(diff) < SG_EPSILON) ) {
lat = (int)dlat;
} else {
lat = (int)dlat - 1;
}
/* Latitude base and offset are easier, as
* tiles always are 1/8 degree of latitude wide.
*/
y = (int)((dlat - lat) * 8);
}
void SGBucket::set_bucket(const SGGeod& geod)
{
set_bucket(geod.getLongitudeDeg(), geod.getLatitudeDeg());
}
// Build the path name for this bucket
string SGBucket::gen_base_path() const {
std::string SGBucket::gen_base_path() const {
// long int index;
int top_lon, top_lat, main_lon, main_lat;
char hem, pole;
@@ -175,7 +212,7 @@ string SGBucket::gen_base_path() const {
main_lat *= -1;
}
sprintf(raw_path, "%c%03d%c%02d/%c%03d%c%02d",
snprintf(raw_path, 256, "%c%03d%c%02d/%c%03d%c%02d",
hem, top_lon, pole, top_lat,
hem, main_lon, pole, main_lat);
@@ -208,16 +245,16 @@ double SGBucket::get_width_m() const {
double clat_rad = clat * SGD_DEGREES_TO_RADIANS;
double cos_lat = cos( clat_rad );
double local_radius = cos_lat * SG_EQUATORIAL_RADIUS_M;
double local_perimeter = 2.0 * local_radius * SGD_PI;
double local_perimeter = local_radius * SGD_2PI;
double degree_width = local_perimeter / 360.0;
return sg_bucket_span( get_center_lat() ) * degree_width;
return get_width() * degree_width;
}
// return height of the tile in meters
double SGBucket::get_height_m() const {
double perimeter = 2.0 * SG_EQUATORIAL_RADIUS_M * SGD_PI;
double perimeter = SG_EQUATORIAL_RADIUS_M * SGD_2PI;
double degree_height = perimeter / 360.0;
return SG_BUCKET_SPAN * degree_height;
@@ -271,16 +308,32 @@ void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy ) {
#endif
// longitude difference
double c1_lon = b1.get_center_lon();
double c2_lon = b2.get_center_lon();
double diff_lon = c2_lon - c1_lon;
double span;
if ( sg_bucket_span(c1_lat) <= sg_bucket_span(c2_lat) ) {
double diff_lon=0.0;
double span=0.0;
SGBucket tmp_bucket;
// To handle crossing the bucket size boundary
// we need to account for different size buckets.
if ( sg_bucket_span(c1_lat) <= sg_bucket_span(c2_lat) )
{
span = sg_bucket_span(c1_lat);
} else {
span = sg_bucket_span(c2_lat);
}
diff_lon = b2.get_center_lon() - b1.get_center_lon();
if (diff_lon <0.0)
{
diff_lon -= b1.get_width()*0.5 + b2.get_width()*0.5 - span;
}
else
{
diff_lon += b1.get_width()*0.5 + b2.get_width()*0.5 - span;
}
#ifdef HAVE_RINT
*dx = (int)rint( diff_lon / span );
#else
@@ -292,4 +345,13 @@ void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy ) {
#endif
}
void sgGetBuckets( const SGGeod& min, const SGGeod& max, std::vector<SGBucket>& list ) {
double lon, lat, span;
for (lat = min.getLatitudeDeg(); lat <= max.getLatitudeDeg(); lat += SG_BUCKET_SPAN) {
span = sg_bucket_span( lat );
for (lon = min.getLongitudeDeg(); lon <= max.getLongitudeDeg(); lon += span) {
list.push_back( SGBucket(lon , lat) );
}
}
}

View File

@@ -3,7 +3,7 @@
*
* Written by Curtis L. Olson, started February 1999.
*
* Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
* Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -15,16 +15,20 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $Id$
**************************************************************************/
/** \file newbucket.hxx
* A class and associated utiltity functions to manage world scenery tiling.
*
* Tile borders are aligned along circles of latitude and longitude.
* All tiles are 1/8 degree of latitude high and their width in degrees
* longitude depends on their latitude, adjusted in such a way that
* all tiles cover about the same amount of area of the earth surface.
*/
#ifndef _NEWBUCKET_HXX
@@ -32,30 +36,13 @@
#include <simgear/compiler.h>
#include <simgear/constants.h>
#include <simgear/math/SGMath.hxx>
#ifdef SG_HAVE_STD_INCLUDES
# include <cmath>
# include <cstdio> // sprintf()
#else
# include <math.h>
# include <stdio.h> // sprintf()
#endif
#include STL_IOSTREAM
// I don't understand ... <math.h> or <cmath> should be included
// already depending on how you defined SG_HAVE_STD_INCLUDES, but I
// can go ahead and add this -- CLO
#ifdef __MWERKS__
SG_USING_STD(sprintf);
SG_USING_STD(fabs);
#endif
#include STL_STRING
SG_USING_STD(string);
SG_USING_STD(ostream);
#include <cmath>
#include <cstdio> // sprintf()
#include <ostream>
#include <string>
#include <vector>
/**
* standard size of a bucket in degrees (1/8 of a degree)
@@ -71,9 +58,7 @@ SG_USING_STD(ostream);
// return the horizontal tile span factor based on latitude
static double sg_bucket_span( double l ) {
if ( l >= 89.0 ) {
return 360.0;
} else if ( l >= 88.0 ) {
return 8.0;
return 12.0;
} else if ( l >= 86.0 ) {
return 4.0;
} else if ( l >= 83.0 ) {
@@ -94,12 +79,10 @@ static double sg_bucket_span( double l ) {
return 1.0;
} else if ( l >= -86.0 ) {
return 2.0;
} else if ( l >= -88.0 ) {
return 4.0;
} else if ( l >= -89.0 ) {
return 8.0;
return 4.0;
} else {
return 360.0;
return 12.0;
}
}
@@ -114,11 +97,10 @@ static double sg_bucket_span( double l ) {
class SGBucket {
private:
double cx, cy; // centerpoint (lon, lat) in degrees of bucket
int lon; // longitude index (-180 to 179)
int lat; // latitude index (-90 to 89)
int x; // x subdivision (0 to 7)
int y; // y subdivision (0 to 7)
short lon; // longitude index (-180 to 179)
short lat; // latitude index (-90 to 89)
char x; // x subdivision (0 to 7)
char y; // y subdivision (0 to 7)
public:
@@ -134,6 +116,13 @@ public:
*/
SGBucket(const double dlon, const double dlat);
/**
* Construct a bucket given a specific location.
* @param dlon longitude specified in degrees
* @param dlat latitude specified in degrees
*/
SGBucket(const SGGeod& geod);
/** Construct a bucket.
* @param is_good if false, create an invalid bucket. This is
* useful * if you are comparing cur_bucket to last_bucket and
@@ -147,11 +136,6 @@ public:
*/
SGBucket(const long int bindex);
/**
* Default destructor.
*/
~SGBucket();
/**
* Reset a bucket to represent a new lat and lon
* @param dlon longitude specified in degrees
@@ -166,6 +150,13 @@ public:
*/
void set_bucket( double *lonlat );
/**
* Reset a bucket to represent a new lat and lon
* @param dlon longitude specified in degrees
* @param dlat latitude specified in degrees
*/
void set_bucket(const SGGeod& geod);
/**
* Create an impossible bucket.
* This is useful if you are comparing cur_bucket to last_bucket
@@ -201,18 +192,19 @@ public:
* string form.
* @return tile index in string form
*/
inline string gen_index_str() const {
inline std::string gen_index_str() const {
char tmp[20];
sprintf(tmp, "%ld",
(((long)lon + 180) << 14) + ((lat + 90) << 6) + (y << 3) + x);
return (string)tmp;
std::sprintf(tmp, "%ld",
(((long)lon + 180) << 14) + ((lat + 90) << 6)
+ (y << 3) + x);
return (std::string)tmp;
}
/**
* Build the base path name for this bucket.
* @return base path in string form
*/
string gen_base_path() const;
std::string gen_base_path() const;
/**
* @return the center lon of a tile.
@@ -221,9 +213,9 @@ public:
double span = sg_bucket_span( lat + y / 8.0 + SG_HALF_BUCKET_SPAN );
if ( span >= 1.0 ) {
return lon + span / 2.0;
return lon + get_width() / 2.0;
} else {
return lon + x * span + span / 2.0;
return lon + x * span + get_width() / 2.0;
}
}
@@ -253,7 +245,24 @@ public:
* @return the height of the tile in meters.
*/
double get_height_m() const;
/**
* @return the center of the bucket in geodetic coordinates.
*/
SGGeod get_center() const
{ return SGGeod::fromDeg(get_center_lon(), get_center_lat()); }
/**
* @return the center of the bucket in geodetic coordinates.
*/
SGGeod get_corner(unsigned num) const
{
double lonFac = ((num + 1) & 2) ? 0.5 : -0.5;
double latFac = ((num ) & 2) ? 0.5 : -0.5;
return SGGeod::fromDeg(get_center_lon() + lonFac*get_width(),
get_center_lat() + latFac*get_height());
}
// Informational methods.
/**
@@ -280,10 +289,15 @@ public:
// friends
friend ostream& operator<< ( ostream&, const SGBucket& );
friend std::ostream& operator<< ( std::ostream&, const SGBucket& );
friend bool operator== ( const SGBucket&, const SGBucket& );
};
inline bool operator!= (const SGBucket& lhs, const SGBucket& rhs)
{
return !(lhs == rhs);
}
/**
* \relates SGBucket
@@ -309,15 +323,24 @@ SGBucket sgBucketOffset( double dlon, double dlat, int x, int y );
void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy );
/**
* \relates SGBucket
* retrieve a list of buckets in the given bounding box
* @param min min lon,lat of bounding box in degrees
* @param max max lon,lat of bounding box in degrees
* @param list standard vector of buckets within the bounding box
*/
void sgGetBuckets( const SGGeod& min, const SGGeod& max, std::vector<SGBucket>& list );
/**
* Write the bucket lon, lat, x, and y to the output stream.
* @param out output stream
* @param b bucket
*/
inline ostream&
operator<< ( ostream& out, const SGBucket& b )
inline std::ostream&
operator<< ( std::ostream& out, const SGBucket& b )
{
return out << b.lon << ":" << b.x << ", " << b.lat << ":" << b.y;
return out << b.lon << ":" << (int)b.x << ", " << b.lat << ":" << (int)b.y;
}

2
simgear/bvh/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
bvhtest

View File

@@ -0,0 +1,83 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHBoundingBoxVisitor_hxx
#define BVHBoundingBoxVisitor_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHPageNode.hxx"
#include "BVHTransform.hxx"
#include "BVHMotionTransform.hxx"
#include "BVHLineGeometry.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
#include "BVHStaticGeometry.hxx"
namespace simgear {
class BVHBoundingBoxVisitor : public BVHVisitor {
public:
virtual ~BVHBoundingBoxVisitor() {}
void clear()
{ _box.clear(); }
virtual void apply(BVHGroup& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(BVHPageNode& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(BVHTransform& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(BVHMotionTransform& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(BVHLineGeometry& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(BVHStaticGeometry& node)
{ expandBy(node.getBoundingSphere()); }
virtual void apply(const BVHStaticBinary& node, const BVHStaticData& data)
{ expandBy(node.getBoundingBox()); }
virtual void apply(const BVHStaticTriangle& node, const BVHStaticData& data)
{ expandBy(node.computeBoundingBox(data)); }
const SGBoxf& getBox() const
{ return _box; }
private:
void expandBy(const SGSphered& sphere)
{
SGVec3f v0(sphere.getCenter() - sphere.getRadius()*SGVec3d(1, 1, 1));
SGVec3f v1(sphere.getCenter() + sphere.getRadius()*SGVec3d(1, 1, 1));
_box.expandBy(SGBoxf(v0, v1));
}
void expandBy(const SGBoxf& box)
{ _box.expandBy(box); }
SGBoxf _box;
};
}
#endif

92
simgear/bvh/BVHGroup.cxx Normal file
View File

@@ -0,0 +1,92 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifdef HAVE_CONFIG_H
# include <simgear_config.h>
#endif
#include "BVHGroup.hxx"
#include <algorithm>
namespace simgear {
BVHGroup::BVHGroup()
{
}
BVHGroup::~BVHGroup()
{
ChildList::iterator i;
for (i = _children.begin(); i != _children.end(); ++i) {
(*i)->removeParent(this);
*i = 0;
}
}
void
BVHGroup::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
void
BVHGroup::clear()
{
_children.clear();
invalidateBound();
}
void
BVHGroup::addChild(BVHNode* child)
{
if (!child)
return;
ChildList::iterator i;
i = std::find(_children.begin(), _children.end(), child);
if (i != _children.end())
return;
invalidateBound();
child->addParent(this);
_children.push_back(child);
}
void
BVHGroup::removeChild(BVHNode* child)
{
if (!child)
return;
ChildList::iterator i;
i = std::find(_children.begin(), _children.end(), child);
if (i == _children.end())
return;
invalidateBound();
child->removeParent(this);
_children.erase(i);
}
SGSphered
BVHGroup::computeBoundingSphere() const
{
SGSphered sphere;
ChildList::const_iterator i;
for (i = _children.begin(); i != _children.end(); ++i)
sphere.expandBy((*i)->getBoundingSphere());
return sphere;
}
}

61
simgear/bvh/BVHGroup.hxx Normal file
View File

@@ -0,0 +1,61 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHGroup_hxx
#define BVHGroup_hxx
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHNode.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
class BVHGroup : public BVHNode {
public:
BVHGroup();
virtual ~BVHGroup();
virtual void accept(BVHVisitor& visitor);
void traverse(BVHVisitor& visitor)
{
ChildList::const_iterator i;
for (i = _children.begin(); i != _children.end(); ++i)
(*i)->accept(visitor);
}
void clear();
void addChild(BVHNode* child);
void removeChild(BVHNode* child);
unsigned getNumChildren() const
{ return _children.size(); }
const BVHNode* getChild(unsigned i) const
{ if (_children.size() <= i) return 0; return _children[i]; }
BVHNode* getChild(unsigned i)
{ if (_children.size() <= i) return 0; return _children[i]; }
virtual SGSphered computeBoundingSphere() const;
private:
typedef std::vector<SGSharedPtr<BVHNode> > ChildList;
ChildList _children;
};
}
#endif

View File

@@ -0,0 +1,49 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHLineGeometry.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
BVHLineGeometry::BVHLineGeometry(const SGLineSegmentf& lineSegment, Type type) :
_lineSegment(lineSegment),
_type(type)
{
}
BVHLineGeometry::~BVHLineGeometry()
{
}
void
BVHLineGeometry::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
SGSphered
BVHLineGeometry::computeBoundingSphere() const
{
SGSphered sphere;
sphere.expandBy(SGVec3d(_lineSegment.getStart()));
sphere.expandBy(SGVec3d(_lineSegment.getEnd()));
return sphere;
}
}

View File

@@ -0,0 +1,53 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHLineGeometry_hxx
#define BVHLineGeometry_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHNode.hxx"
namespace simgear {
class BVHLineGeometry : public BVHNode {
public:
enum Type {
CarrierCatapult,
CarrierWire
};
BVHLineGeometry(const SGLineSegmentf& lineSegment, Type type);
virtual ~BVHLineGeometry();
virtual void accept(BVHVisitor& visitor);
const SGLineSegmentf& getLineSegment() const
{ return _lineSegment; }
Type getType() const
{ return _type; }
virtual SGSphered computeBoundingSphere() const;
private:
SGLineSegmentf _lineSegment;
Type _type;
};
}
#endif

View File

@@ -0,0 +1,166 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifdef HAVE_CONFIG_H
# include <simgear_config.h>
#endif
#include "BVHLineSegmentVisitor.hxx"
#include <simgear/math/SGGeometry.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHPageNode.hxx"
#include "BVHTransform.hxx"
#include "BVHMotionTransform.hxx"
#include "BVHLineGeometry.hxx"
#include "BVHStaticGeometry.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
namespace simgear {
void
BVHLineSegmentVisitor::apply(BVHGroup& group)
{
if (!intersects(_lineSegment, group.getBoundingSphere()))
return;
group.traverse(*this);
}
void
BVHLineSegmentVisitor::apply(BVHPageNode& pageNode)
{
if (!intersects(_lineSegment, pageNode.getBoundingSphere()))
return;
pageNode.traverse(*this);
}
void
BVHLineSegmentVisitor::apply(BVHTransform& transform)
{
if (!intersects(_lineSegment, transform.getBoundingSphere()))
return;
bool haveHit = _haveHit;
_haveHit = false;
// Push the line segment
SGLineSegmentd lineSegment = getLineSegment();
_lineSegment = transform.lineSegmentToLocal(lineSegment);
transform.traverse(*this);
if (_haveHit) {
_linearVelocity = transform.vecToWorld(_linearVelocity);
_angularVelocity = transform.vecToWorld(_angularVelocity);
SGVec3d point(transform.ptToWorld(_lineSegment.getEnd()));
_lineSegment.set(lineSegment.getStart(), point);
_normal = transform.vecToWorld(_normal);
} else {
_lineSegment = lineSegment;
_haveHit = haveHit;
}
}
void
BVHLineSegmentVisitor::apply(BVHMotionTransform& transform)
{
if (!intersects(_lineSegment, transform.getBoundingSphere()))
return;
bool haveHit = _haveHit;
_haveHit = false;
// Push the line segment
SGLineSegmentd lineSegment = getLineSegment();
SGMatrixd toLocal = transform.getToLocalTransform(_time);
_lineSegment = lineSegment.transform(toLocal);
transform.traverse(*this);
if (_haveHit) {
SGMatrixd toWorld = transform.getToWorldTransform(_time);
SGVec3d localStart = _lineSegment.getStart();
_linearVelocity += transform.getLinearVelocityAt(localStart);
_angularVelocity += transform.getAngularVelocity();
_linearVelocity = toWorld.xformVec(_linearVelocity);
_angularVelocity = toWorld.xformVec(_angularVelocity);
SGVec3d localEnd = _lineSegment.getEnd();
_lineSegment.set(lineSegment.getStart(), toWorld.xformPt(localEnd));
_normal = toWorld.xformVec(_normal);
if (!_id)
_id = transform.getId();
} else {
_lineSegment = lineSegment;
_haveHit = haveHit;
}
}
void
BVHLineSegmentVisitor::apply(BVHLineGeometry&)
{
}
void
BVHLineSegmentVisitor::apply(BVHStaticGeometry& node)
{
if (!intersects(_lineSegment, node.getBoundingSphere()))
return;
node.traverse(*this);
}
void
BVHLineSegmentVisitor::apply(const BVHStaticBinary& node,
const BVHStaticData& data)
{
if (!intersects(SGLineSegmentf(_lineSegment), node.getBoundingBox()))
return;
// The first box to enter is the one the startpoint is in.
// this increases the probability, that on exit of that box we do not
// even need to walk the other one, since the line segment is
// then already short enough to not intersect the other one anymore.
node.traverse(*this, data, _lineSegment.getStart());
}
void
BVHLineSegmentVisitor::apply(const BVHStaticTriangle& triangle,
const BVHStaticData& data)
{
SGTrianglef tri = triangle.getTriangle(data);
SGVec3f point;
if (!intersects(point, tri, SGLineSegmentf(_lineSegment), 1e-4f))
return;
setLineSegmentEnd(SGVec3d(point));
_normal = SGVec3d(tri.getNormal());
_linearVelocity = SGVec3d::zeros();
_angularVelocity = SGVec3d::zeros();
_material = data.getMaterial(triangle.getMaterialIndex());
_id = 0;
_haveHit = true;
}
}

View File

@@ -0,0 +1,100 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHLineSegmentVisitor_hxx
#define BVHLineSegmentVisitor_hxx
#include <simgear/math/SGGeometry.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
namespace simgear {
class BVHMaterial;
class BVHLineSegmentVisitor : public BVHVisitor {
public:
BVHLineSegmentVisitor(const SGLineSegmentd& lineSegment,
const double& t = 0) :
_lineSegment(lineSegment),
_time(t),
_material(0),
_id(0),
_haveHit(false)
{ }
virtual ~BVHLineSegmentVisitor()
{ }
bool empty() const
{ return !_haveHit; }
const SGLineSegmentd& getLineSegment() const
{ return _lineSegment; }
SGVec3d getPoint() const
{ return _lineSegment.getEnd(); }
const SGVec3d& getNormal() const
{ return _normal; }
const SGVec3d& getLinearVelocity() const
{ return _linearVelocity; }
const SGVec3d& getAngularVelocity() const
{ return _angularVelocity; }
const BVHMaterial* getMaterial() const
{ return _material; }
BVHNode::Id getId() const
{ return _id; }
virtual void apply(BVHGroup& group);
virtual void apply(BVHPageNode& node);
virtual void apply(BVHTransform& transform);
virtual void apply(BVHMotionTransform& transform);
virtual void apply(BVHLineGeometry&);
virtual void apply(BVHStaticGeometry& node);
virtual void apply(const BVHStaticBinary&, const BVHStaticData&);
virtual void apply(const BVHStaticTriangle&, const BVHStaticData&);
protected:
void setLineSegmentEnd(const SGVec3d& end)
{
// Ok, you need to make sure that the new end is in the previous
// direction and that the line segment is not enlarged by that call.
#ifndef _NDEBUG
// FIXME insert code to check this...
#endif
_lineSegment.set(_lineSegment.getStart(), end);
}
private:
SGLineSegmentd _lineSegment;
double _time;
// belongs in a derived class
SGVec3d _normal;
SGVec3d _linearVelocity;
SGVec3d _angularVelocity;
const BVHMaterial* _material;
BVHNode::Id _id;
bool _haveHit;
};
}
#endif

View File

@@ -0,0 +1,35 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHMaterial.hxx"
namespace simgear {
BVHMaterial::BVHMaterial() :
_solid(true),
_friction_factor(1),
_rolling_friction(0.02),
_bumpiness(0),
_load_resistance(1e30)
{
}
BVHMaterial::~BVHMaterial()
{
}
}

View File

@@ -0,0 +1,75 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHMaterial_hxx
#define BVHMaterial_hxx
#include <simgear/structure/SGReferenced.hxx>
namespace simgear {
class BVHMaterial : public SGReferenced {
public:
BVHMaterial();
virtual ~BVHMaterial();
/**
* Return if the surface material is solid, if it is not solid, a fluid
* can be assumed, that is usually water.
*/
bool get_solid () const { return _solid; }
/**
* Get the friction factor for that material
*/
double get_friction_factor () const { return _friction_factor; }
/**
* Get the rolling friction for that material
*/
double get_rolling_friction () const { return _rolling_friction; }
/**
* Get the bumpines for that material
*/
double get_bumpiness () const { return _bumpiness; }
/**
* Get the load resistance
*/
double get_load_resistance () const { return _load_resistance; }
protected:
// True if the material is solid, false if it is a fluid
bool _solid;
// the friction factor of that surface material
double _friction_factor;
// the rolling friction of that surface material
double _rolling_friction;
// the bumpiness of that surface material
double _bumpiness;
// the load resistance of that surface material
double _load_resistance;
};
}
#endif

View File

@@ -0,0 +1,120 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifdef HAVE_CONFIG_H
# include <simgear_config.h>
#endif
#include "BVHMotionTransform.hxx"
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
namespace simgear {
BVHMotionTransform::BVHMotionTransform() :
_toWorldReference(SGMatrixd::unit()),
_toLocalReference(SGMatrixd::unit()),
_toWorldAmplification(1),
_toLocalAmplification(1),
_linearVelocity(0, 0, 0),
_angularVelocity(0, 0, 0),
_referenceTime(0),
_startTime(0),
_endTime(0),
_id(0)
{
}
BVHMotionTransform::~BVHMotionTransform()
{
}
void
BVHMotionTransform::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
void
BVHMotionTransform::setTransform(const BVHMotionTransform& transform)
{
_toWorldReference = transform._toWorldReference;
_toLocalReference = transform._toLocalReference;
_toWorldAmplification = transform._toWorldAmplification;
_toLocalAmplification = transform._toLocalAmplification;
_linearVelocity = transform._linearVelocity;
_angularVelocity = transform._angularVelocity;
_referenceTime = transform._referenceTime;
_startTime = transform._startTime;
_endTime = transform._endTime;
_id = transform._id;
invalidateParentBound();
}
void
BVHMotionTransform::setToWorldTransform(const SGMatrixd& transform)
{
_toWorldReference = transform;
invert(_toLocalReference, transform);
updateAmplificationFactors();
invalidateParentBound();
}
void
BVHMotionTransform::setToLocalTransform(const SGMatrixd& transform)
{
_toLocalReference = transform;
invert(_toWorldReference, transform);
updateAmplificationFactors();
invalidateParentBound();
}
SGSphered
BVHMotionTransform::computeBoundingSphere() const
{
SGSphered sphere(BVHGroup::computeBoundingSphere());
if (sphere.empty())
return sphere;
SGMatrixd toWorldStart = getToWorldTransform(_startTime);
SGVec3d centerStart = toWorldStart.xformPt(sphere.getCenter());
SGMatrixd toWorldEnd = getToWorldTransform(_endTime);
SGVec3d centerEnd = toWorldEnd.xformPt(sphere.getCenter());
double rad = 0.5*length(centerStart - centerEnd) + sphere.getRadius();
rad *= _toWorldAmplification;
return SGSphered(0.5*(centerStart + centerEnd), rad);
}
void
BVHMotionTransform::updateAmplificationFactors()
{
// Hmm, this is just a hint, true?
// But anyway, almost all transforms in a scenegraph will
// have them equal to 1 ...
double r = norm(_toWorldReference.xformVec(SGVec3d(1, 0, 0)));
r = SGMiscd::max(r, norm(_toWorldReference.xformVec(SGVec3d(0, 1, 0))));
r = SGMiscd::max(r, norm(_toWorldReference.xformVec(SGVec3d(0, 0, 1))));
_toWorldAmplification = r;
r = norm(_toLocalReference.xformVec(SGVec3d(1, 0, 0)));
r = SGMiscd::max(r, norm(_toLocalReference.xformVec(SGVec3d(0, 1, 0))));
r = SGMiscd::max(r, norm(_toLocalReference.xformVec(SGVec3d(0, 0, 1))));
_toLocalAmplification = r;
}
}

View File

@@ -0,0 +1,126 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHMotionTransform_hxx
#define BVHMotionTransform_hxx
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
namespace simgear {
class BVHMotionTransform : public BVHGroup {
public:
BVHMotionTransform();
virtual ~BVHMotionTransform();
virtual void accept(BVHVisitor& visitor);
void setTransform(const BVHMotionTransform& transform);
void setToWorldTransform(const SGMatrixd& transform);
void setToLocalTransform(const SGMatrixd& transform);
void setLinearVelocity(const SGVec3d& linearVelocity)
{ _linearVelocity = linearVelocity; }
const SGVec3d& getLinearVelocity() const
{ return _linearVelocity; }
void setAngularVelocity(const SGVec3d& angularVelocity)
{ _angularVelocity = angularVelocity; }
const SGVec3d& getAngularVelocity() const
{ return _angularVelocity; }
void setReferenceTime(const double& referenceTime)
{ _referenceTime = referenceTime; }
const double& getReferenceTime() const
{ return _referenceTime; }
void setStartTime(const double& startTime)
{ _startTime = startTime; }
const double& getStartTime() const
{ return _startTime; }
void setEndTime(const double& endTime)
{ _endTime = endTime; }
const double& getEndTime() const
{ return _endTime; }
SGMatrixd getToWorldTransform(const double& t) const
{
if (t == _referenceTime)
return _toWorldReference;
double dt = t - _referenceTime;
SGMatrixd matrix(_toWorldReference);
matrix.postMultRotate(SGQuatd::fromAngleAxis(dt*_angularVelocity));
matrix.postMultTranslate(dt*_linearVelocity);
return matrix;
}
SGMatrixd getToLocalTransform(const double& t) const
{
if (t == _referenceTime)
return _toLocalReference;
double dt = _referenceTime - t;
SGMatrixd matrix(_toLocalReference);
matrix.preMultRotate(SGQuatd::fromAngleAxis(dt*_angularVelocity));
matrix.preMultTranslate(dt*_linearVelocity);
return matrix;
}
const SGMatrixd& getToWorldReferenceTransform() const
{ return _toWorldReference; }
const SGMatrixd& getToLocalReferenceTransform() const
{ return _toLocalReference; }
SGVec3d getLinearVelocityAt(const SGVec3d& reference) const
{ return _linearVelocity + cross(_angularVelocity, reference); }
SGSphered sphereToLocal(const SGSphered& sphere, const double& t) const
{
SGMatrixd matrix = getToLocalTransform(t);
SGVec3d center = matrix.xformPt(sphere.getCenter());
double radius = _toLocalAmplification*sphere.getRadius();
return SGSphered(center, radius);
}
void setId(Id id)
{ _id = id; }
Id getId() const
{ return _id; }
private:
virtual SGSphered computeBoundingSphere() const;
void updateAmplificationFactors();
SGMatrixd _toWorldReference;
SGMatrixd _toLocalReference;
double _toWorldAmplification;
double _toLocalAmplification;
SGVec3d _linearVelocity;
SGVec3d _angularVelocity;
double _referenceTime;
double _startTime;
double _endTime;
Id _id;
};
}
#endif

View File

@@ -0,0 +1,173 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHNearestPointVisitor_hxx
#define BVHNearestPointVisitor_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHPageNode.hxx"
#include "BVHTransform.hxx"
#include "BVHLineGeometry.hxx"
#include "BVHStaticGeometry.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
namespace simgear {
class BVHNearestPointVisitor : public BVHVisitor {
public:
BVHNearestPointVisitor(const SGSphered& sphere, const double& t) :
_sphere(sphere),
_time(t),
_material(0),
_id(0),
_havePoint(false)
{ }
virtual void apply(BVHGroup& leaf)
{
if (!intersects(_sphere, leaf.getBoundingSphere()))
return;
leaf.traverse(*this);
}
virtual void apply(BVHPageNode& leaf)
{
if (!intersects(_sphere, leaf.getBoundingSphere()))
return;
leaf.traverse(*this);
}
virtual void apply(BVHTransform& transform)
{
if (!intersects(_sphere, transform.getBoundingSphere()))
return;
SGSphered sphere = _sphere;
_sphere = transform.sphereToLocal(sphere);
bool havePoint = _havePoint;
_havePoint = false;
transform.traverse(*this);
if (_havePoint) {
_point = transform.ptToWorld(_point);
_linearVelocity = transform.vecToWorld(_linearVelocity);
_angularVelocity = transform.vecToWorld(_angularVelocity);
}
_havePoint |= havePoint;
_sphere.setCenter(sphere.getCenter());
}
virtual void apply(BVHMotionTransform& transform)
{
if (!intersects(_sphere, transform.getBoundingSphere()))
return;
SGSphered sphere = _sphere;
_sphere = transform.sphereToLocal(sphere, _time);
bool havePoint = _havePoint;
_havePoint = false;
transform.traverse(*this);
if (_havePoint) {
SGMatrixd toWorld = transform.getToWorldTransform(_time);
SGVec3d localCenter = _sphere.getCenter();
_linearVelocity += transform.getLinearVelocityAt(localCenter);
_angularVelocity += transform.getAngularVelocity();
_linearVelocity = toWorld.xformVec(_linearVelocity);
_angularVelocity = toWorld.xformVec(_angularVelocity);
_point = toWorld.xformPt(_point);
if (!_id)
_id = transform.getId();
}
_havePoint |= havePoint;
_sphere.setCenter(sphere.getCenter());
}
virtual void apply(BVHLineGeometry& node)
{ }
virtual void apply(BVHStaticGeometry& node)
{
if (!intersects(_sphere, node.getBoundingSphere()))
return;
node.traverse(*this);
}
virtual void apply(const BVHStaticBinary& node, const BVHStaticData& data)
{
if (!intersects(_sphere, node.getBoundingBox()))
return;
node.traverse(*this, data, _sphere.getCenter());
}
virtual void apply(const BVHStaticTriangle& node, const BVHStaticData& data)
{
SGVec3f center(_sphere.getCenter());
SGVec3d closest(closestPoint(node.getTriangle(data), center));
if (!intersects(_sphere, closest))
return;
_point = closest;
_linearVelocity = SGVec3d::zeros();
_angularVelocity = SGVec3d::zeros();
_material = data.getMaterial(node.getMaterialIndex());
// The trick is to decrease the radius of the search sphere.
_sphere.setRadius(length(closest - _sphere.getCenter()));
_havePoint = true;
_id = 0;
}
void setSphere(const SGSphered& sphere)
{ _sphere = sphere; }
const SGSphered& getSphere() const
{ return _sphere; }
const SGVec3d& getPoint() const
{ return _point; }
const SGVec3d& getLinearVelocity() const
{ return _linearVelocity; }
const SGVec3d& getAngularVelocity() const
{ return _angularVelocity; }
const BVHMaterial* getMaterial() const
{ return _material; }
BVHNode::Id getId() const
{ return _id; }
bool empty() const
{ return !_havePoint; }
private:
SGSphered _sphere;
double _time;
SGVec3d _point;
SGVec3d _linearVelocity;
SGVec3d _angularVelocity;
const BVHMaterial* _material;
BVHNode::Id _id;
bool _havePoint;
};
}
#endif

80
simgear/bvh/BVHNode.cxx Normal file
View File

@@ -0,0 +1,80 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHNode.hxx"
#include <algorithm>
#include <simgear/structure/SGAtomic.hxx>
#include <simgear/math/SGGeometry.hxx>
namespace simgear {
BVHNode::BVHNode() :
_dirtyBoundingSphere(true)
{
}
BVHNode::~BVHNode()
{
}
BVHNode::Id
BVHNode::getNewId()
{
static SGAtomic id(0);
return ++id;
}
void
BVHNode::addParent(BVHNode* parent)
{
// should not happen, but be paranoid ...
ParentList::iterator i;
i = std::find(_parents.begin(), _parents.end(), parent);
if (i != _parents.end())
return;
// add to the parents list ...
_parents.push_back(parent);
}
void
BVHNode::removeParent(BVHNode* parent)
{
ParentList::iterator i;
i = std::find(_parents.begin(), _parents.end(), parent);
if (i == _parents.end())
return;
_parents.erase(i);
}
void
BVHNode::invalidateParentBound()
{
for (ParentList::iterator i = _parents.begin(); i != _parents.end(); ++i)
(*i)->invalidateBound();
}
void
BVHNode::invalidateBound()
{
if (_dirtyBoundingSphere)
return;
invalidateParentBound();
_dirtyBoundingSphere = true;
}
}

76
simgear/bvh/BVHNode.hxx Normal file
View File

@@ -0,0 +1,76 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHNode_hxx
#define BVHNode_hxx
#include <vector>
#include <simgear/math/SGGeometry.hxx>
#include <simgear/structure/SGReferenced.hxx>
namespace simgear {
class BVHGroup;
class BVHVisitor;
class BVHPageNode;
// Base for the tree nodes
class BVHNode : public SGReferenced {
public:
BVHNode();
virtual ~BVHNode();
// visitors ...
virtual void accept(BVHVisitor& visitor) = 0;
const SGSphered& getBoundingSphere() const
{
if (_dirtyBoundingSphere) {
_boundingSphere = computeBoundingSphere();
_dirtyBoundingSphere = false;
}
return _boundingSphere;
}
virtual SGSphered computeBoundingSphere() const = 0;
/// A unique id for some kind of BVHNodes.
/// Currently only motions transforms.
typedef unsigned Id;
// Factory to get a new id
static Id getNewId();
protected:
friend class BVHGroup;
friend class BVHPageNode;
void addParent(BVHNode* parent);
void removeParent(BVHNode* parent);
void invalidateParentBound();
virtual void invalidateBound();
private:
mutable bool _dirtyBoundingSphere;
mutable SGSphered _boundingSphere;
typedef std::vector<BVHNode*> ParentList;
ParentList _parents;
};
}
#endif

View File

@@ -0,0 +1,40 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHPageNode.hxx"
#include "BVHPager.hxx"
namespace simgear {
BVHPageNode::BVHPageNode() :
_useStamp(0),
_requested(false)
{
}
BVHPageNode::~BVHPageNode()
{
}
void
BVHPageNode::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
}

View File

@@ -0,0 +1,66 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHPageNode_hxx
#define BVHPageNode_hxx
#include <list>
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHGroup.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
class BVHPager;
class BVHPageRequest;
class BVHPageNode : public BVHGroup {
public:
BVHPageNode();
virtual ~BVHPageNode();
virtual void accept(BVHVisitor& visitor);
/// Return the usage stamp of the last access
unsigned getUseStamp() const
{ return _useStamp; }
virtual SGSphered computeBoundingSphere() const = 0;
virtual BVHPageRequest* newRequest() = 0;
protected:
virtual void invalidateBound() = 0;
bool getRequested() const
{ return _requested; }
void setRequested(bool requested)
{ _requested = requested; }
private:
friend class BVHPager;
std::list<SGSharedPtr<BVHPageNode> >::iterator _iterator;
unsigned _useStamp;
bool _requested;
};
}
#endif

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHPageRequest.hxx"
namespace simgear {
BVHPageRequest::~BVHPageRequest()
{
}
}

View File

@@ -0,0 +1,42 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHPageRequest_hxx
#define BVHPageRequest_hxx
#include <simgear/structure/SGReferenced.hxx>
namespace simgear {
class BVHPageNode;
class BVHPageRequest : public SGReferenced {
public:
virtual ~BVHPageRequest();
/// Happens in the pager thread, do not modify the calling bvh tree
virtual void load() = 0;
/// Happens in the bvh main thread where the bvh is actually used.
/// So inside here it is safe to modify the paged node
virtual void insert() = 0;
/// The page node this request is for
virtual BVHPageNode* getPageNode() = 0;
};
}
#endif

236
simgear/bvh/BVHPager.cxx Normal file
View File

@@ -0,0 +1,236 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHPager.hxx"
#include <list>
#include <simgear/threads/SGThread.hxx>
#include <simgear/threads/SGGuard.hxx>
#include "BVHPageNode.hxx"
#include "BVHPageRequest.hxx"
namespace simgear {
struct BVHPager::_PrivateData : protected SGThread {
typedef SGSharedPtr<BVHPageRequest> _Request;
typedef std::list<_Request> _RequestList;
typedef std::list<SGSharedPtr<BVHPageNode> > _PageNodeList;
struct _LockedQueue {
void _push(const _Request& request)
{
SGGuard<SGMutex> scopeLock(_mutex);
_requestList.push_back(request);
}
_Request _pop()
{
SGGuard<SGMutex> scopeLock(_mutex);
if (_requestList.empty())
return _Request();
_Request request;
request.swap(_requestList.front());
_requestList.pop_front();
return request;
}
private:
SGMutex _mutex;
_RequestList _requestList;
};
struct _WorkQueue {
void _stop()
{
_push(_Request());
}
void _push(const _Request& request)
{
SGGuard<SGMutex> scopeLock(_mutex);
bool needSignal = _requestList.empty();
_requestList.push_back(request);
if (needSignal)
_waitCondition.signal();
}
_Request _pop()
{
SGGuard<SGMutex> scopeLock(_mutex);
while (_requestList.empty())
_waitCondition.wait(_mutex);
_Request request;
request.swap(_requestList.front());
_requestList.pop_front();
return request;
}
private:
SGMutex _mutex;
SGWaitCondition _waitCondition;
_RequestList _requestList;
};
_PrivateData() :
_started(false),
_useStamp(0)
{
}
virtual ~_PrivateData()
{
_stop();
}
virtual void run()
{
for (;;) {
_Request request = _pendingRequests._pop();
// This means stop working
if (!request.valid())
return;
request->load();
_processedRequests._push(request);
}
}
bool _start()
{
if (_started)
return true;
if (!start())
return false;
_started = true;
return true;
}
void _stop()
{
if (!_started)
return;
// send a stop request ...
_pendingRequests._stop();
// ... and wait for the thread to finish
join();
_started = false;
}
void _use(BVHPageNode& pageNode)
{
if (pageNode._requested) {
// move it forward in the lru list
_pageNodeList.splice(_pageNodeList.end(), _pageNodeList,
pageNode._iterator);
} else {
_Request request = pageNode.newRequest();
if (!request.valid())
return;
pageNode._iterator = _pageNodeList.insert(_pageNodeList.end(),
&pageNode);
pageNode._requested = true;
if (_started) {
_pendingRequests._push(request);
} else {
request->load();
request->insert();
}
}
pageNode._useStamp = _useStamp;
}
void _update(unsigned expiry)
{
// Insert all processed requests
for (;;) {
SGSharedPtr<BVHPageRequest> request;
request = _processedRequests._pop();
if (!request.valid())
break;
request->insert();
}
// ... and throw away stuff that is not used for a long time
unsigned useStamp = _useStamp - expiry;
_PageNodeList::iterator i = _pageNodeList.begin();
while (i != _pageNodeList.end()) {
// Ok, this means if the highest bit in the below difference
// is set which is aequivalent to having a negative difference
// but being wraparound save.
unsigned diff = (*i)->_useStamp - useStamp;
// test the sign bit of the difference
if (!(diff & (~((~0u) >> 1))))
break;
(*i)->clear();
(*i)->_requested = false;
i = _pageNodeList.erase(i);
}
}
bool _started;
unsigned _useStamp;
_WorkQueue _pendingRequests;
_LockedQueue _processedRequests;
// Store the rcu list of loaded nodes so that they can expire
_PageNodeList _pageNodeList;
};
BVHPager::BVHPager() :
_privateData(new _PrivateData)
{
}
BVHPager::~BVHPager()
{
delete _privateData;
_privateData = 0;
}
bool
BVHPager::start()
{
return _privateData->_start();
}
void
BVHPager::stop()
{
_privateData->_stop();
}
void
BVHPager::use(BVHPageNode& pageNode)
{
_privateData->_use(pageNode);
}
void
BVHPager::update(unsigned expiry)
{
_privateData->_update(expiry);
}
void
BVHPager::setUseStamp(unsigned stamp)
{
_privateData->_useStamp = stamp;
}
unsigned
BVHPager::getUseStamp() const
{
return _privateData->_useStamp;
}
}

60
simgear/bvh/BVHPager.hxx Normal file
View File

@@ -0,0 +1,60 @@
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHPager_hxx
#define BVHPager_hxx
#include <simgear/structure/SGSharedPtr.hxx>
namespace simgear {
class BVHPageNode;
class BVHPageRequest;
class BVHPager {
public:
BVHPager();
~BVHPager();
/// Starts the pager thread
bool start();
/// Stops the pager thread
void stop();
/// Use this page node, if loaded make it as used, if not loaded schedule
void use(BVHPageNode& pageNode);
/// Call this from the main thread to incorporate the processed page
/// requests into the bounding volume tree
void update(unsigned expiry);
/// The usage stamp to mark usage of BVHPageNodes
void setUseStamp(unsigned stamp);
unsigned getUseStamp() const;
private:
BVHPager(const BVHPager&);
BVHPager& operator=(const BVHPager&);
struct _PrivateData;
_PrivateData* _privateData;
};
}
#endif

View File

@@ -0,0 +1,45 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHStaticBinary.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
BVHStaticBinary::BVHStaticBinary(unsigned splitAxis,
const BVHStaticNode* leftChild,
const BVHStaticNode* rightChild,
const SGBoxf& boundingBox) :
_splitAxis(splitAxis),
_leftChild(leftChild),
_rightChild(rightChild),
_boundingBox(boundingBox)
{
}
BVHStaticBinary::~BVHStaticBinary()
{
}
void
BVHStaticBinary::accept(BVHVisitor& visitor, const BVHStaticData& data) const
{
visitor.apply(*this, data);
}
}

View File

@@ -0,0 +1,78 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticBinary_hxx
#define BVHStaticBinary_hxx
#include <simgear/math/SGGeometry.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHStaticNode.hxx"
namespace simgear {
class BVHStaticBinary : public BVHStaticNode {
public:
BVHStaticBinary(unsigned splitAxis, const BVHStaticNode* leftChild,
const BVHStaticNode* rightChild, const SGBoxf& box);
virtual ~BVHStaticBinary();
virtual void accept(BVHVisitor& visitor, const BVHStaticData& data) const;
void traverse(BVHVisitor& visitor, const BVHStaticData& data) const
{
_leftChild->accept(visitor, data);
_rightChild->accept(visitor, data);
}
// Traverse call that first enters the child node that is potentially closer
// to the given point than the other.
template<typename T>
void traverse(BVHVisitor& visitor, const BVHStaticData& data,
const SGVec3<T>& pt) const
{
float center = 0.5f*(_boundingBox.getMin()[_splitAxis]
+ _boundingBox.getMax()[_splitAxis]);
if (pt[_splitAxis] < center) {
_leftChild->accept(visitor, data);
_rightChild->accept(visitor, data);
} else {
_rightChild->accept(visitor, data);
_leftChild->accept(visitor, data);
}
}
unsigned getSplitAxis() const
{ return _splitAxis; }
const BVHStaticNode* getLeftChild() const
{ return _leftChild; }
const BVHStaticNode* getRightChild() const
{ return _rightChild; }
const SGBoxf& getBoundingBox() const
{ return _boundingBox; }
private:
// Note the order of the members, this is to avoid padding
unsigned _splitAxis;
SGSharedPtr<const BVHStaticNode> _leftChild;
SGSharedPtr<const BVHStaticNode> _rightChild;
SGBoxf _boundingBox;
};
}
#endif

View File

@@ -0,0 +1,57 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticData_hxx
#define BVHStaticData_hxx
#include <vector>
#include <simgear/structure/SGReferenced.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/math/SGGeometry.hxx>
#include "BVHMaterial.hxx"
namespace simgear {
class BVHStaticData : public SGReferenced {
public:
virtual ~BVHStaticData() {}
unsigned addVertex(const SGVec3f& vertex)
{ _vertices.push_back(vertex); return _vertices.size() - 1; }
const SGVec3f& getVertex(unsigned i) const
{ return _vertices[i]; }
unsigned addMaterial(const BVHMaterial* material)
{ _materials.push_back(material); return _materials.size() - 1; }
const BVHMaterial* getMaterial(unsigned i) const
{ if (_materials.size() <= i) return 0; return _materials[i]; }
void trim()
{
std::vector<SGVec3f>(_vertices).swap(_vertices);
std::vector<SGSharedPtr<const BVHMaterial> >(_materials).swap(_materials);
}
private:
std::vector<SGVec3f> _vertices;
std::vector<SGSharedPtr<const BVHMaterial> > _materials;
};
}
#endif

View File

@@ -0,0 +1,51 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHStaticGeometry.hxx"
#include "BVHBoundingBoxVisitor.hxx"
namespace simgear {
BVHStaticGeometry::BVHStaticGeometry(const BVHStaticNode* staticNode,
const BVHStaticData* staticData) :
_staticNode(staticNode),
_staticData(staticData)
{
}
BVHStaticGeometry::~BVHStaticGeometry()
{
}
void
BVHStaticGeometry::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
SGSphered
BVHStaticGeometry::computeBoundingSphere() const
{
BVHBoundingBoxVisitor bbv;
_staticNode->accept(bbv, *_staticData);
SGSphered sphere;
sphere.expandBy(SGBoxd(bbv.getBox()));
return sphere;
}
}

View File

@@ -0,0 +1,56 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticGeometry_hxx
#define BVHStaticGeometry_hxx
#include <simgear/math/SGGeometry.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
namespace simgear {
class BVHStaticGeometry : public BVHNode {
public:
BVHStaticGeometry(const BVHStaticNode* staticNode,
const BVHStaticData* staticData);
virtual ~BVHStaticGeometry();
virtual void accept(BVHVisitor& visitor);
void traverse(BVHVisitor& visitor) const
{ _staticNode->accept(visitor, *_staticData); }
const BVHStaticData* getStaticData() const
{ return _staticData; }
const BVHStaticNode* getStaticNode() const
{ return _staticNode; }
virtual SGSphered computeBoundingSphere() const;
private:
SGSharedPtr<const BVHStaticNode> _staticNode;
SGSharedPtr<const BVHStaticData> _staticData;
};
}
#endif

View File

@@ -0,0 +1,228 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticGeometryBuilder_hxx
#define BVHStaticGeometryBuilder_hxx
#include <algorithm>
#include <map>
#include <set>
#include <simgear/structure/SGReferenced.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHTransform.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
#include "BVHStaticLeaf.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
#include "BVHStaticGeometry.hxx"
namespace simgear {
class BVHStaticGeometryBuilder : public SGReferenced {
public:
BVHStaticGeometryBuilder() :
_staticData(new BVHStaticData),
_currentMaterial(0),
_currentMaterialIndex(~0u)
{ }
virtual ~BVHStaticGeometryBuilder()
{ }
struct LeafRef {
LeafRef(const BVHStaticLeaf* leaf, const BVHStaticData& data) :
_leaf(leaf),
_box(_leaf->computeBoundingBox(data)),
_center(_leaf->computeCenter(data))
{ }
SGSharedPtr<const BVHStaticLeaf> _leaf;
SGBoxf _box;
SGVec3f _center;
};
typedef std::list<LeafRef> LeafRefList;
struct LeafRefLess : public std::binary_function<LeafRef, LeafRef, bool> {
LeafRefLess(unsigned sortAxis) : _sortAxis(sortAxis) {}
bool operator()(const LeafRef& x, const LeafRef& y)
{ return x._center[_sortAxis] < y._center[_sortAxis]; }
unsigned _sortAxis;
};
SGSharedPtr<BVHStaticData> _staticData;
LeafRefList _leafRefList;
typedef std::map<SGVec3f, unsigned> VertexMap;
VertexMap _vertexMap;
typedef std::set<SGVec3<unsigned> > TriangleSet;
TriangleSet _triangleSet;
void setCurrentMaterial(const BVHMaterial* material)
{
_currentMaterial = material;
_currentMaterialIndex = addMaterial(material);
}
const BVHMaterial* getCurrentMaterial() const
{
return _currentMaterial;
}
unsigned addMaterial(const BVHMaterial* material)
{
MaterialMap::const_iterator i = _materialMap.find(material);
if (i != _materialMap.end())
return i->second;
unsigned index = _staticData->addMaterial(material);
_materialMap[material] = index;
return index;
}
typedef std::map<const BVHMaterial*, unsigned> MaterialMap;
MaterialMap _materialMap;
const BVHMaterial* _currentMaterial;
unsigned _currentMaterialIndex;
void addTriangle(const SGVec3f& v1, const SGVec3f& v2, const SGVec3f& v3)
{
unsigned indices[3] = { addVertex(v1), addVertex(v2), addVertex(v3) };
std::sort(indices, indices + 3);
SGVec3<unsigned> indexKey(indices);
if (_triangleSet.find(indexKey) != _triangleSet.end())
return;
_triangleSet.insert(indexKey);
BVHStaticTriangle* staticTriangle;
staticTriangle = new BVHStaticTriangle(_currentMaterialIndex, indices);
_leafRefList.push_back(LeafRef(staticTriangle, *_staticData));
}
unsigned addVertex(const SGVec3f& v)
{
VertexMap::const_iterator i = _vertexMap.find(v);
if (i != _vertexMap.end())
return i->second;
unsigned index = _staticData->addVertex(v);
_vertexMap[v] = index;
return index;
}
BVHStaticGeometry* buildTree()
{
const BVHStaticNode* tree = buildTreeRecursive(_leafRefList);
if (!tree)
return 0;
_staticData->trim();
return new BVHStaticGeometry(tree, _staticData);
}
private:
static void
centerSplitLeafs(unsigned splitAxis, const double& splitValue,
LeafRefList& leafs, LeafRefList split[2])
{
while (!leafs.empty()) {
if (leafs.front()._center[splitAxis] < splitValue) {
split[0].splice(split[0].begin(), leafs, leafs.begin());
} else {
split[1].splice(split[1].begin(), leafs, leafs.begin());
}
}
}
static void
equalSplitLeafs(unsigned splitAxis, LeafRefList& leafs,
LeafRefList split[2])
{
leafs.sort(LeafRefLess(splitAxis));
while (true) {
if (leafs.empty())
break;
split[0].splice(split[0].begin(), leafs, leafs.begin());
if (leafs.empty())
break;
split[1].splice(split[1].begin(), leafs, --leafs.end());
}
}
static const BVHStaticNode* buildTreeRecursive(LeafRefList& leafs)
{
// recursion termination
if (leafs.empty())
return 0;
// FIXME size is O(n)!!!
// if (leafs.size() == 1)
if (++leafs.begin() == leafs.end())
return leafs.front()._leaf;
SGBoxf box;
for (LeafRefList::const_iterator i = leafs.begin();
i != leafs.end(); ++i)
box.expandBy(i->_box);
// // FIXME ...
// if (length(box.getSize()) < 1)
// return new BVHBox(box);
if (box.empty())
return 0;
unsigned splitAxis = box.getBroadestAxis();
LeafRefList splitLeafs[2];
double splitValue = box.getCenter()[splitAxis];
centerSplitLeafs(splitAxis, splitValue, leafs, splitLeafs);
if (splitLeafs[0].empty() || splitLeafs[1].empty()) {
for (unsigned i = 0; i < 3 ; ++i) {
if (i == splitAxis)
continue;
leafs.swap(splitLeafs[0]);
leafs.splice(leafs.begin(), splitLeafs[1]);
splitValue = box.getCenter()[i];
centerSplitLeafs(i, splitValue, leafs, splitLeafs);
if (!splitLeafs[0].empty() && !splitLeafs[1].empty()) {
splitAxis = i;
break;
}
}
}
if (splitLeafs[0].empty() || splitLeafs[1].empty()) {
leafs.swap(splitLeafs[0]);
leafs.splice(leafs.begin(), splitLeafs[1]);
equalSplitLeafs(splitAxis, leafs, splitLeafs);
}
const BVHStaticNode* child0 = buildTreeRecursive(splitLeafs[0]);
const BVHStaticNode* child1 = buildTreeRecursive(splitLeafs[1]);
if (!child0)
return child1;
if (!child1)
return child0;
return new BVHStaticBinary(splitAxis, child0, child1, box);
}
};
}
#endif

View File

@@ -0,0 +1,27 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHStaticLeaf.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
BVHStaticLeaf::~BVHStaticLeaf()
{
}
}

View File

@@ -0,0 +1,38 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticLeaf_hxx
#define BVHStaticLeaf_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHStaticNode.hxx"
namespace simgear {
class BVHStaticLeaf : public BVHStaticNode {
public:
virtual ~BVHStaticLeaf();
virtual void accept(BVHVisitor& visitor, const BVHStaticData& data) const = 0;
virtual SGBoxf computeBoundingBox(const BVHStaticData&) const = 0;
virtual SGVec3f computeCenter(const BVHStaticData&) const = 0;
};
}
#endif

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHStaticNode.hxx"
namespace simgear {
BVHStaticNode::~BVHStaticNode()
{
}
}

View File

@@ -0,0 +1,37 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticNode_hxx
#define BVHStaticNode_hxx
#include <simgear/structure/SGReferenced.hxx>
namespace simgear {
class BVHStaticData;
class BVHVisitor;
class BVHStaticNode : public SGReferenced {
public:
virtual ~BVHStaticNode();
virtual void accept(BVHVisitor&, const BVHStaticData&) const = 0;
};
}
#endif

View File

@@ -0,0 +1,58 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHStaticTriangle.hxx"
#include "BVHVisitor.hxx"
namespace simgear {
BVHStaticTriangle::BVHStaticTriangle(unsigned material,
const unsigned indices[3]) :
_material(material)
{
for (unsigned i = 0; i < 3; ++i)
_indices[i] = indices[i];
}
BVHStaticTriangle::~BVHStaticTriangle()
{
}
void
BVHStaticTriangle::accept(BVHVisitor& visitor, const BVHStaticData& data) const
{
visitor.apply(*this, data);
}
SGBoxf
BVHStaticTriangle::computeBoundingBox(const BVHStaticData& data) const
{
SGBoxf box;
box.expandBy(data.getVertex(_indices[0]));
box.expandBy(data.getVertex(_indices[1]));
box.expandBy(data.getVertex(_indices[2]));
return box;
}
SGVec3f
BVHStaticTriangle::computeCenter(const BVHStaticData& data) const
{
return getTriangle(data).getCenter();
}
}

View File

@@ -0,0 +1,54 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHStaticTriangle_hxx
#define BVHStaticTriangle_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHStaticData.hxx"
#include "BVHStaticLeaf.hxx"
namespace simgear {
class BVHStaticTriangle : public BVHStaticLeaf {
public:
BVHStaticTriangle(unsigned material, const unsigned indices[3]);
virtual ~BVHStaticTriangle();
virtual void accept(BVHVisitor& visitor, const BVHStaticData& data) const;
virtual SGBoxf computeBoundingBox(const BVHStaticData& data) const;
virtual SGVec3f computeCenter(const BVHStaticData& data) const;
SGTrianglef getTriangle(const BVHStaticData& data) const
{
return SGTrianglef(data.getVertex(_indices[0]),
data.getVertex(_indices[1]),
data.getVertex(_indices[2]));
}
unsigned getMaterialIndex() const
{ return _material; }
private:
unsigned _indices[3];
unsigned _material;
};
}
#endif

View File

@@ -0,0 +1,265 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "BVHSubTreeCollector.hxx"
#include <simgear/math/SGGeometry.hxx>
#include <cassert>
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHTransform.hxx"
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
#include "BVHStaticGeometry.hxx"
#include "BVHBoundingBoxVisitor.hxx"
namespace simgear {
BVHSubTreeCollector::BVHSubTreeCollector(const SGSphered& sphere) :
_sphere(sphere)
{
}
BVHSubTreeCollector::~BVHSubTreeCollector()
{
}
void
BVHSubTreeCollector::apply(BVHGroup& group)
{
if (!intersects(_sphere, group.getBoundingSphere()))
return;
// The _nodeList content is somehow the 'return value' of the subtree.
// Set it to zero to see if we have something to collect down there.
NodeList parentNodeList;
pushNodeList(parentNodeList);
group.traverse(*this);
popNodeList(parentNodeList);
}
void
BVHSubTreeCollector::apply(BVHPageNode& group)
{
if (!intersects(_sphere, group.getBoundingSphere()))
return;
// The _nodeList content is somehow the 'return value' of the subtree.
// Set it to zero to see if we have something to collect down there.
NodeList parentNodeList;
pushNodeList(parentNodeList);
group.traverse(*this);
popNodeList(parentNodeList);
}
void
BVHSubTreeCollector::apply(BVHTransform& transform)
{
if (!intersects(_sphere, transform.getBoundingSphere()))
return;
SGSphered sphere = _sphere;
_sphere = transform.sphereToLocal(sphere);
NodeList parentNodeList;
pushNodeList(parentNodeList);
transform.traverse(*this);
if (haveChildren()) {
BVHTransform* currentBvTransform = new BVHTransform;
currentBvTransform->setTransform(transform);
popNodeList(parentNodeList, currentBvTransform);
} else {
popNodeList(parentNodeList);
}
_sphere = sphere;
}
void
BVHSubTreeCollector::apply(BVHMotionTransform& transform)
{
if (!intersects(_sphere, transform.getBoundingSphere()))
return;
SGSphered sphere = _sphere;
_sphere = transform.sphereToLocal(sphere, transform.getStartTime());
_sphere.expandBy(transform.sphereToLocal(sphere, transform.getEndTime()));
NodeList parentNodeList;
pushNodeList(parentNodeList);
transform.traverse(*this);
if (haveChildren()) {
BVHMotionTransform* currentBvTransform = new BVHMotionTransform;
currentBvTransform->setTransform(transform);
popNodeList(parentNodeList, currentBvTransform);
} else {
popNodeList(parentNodeList);
}
_sphere = sphere;
}
void
BVHSubTreeCollector::apply(BVHLineGeometry& lineSegment)
{
if (!intersects(_sphere, lineSegment.getBoundingSphere()))
return;
addNode(&lineSegment);
}
void
BVHSubTreeCollector::apply(BVHStaticGeometry& node)
{
if (!intersects(_sphere, node.getBoundingSphere()))
return;
assert(!_staticNode);
node.traverse(*this);
if (!_staticNode)
return;
BVHStaticGeometry* staticTree;
staticTree = new BVHStaticGeometry(_staticNode, node.getStaticData());
addNode(staticTree);
_staticNode = 0;
}
void
BVHSubTreeCollector::apply(const BVHStaticBinary& node,
const BVHStaticData& data)
{
assert(!_staticNode);
if (!intersects(_sphere, node.getBoundingBox()))
return;
SGVec3d corner(node.getBoundingBox().getFarestCorner(_sphere.getCenter()));
if (intersects(_sphere, corner)) {
// If the box is totally contained in the sphere, just take it all
_staticNode = &node;
} else {
// We have still a chance to seperate something out, try it.
node.getLeftChild()->accept(*this, data);
SGSharedPtr<const BVHStaticNode> leftStaticNode = _staticNode;
_staticNode = 0;
node.getRightChild()->accept(*this, data);
SGSharedPtr<const BVHStaticNode> rightStaticNode = _staticNode;
_staticNode = 0;
if (leftStaticNode) {
if (rightStaticNode) {
BVHBoundingBoxVisitor bbv;
leftStaticNode->accept(bbv, data);
rightStaticNode->accept(bbv, data);
_staticNode
= new BVHStaticBinary(node.getSplitAxis(), leftStaticNode,
rightStaticNode, bbv.getBox());
} else {
_staticNode = leftStaticNode;
}
} else {
if (rightStaticNode) {
_staticNode = rightStaticNode;
} else {
// Nothing to report to parents ...
}
}
}
}
void
BVHSubTreeCollector::apply(const BVHStaticTriangle& node,
const BVHStaticData& data)
{
if (!intersects(_sphere, node.getTriangle(data)))
return;
_staticNode = &node;
}
void
BVHSubTreeCollector::addNode(BVHNode* node)
{
if (!node)
return;
if (!_nodeList.capacity())
_nodeList.reserve(64);
_nodeList.push_back(node);
}
void
BVHSubTreeCollector::popNodeList(NodeList& parentNodeList, BVHGroup* transform)
{
// Only do something if we really have children
if (!_nodeList.empty()) {
NodeList::const_iterator i;
for (i = _nodeList.begin(); i != _nodeList.end(); ++i)
transform->addChild(*i);
parentNodeList.push_back(transform);
}
_nodeList.swap(parentNodeList);
}
void
BVHSubTreeCollector::popNodeList(NodeList& parentNodeList)
{
// Only do something if we really have children
if (!_nodeList.empty()) {
if (_nodeList.size() == 1) {
parentNodeList.push_back(_nodeList.front());
} else {
BVHGroup* group = new BVHGroup;
NodeList::const_iterator i;
for (i = _nodeList.begin(); i != _nodeList.end(); ++i)
group->addChild(*i);
parentNodeList.push_back(group);
}
}
_nodeList.swap(parentNodeList);
}
SGSharedPtr<BVHNode>
BVHSubTreeCollector::getNode() const
{
if (_nodeList.empty())
return 0;
if (_nodeList.size() == 1)
return _nodeList.front();
BVHGroup* group = new BVHGroup;
NodeList::const_iterator i;
for (i = _nodeList.begin(); i != _nodeList.end(); ++i)
group->addChild(*i);
return group;
}
}

View File

@@ -0,0 +1,82 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef BVHSubTreeCollector_hxx
#define BVHSubTreeCollector_hxx
#include <simgear/math/SGGeometry.hxx>
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
#include "BVHStaticNode.hxx"
namespace simgear {
/// Visitor to subcollect parts of an existing bounding volume tree.
/// Given a sphere, it takes those sub parts of the tree that intersect the
/// sphere. Transform nodes of any kind are preserved to be able to ask for
/// intersections a different times. The subcollected tree is kept as small as
/// possible as it does avoid having groups with single childs.
/// Also the BVHStaticGeometry parts are seached for subtrees that are outside
/// the sphere.
class BVHSubTreeCollector : public BVHVisitor {
public:
typedef std::vector<SGSharedPtr<BVHNode> > NodeList;
BVHSubTreeCollector(const SGSphered& sphere = SGSphered());
virtual ~BVHSubTreeCollector();
virtual void apply(BVHGroup&);
virtual void apply(BVHPageNode&);
virtual void apply(BVHTransform&);
virtual void apply(BVHMotionTransform&);
virtual void apply(BVHLineGeometry&);
virtual void apply(BVHStaticGeometry&);
virtual void apply(const BVHStaticBinary&, const BVHStaticData&);
virtual void apply(const BVHStaticTriangle&, const BVHStaticData&);
void setSphere(const SGSphered& sphere)
{ _sphere = sphere; }
const SGSphered& getSphere() const
{ return _sphere; }
bool haveChildren() const
{ return !_nodeList.empty(); }
void addNode(BVHNode* node);
void pushNodeList(NodeList& parentNodeList)
{ _nodeList.swap(parentNodeList); }
void popNodeList(NodeList& parentNodeList, BVHGroup* transform);
void popNodeList(NodeList& parentNodeList);
SGSharedPtr<BVHNode> getNode() const;
protected:
NodeList _nodeList;
SGSharedPtr<const BVHStaticNode> _staticNode;
private:
SGSphered _sphere;
};
}
#endif

View File

@@ -0,0 +1,99 @@
// Copyright (C) 2008 - 2009 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifdef HAVE_CONFIG_H
# include <simgear_config.h>
#endif
#include "BVHTransform.hxx"
#include "BVHVisitor.hxx"
#include "BVHNode.hxx"
#include "BVHGroup.hxx"
namespace simgear {
BVHTransform::BVHTransform() :
_toWorld(SGMatrixd::unit()),
_toLocal(SGMatrixd::unit()),
_toWorldAmplification(1),
_toLocalAmplification(1)
{
}
BVHTransform::~BVHTransform()
{
}
void
BVHTransform::accept(BVHVisitor& visitor)
{
visitor.apply(*this);
}
void
BVHTransform::setTransform(const BVHTransform& transform)
{
_toWorld = transform._toWorld;
_toLocal = transform._toLocal;
_toWorldAmplification = transform._toWorldAmplification;
_toLocalAmplification = transform._toLocalAmplification;
invalidateParentBound();
}
void
BVHTransform::setToWorldTransform(const SGMatrixd& transform)
{
_toWorld = transform;
invert(_toLocal, transform);
updateAmplificationFactors();
invalidateParentBound();
}
void
BVHTransform::setToLocalTransform(const SGMatrixd& transform)
{
_toLocal = transform;
invert(_toWorld, transform);
updateAmplificationFactors();
invalidateParentBound();
}
SGSphered
BVHTransform::computeBoundingSphere() const
{
return sphereToWorld(BVHGroup::computeBoundingSphere());
}
void
BVHTransform::updateAmplificationFactors()
{
// Hmm, this is just a hint, true?
// But anyway, almost all transforms in a scenegraph will
// have them equal to 1 ...
double r = norm(vecToWorld(SGVec3d(1, 0, 0)));
r = std::max(r, norm(vecToWorld(SGVec3d(0, 1, 0))));
r = std::max(r, norm(vecToWorld(SGVec3d(0, 0, 1))));
_toWorldAmplification = r;
r = norm(vecToLocal(SGVec3d(1, 0, 0)));
r = std::max(r, norm(vecToLocal(SGVec3d(0, 1, 0))));
r = std::max(r, norm(vecToLocal(SGVec3d(0, 0, 1))));
_toLocalAmplification = r;
}
}

Some files were not shown because too many files have changed in this diff Show More