1
0
Fork 0
Commit graph

93 commits

Author SHA1 Message Date
ehofman
14885374de header cleanups 2008-07-31 12:04:32 +00:00
ehofman
667e64e1eb - 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
2008-07-27 16:25:13 +00:00
ehofman
d9bfd5a425 This should apply, and everything should build cleanly, in isolation from the
SimGear change. It changes all the SG_xxxx to be the 'real' includes, and gets
rid of many #ifdef SG_HAVE_STD_INCLUDES. As an added bonus, rather than
replacing 'SG_USING_NAMESPACE(std)' with 'using namespace std', I just fixed
the small number of places to use std:: explicitly. So we're no longer polluting
the global namespace with the entire contents of std, in many cases.

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
mechnical change, replacing <math.h> with <cmath> and so on *everywhere*, but
one step at a time)
2008-07-25 18:38:29 +00:00
timoore
a251fd35cb Include <iostream> and using declarations as needed.
SimGear no longer includes iostream and avoids using declarations in
header files, so various fixups are needed.
2008-06-02 21:07:35 +00:00
mfranz
71cdd8c59a - degrade electrical XML SG_ALERT to SG_WARN. The reason why this is output
at all is that this method is meant to be deprecated. But if it doesn't
  say that, and there's no generic replacement at all, then it's rather
  pointless.
- simplify parameter initialization (The old code copied from Instrumentation/
  but has been simplified there in the same manner a few months ago
  The new method is less picky about additional nodes ane outputs less
  pointless alerts. If there shall really be a check for that, then
  this should be a separate function. But it's nowhere else done in fgfs.
2007-05-11 18:00:07 +00:00
mfranz
7e6bc192ba John DENKER:
"This altimetry method is valid to above 100,000 feet, and
correctly handles Kollsman settings"
2007-03-31 09:36:19 +00:00
mfranz
b9e4775a7a Roy Vegard Ovesen:
- finish cleanup/optimization of instrumentation system (started by mfranz)
- improve configuration of special properties by
  addressing them directly
2006-12-06 22:11:43 +00:00
mfranz
98cd4a9086 only consider positive airspeed in longitudinal axis 2006-07-17 18:14:31 +00:00
fredb
c5a7267206 Compile again on Win32 platforms 2006-06-16 10:17:06 +00:00
mfranz
e48967cb1d fix another crash on exit by finally converting the rest of unguarded
SGPropertyNode to guarded ones. This is also done for JSBSim/JSBSim.hxx,
for which JSB had given explicit permission a while ago. I postponed that
back then, but now is the time.
2006-06-11 10:21:10 +00:00
mfranz
b33d28cf4b warning-- 2006-03-04 22:05:19 +00:00
daveluff
00ba5a853e Recent SimGear changes seem to require more additions of config.h to FG in order to compile on Cygwin 2006-02-22 21:04:47 +00:00
mfranz
c9813d1b5d new FSF address 2006-02-21 01:16:04 +00:00
mfranz
940d1aa8df typo 2006-02-04 01:03:41 +00:00
ehofman
62a359cc4a 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:49:55 +00:00
curt
330024e0b7 Allow a single vacuum system to be driven by multiple pumps. This allows
modeling of a simple single vacuum system with a pump source on each engine
in a multiengine aircraft.  The highest rpm engine takes priority for driving
the vacuum system.
2005-10-15 20:03:17 +00:00
curt
00d5d7c1b3 Remove an unneeded include. 2005-08-22 23:31:23 +00:00
ehofman
a760dcdf13 Harald JOHNSEN:
- replay.cxx :
  corrected a bug, now reinitialize the recording data when replay is
  deactivated

- fgclouds.cxx :
  cloud layers and weather condition are saved when choosing a weather scenario,
  added a new scenario 'none' so we can switch back to standard flightgear
  weather

- navradio.cxx :
  force a search() on init to initialize some variables, preventing a nearly
  infinite loop  when delta-time == 0 on the first update()

- electrical.cxx :
  uninitialized variable in apply_load() for FG_EXTERNAL supplier

- panel.cxx, panelnode.cxx :
  added a property "depth-test" for 2.5D panels so that they update the depth
  buffer and are no more visible from the outside of the aircraft when the
  aircraft uses textures without an alpha channel

- panel.cxx :
  moved the computation of the instruments diffuse color outside the
  texturelayer code since this is constant during a frame, this is a big speedup
  for 2D panels
2005-08-22 17:49:50 +00:00
curt
3a109c568a Adjust logging output. 2005-06-14 20:55:46 +00:00
curt
6dd82d0502 Updated electrical system.
These changes represent some attempts to bandaid and patch a hopelessly
flawed system to impliment basic battery charging/discharging as well as
provide the ability to model ammeter gauges and draw current from multiple
sources (like load balancing multiple alternators in a multi-engine aircraft.)
The system design forces all these things to be horrible hacks or depend
on extremely subtle system side effects and call ordering so they may or9
may not work to one degree or another.

As mentioned in the mailing list, my recommendation is to move away from
using this system and instead build a procedural electrical system using
nasal.  Sometime in the future we hopefully can impliment a better conceived
data driven electrical system model.
2005-06-14 17:57:48 +00:00
curt
5fb87df1fb Turn the electrical system into a non-hardcoded system like all the other
systems.
2005-06-14 17:54:19 +00:00
curt
d05121ef46 Fix my mailing address by replacing it with my web page. 2004-11-19 22:10:41 +00:00
ehofman
2c72f13163 Roy Vegard Ovesen:
We have decided that hardcoded initialization of instruments and systems is
bad. So we remove them.

Hardcoded initialization is bad because it can't be overridden from config
files or from the command line. We prefer to do it through config files that
should be, eventually, aircraft specific (*-set.xml), not global
(preferences.xml).
2004-11-13 15:00:00 +00:00
ehofman
0ab2a40c2a 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 11:05:14 +00:00
ehofman
29b5147478 Move the submodels code from the Systems manager into it's own Subsystem manager. 2004-10-22 09:58:24 +00:00
ehofman
f614545fc5 Roy Vegard Ovesen:
Instrumentation and systems are now configureable from xml files. The two
generic configurations generic-systems.xml and generic-instrumentation.xml
configures the systems and instrumentation as it was hardcoded. You can
override the generic configurations in a similar way as you override the
autopilot configuration.
2004-10-16 12:37:39 +00:00
ehofman
f6176ec7ef Vivian Meazza:
I've made appropriate changes to Readme.submodels to reflect the
variation of Cd with Mach number.

Spitfire.submodel has been changed to use the variation of Cd with Mach
number

Submodel.cxx has been changed so that the default value of Cd is the
subsonic Cd of a non-boat tailed bullet.
2004-10-02 14:30:18 +00:00
ehofman
328053fe23 Vivian Meazza:
The calculation of submodel mass from weight has been moved from AIBallistic
to Submodel so that it is calculated only once, rather than on every
iteration as a present. The parameter <contents> has been added, primarily
so that droptanks will have the proper mass. It is the path to an
appropriate property containing a weight in lbs.

Care has to be taken with the use of <contents> because after a reset there
appears to be a delay in submodel instantiation (dt not properly reset???)
and the weight property is not always picked up before it is set to zero in
the key bindings. Slightly hard to explain. It works fine if FGFS has not
been reset though. There is a partial solution which involves the rejigging
of the fuel and gui nasal scripts, but there is still the visible delay in
instantiation to be resolved. I've nearly done the nasal fixes, which will
form part of an update to the Hunter only. I'll probably complete those
later today.
2004-09-27 14:24:20 +00:00
ehofman
26e6b0edcb Vivian Meazza:
I have added <Cd> and <weight> to the input parameters in the submodels.xml
script. Raw data may be used, thus avoiding the need to guestimate <eda>.
Eda remains, but should now be used to enter the proper cross-sectional
area.
2004-09-22 08:47:05 +00:00
ehofman
6d76e9da80 Vivian Meazza:
I had to reverse a number of signs to get it right. I took the opportunity
to add roll to the submodel so that droptanks will come off with the right
orientation. I have neither added the rotational speed to the submodel, nor
yaw, so if you release droptanks with  significant roll rate or yaw angle on
the aircraft the submodel will not be quite right. Straight and level, or
nearly so, is fine.
2004-09-17 16:32:58 +00:00
ehofman
2f581faf3e Vivan Meazza:
The maths, so far, is now correct. Roll and pitch are now both in the
correct sense. The aircraft velocity is added correctly to the
submodel velocity, and the submodel is now visible when instantiated.

However, the velocity is measured at the aircraft centre. To be totally
correct we ought to take into account the aircraft's rotational
velocity. We have pitch rate and roll rate available, but not yaw rate
(small anyway).
2004-09-14 08:27:55 +00:00
ehofman
d712d18acb David Culp:
Here are some things I've added to the submodel code.

First, I added a first_time value that is true when the trigger is pressed and
false when the trigger is released.  The true value is also made false after
the first pass through release().  Release() then uses this to force the
first dt (per salvo) to be zero.  I was hoping this would make the submodel
appear closer to the airplane, but I don't notice a difference with the
tracers.  In a prior test I found that the first dt is about 2.5 times larger
than subsequent ones.  Maybe this will be effective with slower submodels,
like smoke, contrails, etc.

Secondly, I updated the IC.elevation and IC.azimuth calcs to correctly add in
the yaw and pitch offsets, corrected for bank angle.  Actually this is still
an estimation.  A proper calculation will sum the submodels vector with the
airplane's vector.  Until that's done only models which are fired forward
will have proper IC.
2004-09-09 08:40:08 +00:00
ehofman
9e72a38165 Rearrange ID related code. The (this) pointer is now the unique ID of the AIModel which fixes a number of problems along the way. 2004-09-08 13:21:40 +00:00
ehofman
0d576e1925 Vivian Meazza:
Testing revealed that the code was not reading y-offset - a
typo in the original code, and roll was in the wrong sense. All readily
fixable, and it now works.
2004-09-07 19:10:10 +00:00
ehofman
d158c8168d Make use of a pointer to a structure to pass multiple parameters around. 2004-09-07 09:53:23 +00:00
ehofman
fed4a2c25a Vivian Meazza:
I've added another parameter to the submodel - wind.

It's activated by the entry <wind>true</wind> in the ../submodel.xml file.
If true, the submodel is affected by the local wind, otherwise not. The
parameter defaults to false. This is useful for exhausts and smoke, and
possibly all objects.
2004-09-05 09:45:34 +00:00
ehofman
30f3bd5096 Add the missing buoyancy patch. 2004-09-01 21:05:04 +00:00
ehofman
d2d27f2d76 Tie the count into the property tree instead of using snprintf every frame. Add the life-timer to the property tree under sim/time/elapsed-sec for AI object animation (blending and/or scaling). 2004-08-30 11:13:29 +00:00
ehofman
fdab44652e David Culp: This is n idea from Vivian, it allows setting the count to a negative number which will give unlimited submodels (as long as the trigger is true). This is useful for contrails. 2004-08-30 09:15:04 +00:00
ehofman
af284e4bb9 David Culp: Here are small changes that allow one to set a life-span for submodels. 2004-08-30 09:11:59 +00:00
ehofman
cfc05f5f0d David Culp:
Silly me.  I was starting the timer at zero, so the first tracer didn't fly
until 0.25 seconds after pulling the trigger.  Now the timer starts at the
same value as "delay", so the first round comes out immediately.

Also, I've added an optional configuration attribute that allows you to change
the ballistics of the submodel.  This allows parachutes, or anything else
that has ballistics different from a bullet.  The attribute is called "eda",
which is the equivalent drag area.  Default value is 0.007, which gives the
same ballistics as the current tracers.  Increasing this value gives more
drag.  A value of 2.0 looks good for a parachute.


math stuff
########################################################################
The deceleration of the ballictic object is now given by:

[ (rho) (Cd) ] / [ (1/2) (m) ] * A * (V * V)

where rho is sea-level air density, and Cd and m are fixed, bullet-like
values. So the calculation is:

0.0116918 * A * (V * V)

The value "A" is what I'm calling the "eda" (equivalent drag area).
########################################################################


A parachute model will have to be built so that the parachutist's feet
are in the forward x-direction.
Here is the submodel.xml config I use for "parachutes":

  <submodel>
    <name>flares</name>
    <model>Models/Geometry/flare.ac</model>
    <trigger>systems/submodels/submodel[0]/trigger</trigger>
    <speed>0.0</speed>
    <repeat>true</repeat>
    <delay>0.85</delay>
    <count>4</count>
    <x-offset>0.0</x-offset>
    <y-offset>0.0</y-offset>
    <z-offset>-4.0</z-offset>
    <yaw-offset>0.0</yaw-offset>
    <pitch-offset>0.0</pitch-offset>
    <eda>2.0</eda>
  </submodel>
2004-08-26 16:25:54 +00:00
ehofman
065d4d8da1 David Culp, Vivian Meazza:
Last night I sent these new files to Vivian to fix a problem he found.  Since
we can have more than one submodel we need more than one "count" property.
The new code creates a property systems/submodels/submodel[n]/count for each
submodel.  Vivian is using this count property for his sound.
2004-08-26 12:27:39 +00:00
ehofman
c4aa3fa661 David Culp:
Here is an update for the submodel system.  This will allow submodels to be
defined for any aircraft, and there are no default submodels.  To use this
submodel system you need to set up a binding (slight change in property name
from last one, but you can use any property name you like, as long as it
matches the name in the submodels.xml file, see below):

 <button n="0">
  <desc>Trigger</desc>
  <binding>
   <command>property-assign</command>
   <property>/systems/submodels/trigger</property>
   <value type="bool">true</value>
  </binding>
  <mod-up>
   <binding>
    <command>property-assign</command>
    <property>/systems/submodels/trigger</property>
    <value type="bool">false</value>
   </binding>
  </mod-up>
 </button>


Then in your *-set.xml file you need to define a path to the configuration
file (similar to the way the electrical system is now done):

<sim>
 ...
  <systems>
   <electrical>
    <path>Aircraft/Generic/generic-electrical.xml</path>
   </electrical>
   <submodels>
    <serviceable type="bool">true</serviceable>
    <path>Aircraft/FW190/submodels.xml</path>
   </submodels>
  </systems>
 ...
</sim>


Then you put the submodel configuration file in your aircraft's directory.
I've attached a file, submodels.xml, that can be used to define a gun that
works just like the former one did.


There are two things remaining to be done.  One is to change the function
SubmodelSystem::transform() to properly position the submodel.  This will
require some complicated matrix code that I might borrow from Yasim.
2004-08-26 08:38:43 +00:00
ehofman
83ca912de2 Fix another one of those mistakes. I really shouldn't mess with code from others (without looking at it closely) :-( 2004-08-23 17:40:46 +00:00
ehofman
c4c67480ff Fix a mistake and make it possible to activate the submodel subsystem again. 2004-08-23 17:33:36 +00:00
ehofman
be6936be80 Vivian Meazza:
Well here's some tracer stuff. If fiddled around with submodel.cxx. It now
does what it says - you need to put this:

<!-- trial gun system -->
    <systems>
      <submodel>
        <serviceable type="bool">true</serviceable>
        <amount type="int">120</amount>
      </submodel>
    </systems>

In the *-set.xml file NOT within <sim></sim>. Trouble is it still defaults
to serviceable=true, but it also defaults to amount=0. Unless this bit of
code is included it wont run, so other models can't fire inappropriate
tracer. Revised submodel.cxx file attached.

I've changed to a non-billboard solution. I tried to make the viewing angle
of the tracer less than 180 degs, but failed. Close enough I think. It's
still a bit big, but a reasonable compromise. .AC file attached.

I remain concerned about the tracer colour. In practice, red is better (and
it's what I am used to) but David seems set on white, and I don't want to
upset him. I'm going to adjust the texture a bit more tomorrow.
2004-08-23 17:22:55 +00:00
ehofman
7aa1cd9b5a I forgot a small patch. 2004-08-22 17:04:37 +00:00
ehofman
161912ea4c David Culp:
Right now the code is not very configurable, and there is only one submodel per airplane possible. It is implemented as an SGSubSystem, just like the electrics, vacuum, etc. systems.  To make it work you need to make a release binding like this (for my joystick trigger):

 <button n="0">
  <desc>Trigger</desc>
  <binding>
   <command>property-assign</command>
   <property>/systems/submodel/trigger</property>
   <value type="bool">true</value>
  </binding>
  <mod-up>
   <binding>
    <command>property-assign</command>
    <property>/systems/submodel/trigger</property>
    <value type="bool">false</value>
   </binding>
  </mod-up>
 </button>

Then, each airplane that uses the system should have something like this added to its *-set.xml file (note that this does *not* go within the <sim></sim> tags):

 <systems>
   <submodel>
    <serviceable type="bool">true</serviceable>
    <amount type="int">70</amount>
   </submodel>
 </systems>


Future improvements will include:
1)  more configurability, so the user can create multiple submodels, and can assign them different locations, and pitch and yaw adjustments, and nitial velocity.

2) sound?

3) a more accurate calculation of the submodels location at any pitch/roll/yaw.

4) a way to pre-load the model, so the AI code doesn't have to parse the model every time it creates an instance.

I think that's all of it.
2004-08-22 16:22:18 +00:00
curt
19dff3ac44 Alternator should still put out some output when RPM < 800. (Yes I know this
is hard coded for the C172, but so far no one has asked to do this more
generically.)
2004-06-14 21:36:10 +00:00
curt
4e14316256 Fix a property name that was missed in an earlier change. 2004-04-20 22:54:44 +00:00