earth model instead of WGS84. WGS84 precision is overkill for what the
traffic manager requires, and also keeps locking up while computing
course and distance for anti podal points in New Zealand vs. south west
france.
utils/Modeller/Makefile.am src/FDM/YASim/Makefile.am:
Remove -lssg from the linker lines.
Do no longer build threedconvert. A very similar functionality
is available with osgvconv. But leave threedconvert in place
if somebody will need that ...
I found a small conspicuity in YASim. The destructor of the fdm was
never called, therefore a modification of the heli fdm (not in cvs) did
not work after reset (I tie some properties and untie them in the
destructor, but the destructor was not called and the tieing failed
after reset. I don't know if any other parts of YASim need their
destructors, at least it wastes memory.
Another small fix I have made to the turbulence.cpp. The code needed,
that (a-floor(a)) is >=0 and <1. This is analytical correct, but
numerical only for "small" values. In normal fg-operation a in this
function is always small, but with unrealistic parameters in the
aircraft config file it is not and then fg crashes (instead a crash of
the aircraft or cataputling it far away).
"bind the visibility-property of the SGSky object to a property
named /envirionment/effective-visibility-m. This property is needed to decide
if the aircraft is within clouds or not. I use this property also for the
structural icing code."
- Ground network slow-down finally works as expected
(although occasionally causing a traffic jam)
- Hold position instruction now really sets speed to zero, in addition
it actually works now for crossing and two-way traffic
- Attempt to limit execution time of ground network trace algorithm
to make performance acceptable at high-density networks
- Removed remaining terminal messages
- Various minor tweaks and clean-ups
Time/tmp.cxx Main/viewer.hxx Main/viewer.cxx Main/renderer.cxx
Get rid of an other OSGFIXME. The view matrix had some plib specials
included. The viewer is now updated for that.
a second tacan may not be likely)
- remove some dead code
- simplify <name>/<number> handling
- let a listener watch over input props and search for new channel/frequency
- allow to set channel number as one number (rather than as single digits),
as some aircraft may prefer this (the ch53 does so); this is to be set
in /instrumentation/tacan[n]/frequencies/selected-channel[0]
it was never added, which is perfectly normal when the aircraft started
out of range. (Analog to the DME sound, which doesn't have that warning
either.)
value on a property. This becomes a NaN when converted to a numeric
value, which then percolated into the C++ world where it ultimately
caused a crash in YASim's turbulence code. While converting nil to
NaN isn't *strictly* wrong, it's dangerous for this reason. Toss a
Nasal exception instead. Hopefully this won't break too much
preexisting code.
- Moved AIModels/Traffic Manager related AI functions to a new file
- Rewrote the traffic manager so that the containers use pointers to
objects instead of the objects themselves, which will allow for a
more flexible memory management.
- Rewrote parts of the airport groundnetwork code, also because the
stl containers now contain object pointers instead of the objects
themselves.
- Fixed an uninitialized iterator in the AI distance tracking code
- Fixed flawed logic in some of the traffic controller's while loops
- Added a tower controller, which paces take-off behavior of AITraffic
in a more realistic way.
- Various other minor fixes and fine tuning.
More realistic calculation of vortices at the blades and therefore
real airfoil parameters can be used now (not to be mixed up with the
vortex ring state which is still not simulated), ground effect is now
continuous e. g. at buildings, calculating of the rotor in more than 4
directions, better documentation of the airfoil parameters.
- Well I finally licked it, the clipping works great now, in 16 and 32
bpp mode, on 2d and 3d panels.
- I tried glScissors, didnt work because clipping was done in screen
co-ordinates.
- Stencil buffer methods worked great for 2d panel, but messed up 3d
panels,(depth buffer problems I think), and only worked in 32 bpp mode.
- I then tried clip planes , and so far it appears to work with no
problem, and no framerate drop like I had with the stencil buffer
method...
I'm attaching the panel.cxx file for testing...
values that were angles between the aircraft's orientation and the
global velocity vector, not the airflow velocity. So the HUD velocity
vector was wrong when the wind was non-zero. Fix that.
maintain a resonable distance from each other while taxiing on the same
route. The current code does not yet take crossing routes or aircraft
taxiing into opposite directions into account.
If there is a windows problem, look very carefully at the line termination
with a serial port monitor. It should be \r\n (CR-LF), not \n, not \r\r\n
or any other possible variant.
format. I have a Garmin 295 to test with, but so far I haven't been able
to make this work (code should compile cleanly though.) I don't know if
I've made a mistake in the protocol or if my 295 just doesn't support this.
More work on this to come.
- NEVER EVER use leading underscores for auto variables
- don't store values in auto variables for the next function call (not
even when they start with underscore :-) This fixed the TACAN
channel lookup, which was supposed to be done on channel changes only,
but was always done)
- only do frequency search if frequency has changed (this was apparently
planned, but not finished; leftover from adf.cxx?)
- don't use double as bool switch
- some minor cleanup
algorithm caused a program crash. Because there is always one waypoint more
than there are routes, the trace function should only pop_back the final route
entry at search depths of one or higher. I also added a lot of of additional
safeguarding code, due to the fact that the new trace algorithm was
apparently not as stable as I'd hoped it would be. ...
in the case of fg_init.cxx we'll only see that if the log-level is set
in preferences.xml, because command line options weren't even processed
at that time. :-/
generates a data file of aerodynamic lift and drag (and L/D) against
AoA at a specified speed and altitude through a full circle. Wrote it
to track down the YF-23 superthrust issue, but it wasn't any help.
All the forces look fine.
state. The only really obvious problem was a giant negative engine
RPM, which happened because of a lack of clamping in the engine code
combined with the YF-23's ability to actually reach speeds near the
engines _vMax value. It's not clear to me that this will fix the
superthrust issue at high AoA's, but it's an obvious bug nonetheless.
+ The wing compilation step was accidentally omitting regions that lie
between the tips and the first/last control object. That's a real
problem for wings that contain no controls, and a significant issue
for those that contain only a few. I'm stunned that this went
undetected for so long.
+ The Surface::flapLift() function was oddly returning 1.0 Newtons as
a minimum, instead of zero.
(this was the reason why the first two text lines on the splash screen
looked more blurry than the others). BTW: I played with other values
than -0.5, but this turned out to be the best already. It makes textures
sharper than 0, but not too sharp (and thus flickering).
track and is a PITA for support staff. It's this message:
Error reading properties:
Failed to open file
at /home/newbie/.fgfs/autosave.xml
(reported by SimGear XML Parser)
than tick marks, and looser (zoomed) than the other 40%. Rationale:
- this was only used in *one* tape of *one* HUD ("custom")
- it's not in the MIL-STD!
- doesn't seem very useful
- relies on integer scale values, while we now have float values in the new HUD
This feature would have had to be rewritten anyway. If someone needs it and
can come forward with a (MIL-)STD description, then it can be added to the
existing tape generator again (using a value->screen-position mapper function).
Otherwise it's simply declared dead.
(Yay, one TODO and a few FIXMEs less. ;-)
encapsulation, but a real namespace would probably be better)
- extend alignment to optionally adjust x/y, and to return absolute
l/r/b/t coordinates (as opposed to plib's relative ones!)
- implement tape gaps as per Curt's order :-)
- shuffling stuff around for fun
- add generic text adjustment and
- use it in the ladder: climb -> vert bar on the outside, numbers below line
dive -> vert bar on the inside, numbers above line
work for ground based distance separation of AIAircraft.
Traffic manager initialization related changes:
- Schedules initialize "on the fly", instead of during initialization
- Invalid routes are no longer deleted, but marked as BOGUS and ignored
- Changed loading order from a distance based prioritization to a point-
score based prioritization, resulting in a much faster establisment of
AIAircraft near the user's plane.
Preparatory work for ground-based separation of Aircraft.
- The groundnetwork findShrortestRoute function not only returns a list
of waypoints, but also a list of taxi "segments" (a.k.a. taxiways).
- The taxiway list is stored in the Flightplan, and updated everytime
a new taxi leg is created.
implications.
Fix the ladder so it "moves" around in the hud correctly based on alpha/beta
offset projected onto the horizon line so the horizon is always the horizon.
using Curt's new speed adjustment code. 2) Separated the function
FlightPlanCreateCruise() into a new source file in preparation of a more
elaborate airway following scheme.
calculations. We run the FDM at 120hz and compute how many loops can fit into each FG loop.
Floating point rounding could lead to a situation where we could end up running
1, 3, 1, 3, 1, 3... loops of the FDM when in fact we want to run 2, 2, 2, 2, 2...
If we artificially inflate ml above by a tiny amount to get the
closest integer, then subtract the integer from the original
slightly smaller value, we can get a negative remainder.
Logically this should never happen, and we definitely don't want
to carry a negative remainder over to the next iteration, so
never let the remainder go below zero.
such a box:
_____/\_____
| Booo |
|__________|
likewise with options bottom, left, right. The size can be set via option
<marker-offset> (analogous to <tape> offsets), which describes the distance
from the base to the peak. Default: 8 px
a 8 pt font (set 8 pt in preferences.xml, too)
- fix vertical alignment of digits in label and ladder (temporary
solution -- the whole font handling needs to be reviewd and fixed)
- simplify nadir and zenith (they always want to be horizontally centered
on the ladder lines, no?)
- simplify and abstract label box drawing (no need for stippled side lines)
- align text (more) correctly in label boxes
- move variable declaration near their first use (c++ style rather than c)
- rename (zenith|nadir|hat) to enable-(zenith|nadir|hat) and make them bool
(for consistency reasons)
Generally you want point sprites for performance reasons when enhanced runway
lighting (and smooth points) are activated. Most hardware doesn't
accelerate the rendering of standard smooth points, so without point sprites
you will kill your night time performance if you turn on enhanced runway
lighting.
Note that enhanced runway lighting "breaks" our clever scheme to make the
runway lighting brightness vary with the relative view angle. This means
with enhanced lighting on, all lights are equally bright no matter what
direction you view them from. So perpendicular runways are just as bright
as runways you are directly lined up with (when enhanced runway lighthing
is activated.)
You can revert to the original lighting scheme by turning off enhance runway
lights, turning off distance-attenuation, and turning off point-sprites in
the rendering options menu.
maintainable. The rules are simple (extension functions are called
*with* the lock, which must be dropped before calling naCall(), which
grabs it) but the tracking of when the lock was held was getting a
little confused. Keep a "nasal call depth" count in the subsystem to
figure out whether we are making a sub-call and thus hold the lock.
- Fix a warning about class member initialization order.
- Clear up a problem with the default autopilot behavior on the back side
of an ILS in preparation for adding a real "back course" approach mode.
and "latitude-offset" should not use a precalculated value of warp.
2) Since the values of cur_time and crrGMT are identical in the current
version of the SGTime class, the calculations of the "system", "gmt", and
"latitude" are re-evaluated and updated where necessary.