curt [Thu, 21 Feb 2008 21:36:20 +0000 (21:36 +0000)]
Till Busch:
As discussed with Tim on irc: Here is a quick fix for the memory-hungry tile
manager. Due to bugs in FGNewCache, old tiles were never deleted.
I left the timestamp-updates in the cull-traversal. but imho things work
just as well when timestamps are updated in FGNewCache::insert_tile() and
FGNewCache::get_tile()
mfranz [Sun, 17 Feb 2008 09:44:03 +0000 (09:44 +0000)]
Roy Vegard OVESEN & Lee ELLIOT:
Lee has added two new filter types, "gain" and "reciprocal". These filters can
read their gain factor from a property. In the process we also added minimum
and maximum output clamps that are applicable to all filters.
I added the ability to configure adaptive controllers i.e. the controller gain
can be tied to a property, so that it can be changed at runtime. This
requires a change in the xml structure of the autopilot configuration file:
<Kp>
<prop>/autopilot/KAP140/settings/ROL/Kp</prop>
<value>0.10</value>
</Kp> <!-- proportional gain -->
The old method <Kp>0.10</Kp> still works so as to not break all existing
autopilots, but it will output a warning to use the new method.
curt [Mon, 4 Feb 2008 20:01:20 +0000 (20:01 +0000)]
Roy Ovesen:
Please find attatched a new version of xmlauto.cxx.
Remove the call to build() in reinit(). This prevents build() from being
called twice when Reload Autopilot is selected from the Debug menu.
I've also added the ability to define an enabled property for the filters.
It's used like the PID controllers. If there is no enabled tag then the
filter defaults to enabled so that nothing should get broken by this change.
This ability can be used to create a filter between the output of a PID
controller and the property that it controls (a control surface). By putting
a noise spike filter between the output of a controller and the control
surface that it controls, we can simulate the limited movement rate that is
inherent in autopilot servos.
mfranz [Thu, 31 Jan 2008 22:33:32 +0000 (22:33 +0000)]
Daniyar ATADJANOV:
This patch contains bugfixes from my previous patch
(i made mistakes when using "diff" utility last time):
1. Now ATC do not tells us to go around because of
traffic on RWy, when that traffic is WE.
2. Now ATC don't say that we must follow ourself
(like "GFS, number two, follow GFS on final").
And new Tower-ATC features:
1. Requesting departure clearance. When you are
on taxiway, you can request departure clearance.
Tower will answer with something like:
"Line up runway two eight right".
TODO: check if any AI-Planes on final and tell
something like: "After the landing AI-CALLSIGN
line up runway two eight right".
2. Requesting take-off clearance. If you are on
runway, you can tell to ATC that you are ready
for take-off. So, Tower will tell you that you
are cleared for take-off (or immediate take-off).
3. Reporting landing gear position on final by pilot.
If you are on aircraft, which landing gear can
be UP, when reporting final you will tell
"Gear down, ready to land".
4. Reporting landing gear position on final by ATC.
When i was newbie and was flying on Cessna 310, i
ALWAYS forgot landing gears on final. Now if you are on
final and forgot landing gear, Tower will tell you:
"LANDING GEAR APPEARS UP" or "Check wheels down and
locked". So you will have some time to push gear
down or execute missed approach ;)
5. ATIS phonetic ID in requesting landing message.
In FG pilots says: "for full stop with ATIS" everytime
(when airport doesn't have ATIS too). But in real life
pilot saying phonetic ID of ATIS message. Now we have:
"for full stop, information alpha ... / ... zulu".
If airport doesn't have ATIS, pilot don't say this.
TODO: add this feature to AI-Planes too.
6. Advising weather condition in airport by Tower.
If you are requesting take-off or landing in airport
that doesn't have ATIS service, Tower will tell you
about wind direction and speed, visibility and QFE.
7. Reporting downwind if missed approach. When some AI-Plane
is on final FG's ATC tell you to "continue approach".
And then you lost radio transmission. Now ATC says:
"continue approach and report left/right downwind".
And now we have "Report Downwind" entry (button)
in "ATC Communication" form.
timoore [Fri, 25 Jan 2008 18:44:45 +0000 (18:44 +0000)]
Fix main window aspect ratios other than 4/3
This also fixes distortion weirdness in the osgviewer version. That
was caused by osg::GraphicsContext getting in the act on resize events
and adding its own scaling to the projectionOffset of slave cameras!
timoore [Thu, 20 Dec 2007 23:20:51 +0000 (23:20 +0000)]
Fix for "falling through ground" problem
The LOD far range on the tile entry scenegraph node was initialized to
0. This meant that any traverals of active children that happened
before the tile manager updated the node would ignore the node
altogether. Among these is the groundcache traversal which was failing
at startup even though scenery was loaded.
Also added a function to dump scene graph nodes to files; very handy
in gdb.
timoore [Fri, 14 Dec 2007 22:51:56 +0000 (22:51 +0000)]
Use the OSG DatabasePager instead of FGTileLoader
Make an OSG file reader for .stg files.
New class flightgear::SceneryPager, which is a subclass
osg::DatabasePager to handle explicit delete requests.
Modify FGNewCache, FGTileEntry, and FGTileManager to use
SceneryPager. Mostly this involved removing the queues that talked to
FGTileLoader.
Calculate accurate tile timestamps from the time they are traversed in
the cull stage (which means that they are visible) instead of updating
them periodically.
Replace tile entry transform and range node with one LOD node
timoore [Tue, 11 Dec 2007 11:10:35 +0000 (11:10 +0000)]
Check if scenery is available before blowing away existing values in ground cache
This fixes a race condition when teleporting somewhere outside of the
currently loaded scenery. Before, if there was no valid scenery, an
aircraft might end up at the center of the earth...
timoore [Fri, 7 Dec 2007 12:43:42 +0000 (12:43 +0000)]
Check for valid multiplayer packet.
Instead of just reporting that the magic number, length, etc. of a
multiplayer packet is invalid, abort processing this packet. Also,
check if enough space remains to send a property string.
mfranz [Wed, 5 Dec 2007 10:57:51 +0000 (10:57 +0000)]
add runway number as "id" to the runway hash within an airport hash
(It's already available as runway hash key, but the runway hash shouldn't
depend on it and be self-contained.)
mfranz [Sun, 2 Dec 2007 10:36:58 +0000 (10:36 +0000)]
make the state of the Meta and Super modifier keys available. These keys
are not available out-of-the-box on all systems and keyboards, and should
therefore not be used in files committed to CVS. This makes them well
suited for local key bindings, as they aren't likely to get overwritten
with later releases. SDL supports Meta and Super, OSG supports only Meta,
and GLUT supports neither.
(Somehow this part escaped the previous commit. :-)
mfranz [Sat, 1 Dec 2007 19:44:00 +0000 (19:44 +0000)]
- minor command update (loadxml, savexml, property-scale)
- add <condition> and <mod-{up,shift,ctrl,alt,meta,super}>
example to key definition description
mfranz [Sat, 1 Dec 2007 13:09:11 +0000 (13:09 +0000)]
make the state of the Meta and Super modifier keys available. These keys
are not available out-of-the-box on all systems and keyboards, and should
therefore not be used in files committed to CVS. This makes them well
suited for local key bindings, as they aren't likely to get overwritten
with later releases. SDL supports Meta and Super, OSG supports only Meta,
and GLUT supports neither.
timoore [Fri, 30 Nov 2007 00:01:01 +0000 (00:01 +0000)]
Rewrite SDL code to use an embedded osgViewer.
This uses the osgViewer infrastructure instead of setting up and osg::SceneView.
When the same change is made for glut, much of render.cxx can be deleted.
timoore [Thu, 29 Nov 2007 23:59:14 +0000 (23:59 +0000)]
Move to loading tiles and their submodels only by name.
Some cleanup in tileentry.cxx, but mostly code to implement loading of tiles
and their models without reference to FGTileEntry or SGBucket structures.
Also, don't do deferred model loading; load them when the tile is loaded.
timoore [Thu, 22 Nov 2007 23:46:39 +0000 (23:46 +0000)]
initialize _material pointer in FGGroundCache
_material was uninitialized. This was causing a segfault with
as-yet-to-be-checked-in paging code; I don't know if it ever resulted
in a segfault with the old tile loader, but it certainly could have.
curt [Wed, 21 Nov 2007 20:51:49 +0000 (20:51 +0000)]
Add a command to dump just the terrain portion of the scene graph to a .osg
file. Possible uses of this functionality could include converting the
model to some other format or coordinate system for use in some other
visualization or simulation.
mfranz [Mon, 12 Nov 2007 19:29:08 +0000 (19:29 +0000)]
- move temporary keyboard fix from input.cxx to fg_os{,_sdl}.cxx.
This is required to make sure the same letter key gets released,
which got the press event. (After Ctrl-press -> a-press -> Ctrl-release
a-release we want the Ctrl-a binding released, not the a binding.)
- add key listener interface for direct key access from Nasal space
mfranz [Tue, 6 Nov 2007 21:05:38 +0000 (21:05 +0000)]
move event_mgr and view_mgr bundle right before the requestRedraw()
This fixes the last jitter problems with views attached to MP/AI
objects, and doesn't seem to cause any new ones.
mfranz [Tue, 6 Nov 2007 12:01:29 +0000 (12:01 +0000)]
change update order to fdm -> events -> viewmanager
This removes some jitter in cases where Nasal is used to set up view
parameters from FDM data, such as position and orientation. (The event
subsystem handles Nasal's settimer() calls.)
mfranz [Mon, 5 Nov 2007 22:19:39 +0000 (22:19 +0000)]
revert swapping of x & y offsets in "lookat" mode
This was correct in the old repository and in revision 1.1 of the new,
but then broken in revision 1.2. After that, "lookat" and "lookfrom"
mode used different coordinate systems, and the "Adjust View Distance"
didn't work correctly in "lookat" mode.
mfranz [Sat, 3 Nov 2007 21:02:28 +0000 (21:02 +0000)]
Csaba HALASZ: fix IVSI instrument problem
"I have been investigating the Concorde IVSI problem. I came to the
conclusion that the trouble is that the environment altitude and thus
the pressure (which is calculated from that) is lagging by 1 frame.
Normally that wouldn't be a problem, but the IVSI calculates rate of
change and it will use the new dt with the old value difference,
thereby arriving at bad results if dt changes (and it does)."