ehofman [Wed, 9 Mar 2005 15:12:01 +0000 (15:12 +0000)]
Frederic Bouvier:
Norman Vine wrote :
> Frederic Bouvier writes:
>
>> Quoting Andy Ross:
>>> * Hopefully in a CPU-friendly way. I know that older versions of
>>> the NVidia drivers did this by spinning in a polling loop
>>> inside the driver. I'm not sure if this has been fixed or not.
>>>
>>> From my experience, the latest non-beta Windows NVidia driver seems to eat CPU
>>
>> even with sync to vblank enabled. The CPU usage is always 100%.
>
> Buried in the PPE sources is a 'hackish' but portable way to limit CPU usage if the desired framerate is met
>
> /*
> Frame Rate Limiter.
>
> This prevents any one 3D window from updating faster than
> about 60Hz. This saves a ton of CPU time on fast machines.
>
> ! I THINK I MUNGED THE VALUE FOR ulMilliSecondSleep() NHV !
> */
>
> static ulClock *ck = NULL ;
>
> if ( frame_rate_limiter )
> {
> if ( ck == NULL )
> {
> ck = new ulClock ;
> ck -> update () ;
> }
>
> int t_ms = (int) ( ck->getDeltaTime() * 1000.0 ) ; /* Convert to ms */
>
> if ( t_ms < 16 )
> ulMilliSecondSleep ( 16 - t_ms ) ;
> }
>
>
I implemented the method pointed out by Norman. It works great on windows and saves me a lot of CPU cycles. This way, I can get the same framerate in moderately populated areas and have CPU idle 50% of the time instead of wildly looping in the NVidia driver while waiting to sync on vblank.
It has been tested on Linux by Melchior. He saw the same gain in CPU cycles.
curt [Fri, 25 Feb 2005 22:27:15 +0000 (22:27 +0000)]
Add support for drawing only a portion of the configured view frustum. This
is one way to get an asymmetric view frustum without needing to compute the
sgFrustum parameters directly.
curt [Fri, 25 Feb 2005 21:20:17 +0000 (21:20 +0000)]
Currently, aspect ratio is computed directly from the window dimensions.
I have added a --aspect-ratio-multiplier=x.xx option to give some end user
control over the aspect ratio. (This may seem a little strange, but it's a
building block towards the capability of doing asymmetric view frustums in
FlightGear.)
curt [Fri, 25 Feb 2005 19:41:53 +0000 (19:41 +0000)]
The view frustum is defined in plib apps using calls to ssgSetFOV() and
ssgSetNearFar(). This by default creates a symmetric view frustum which is
typically what an application wants.
However, to get control of the view frustum in order to build support for
asymmetric view frustums, we need to wrap these calls with a bit of our own
logic.
This set of changes wraps all calls to ssgSetFOV() and ssgSetNearFar() with
FGRenderer methods.
I also standardized how the FGRenderer class is handled in globals.[ch]xx.
This led to some cascading changes in a variety of source files.
As I was working my way through the changes, I fixed a few warnings along
the way.
ehofman [Thu, 24 Feb 2005 15:05:56 +0000 (15:05 +0000)]
Vivian Meazza:
I attach the long-promised improved version of the USS Nimitz.
It includes an improved version of the FLOLS, which requires the attached
diff to be applied to AICarrier.cxx and AICArrier.hxx.
I've made lots of eye-candy in the form or the flightdeck crew.
Unfortunately, it about doubles the size of the tarball. I'll send it to you
later; when I've figured out some way of only loading on request (any advice
would be very welcome).
I could provide a \u2018bare\u2019 version to cut down on the vertex count for
less capable systems however, the count isn\u2019t huge in the first place.
I've cut the textures down as far as I can without losing definition.
ehofman [Thu, 10 Feb 2005 09:01:51 +0000 (09:01 +0000)]
Durk Talsma:
I just heard from John Wojnaroski that you and he are going to work on getting
a flightgear demo machine up for the linux expo thursday and Friday. John
indicated that he would very much like to get a CVS version with the new
traffic code up and running before the expo.
Ts defaults to 0.0, so if you don't set it it samples at the highest possible
frequency.
Add an offset to the input variables (input and reference).
Example:
<reference>
<prop>/controls/flight/elevator</prop>
<scale>-1.5</scale>
<offset>1.0</offset>
</reference>
Note that <scale> has higher precedence than <offset>, regardless of the order
that they appear in the config file.
ehofman [Mon, 31 Jan 2005 18:18:25 +0000 (18:18 +0000)]
Melchior FRANZ:
Yesterday night it occurred to me that the current handling of missing METAR
strings isn't good enough:
- in case of missing METAR strings, don't re-send the last successful string,
but the last successful string sent to *this* client. (If one client is
running in virtual December, it won't be happy about dropped in summer
weather.)
- fix a bug that allowed -vc notation (options -v and -c), but broke a lot of
other notations (-b/var/tmp). Only -v can now be accumulated again, as
in -vvvv.
ehofman [Mon, 31 Jan 2005 10:36:59 +0000 (10:36 +0000)]
Andrew Midson:
I have made the
'Select Airport from List' option in FlightGear work
(I think) properly. I have some concerns about the
solution, which could be broken by changes to plib (if
they re-use the value I have assigned to
PUCLASS_LIST), but for the moment it seems to work OK.
Erik Hofman:
A request has been sent to John Fay to include the puList
code in the puAux subdirectory of plib so expect some
changes for future version of FlightGear.
ehofman [Sat, 29 Jan 2005 10:22:44 +0000 (10:22 +0000)]
Geoff Air:
RE: --aircraft=ufo in system.fgfsrc is ignored
To change a 'feature', one that has been mentioned here many
times, and again recently, place the following code block
into fgInitFGAircraft.
In its favour, I would argue this means FG can be run without
a command line, provided FG_ROOT has been set in the
environment, and that seems to me, as it should be ... ;=))
Perhaps the only counter, is that system.fgfsrc is read twice,
but so are others, like .fgfsrc, for other (local) options ...
or system.fgfsrc should .nt. be used for 'aircraft' ?
ehofman [Sat, 29 Jan 2005 09:45:12 +0000 (09:45 +0000)]
Melchior FRANZ:
Here's a Perl implementation of a METAR proxy server. Tested on Linux only, but
should work on all Unices, and possibly on Windows, too. Its purpose is to:
- provide METAR data for machines without internet connection
- centralize METAR fetching: one machine in a network runs the proxy, all
other connect to the proxy
- deliver defined and reproducible weather for educational purposes
- save weather situations for later use in fgfs
Quick instructions to download the world weather for the last 3 hours
and run proxy and fgfs with it (~ 2MB download; for less bandwidth
consumption see the --record mode):
ehofman [Thu, 27 Jan 2005 10:49:58 +0000 (10:49 +0000)]
Melchior FRANZ:
Here's again one of the more obscure bugs that valgrind complains about: somehow
the STL container classes manage to read out values before they were ever set.
This patch fixes that. This may not cause any harm in this case, but valgrind
seems to *always* be right about them.
daveluff [Fri, 21 Jan 2005 15:50:29 +0000 (15:50 +0000)]
Emergency fix for AI model loading - non existance of the piper model as in the latest base package crashes the program - add exception handler during load. Needs to be replaced with better AI aircraft loading logic at some point
ehofman [Thu, 20 Jan 2005 09:28:45 +0000 (09:28 +0000)]
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)
curt [Mon, 3 Jan 2005 00:16:16 +0000 (00:16 +0000)]
Initialize the timer countdown value since this could conceivably start as
any randomly large number (thus preventing the first station seach from
happening at least for a very long time.)
curt [Thu, 30 Dec 2004 14:57:12 +0000 (14:57 +0000)]
Add back power button binding, but move the location to /instrumentation/nav
rather than /instrumentation/comm ... we need to be a little careful here
because typically, a single knob controls power to both matched com/nav pairs.
curt [Wed, 29 Dec 2004 20:40:41 +0000 (20:40 +0000)]
FGIO::shutdown_all() is called from the FGIO destructor so remove the extra
explicit calls to shutdown_all() which was causing this to be called twice.
This could cause problems with some IO modules (such as attempting to close
an invalid file descriptor the second time.)
curt [Wed, 29 Dec 2004 20:38:17 +0000 (20:38 +0000)]
FGIO::shutdown_all() is called from the FGIO destructor so we don't want
a seperate explicite call or the io channels will be forced to try to shutdown
twice which could cause problems for some IO modules (i.e. attempting to
close an invalid file descriptor the second time ...)
ehofman [Mon, 27 Dec 2004 13:21:18 +0000 (13:21 +0000)]
Mathias Fröhlich:
We should now be able to find
wires or catapults when the ac3d model is loaded without the crease patch
(caused by the much more unstructured scene graph emitted by the old loader).
It should also emit more warnings if the carrier hardware configuration
includes conflicting definitions.
That code is the most intrusive one, it should not be used until you configure
an aircraft carrier as a aimodel. So I think it should be save to apply that
before the release too.
curt [Sun, 26 Dec 2004 23:31:35 +0000 (23:31 +0000)]
David Luff:
Attached is a patched runways.cxx. This fixes the find runway nearest to a given heading code. This was returning the last runway loaded at a given airport, not the nearest runway to the heading requested (which seems to always be 270deg by default). I have no idea how this has survived unnoticed for so long - I think it might be because you need to start at an airport with a runway near to 27 and one much greater than 27 eg. 36 to really tickle it, otherwise the runway nearest to 27 tends to be the final one loaded anyway. Try starting at KARR with and without the patch and note the surface wind. This should go in before the release.
curt [Wed, 22 Dec 2004 23:57:07 +0000 (23:57 +0000)]
Replace the data/Airports/basic.dat.gz and data/Airports/runways.dat.gz with
a single apt.dat.gz file which is in the native X-Plane format.
To do this I wrote a front end loader than builds the airport and runway
list. Some of the changes I needed to make had a cascading effect, so there
are minor naming changes scattered throughout the code.
ehofman [Sat, 18 Dec 2004 10:33:36 +0000 (10:33 +0000)]
Mathias Fröhlich:
I have a small update which fixes the algorythm used for marking solid
surfaces for some cases where some branch nodes carry the object names I had
expected in the leaf nodes.
That will also introduce the possibility to mark whole subtrees from the
scenegraph solid.