1
0
Fork 0
Commit graph

60 commits

Author SHA1 Message Date
david
7e93fca8ee Virtual cockpit patches from Andy Ross:
What the attached patch does is map your panel definition onto a (non
z-buffered) quad in front of your face.  You can twist the view around
and see it move in the appropriate ways.

Apply the patch (let me know if folks need help with that step), and
then set the /sim/virtual-cockpit property to true.  You can do this
on the command line with --prop:/sim/virtual-cockpit=1, or via the
property picker.  Bind it to a key for fast toggling if you like.

The default bindings don't allow for "panning" the view, so you'll
have to modify yours.  These are the mappings to my joystick's hat
switch, for those who need hints:

   <axis n="6">
    <desc>View Direction</desc>
    <low>
     <repeatable>true</repeatable>
     <binding>
      <command>property-adjust</command>
      <property>/sim/view/goal-offset-deg</property>
      <step type="double">1.0</step>
     </binding>
    </low>
    <high>
     <repeatable>true</repeatable>
     <binding>
      <command>property-adjust</command>
      <property>/sim/view/goal-offset-deg</property>
      <step type="double">-1.0</step>
     </binding>
    </high>
   </axis>

   <axis n="7">
    <desc>View Elevation</desc>
    <low>
     <repeatable>true</repeatable>
     <binding>
      <command>property-adjust</command>
      <property>/sim/view/goal-tilt-deg</property>
      <step type="double">1.0</step>
     </binding>
    </low>
    <high>
     <repeatable>true</repeatable>
     <binding>
      <command>property-adjust</command>
      <property>/sim/view/goal-tilt-deg</property>
      <step type="double">-1.0</step>
     </binding>
    </high>
   </axis>

While the current implementation is happy with just plastering the
panel's notion of "screen" into the 3D world, this is actually more
general.  Each panel can, in principle, have it's own coordinate
system, and you could build a cockpit out of a bunch of them.  The
mapping is specified by providing a 3D coordinate for three corners of
the quad the panel should be mapped to; this should be pretty simple
to work with.

All that's needed for a perfectly general solution is a convention on
where to store the information (a cockpit xml file, or put it in the
aircraft -set file, or...), and some work on the panel's coordinate
system conventions (some of which don't coexist very nicely with a
generalized 3D environment).  Combine that with a plib model for the
non-panel interior of the cockpit, and we're golden.

I'm actually really pleased with this.  It worked better and more
quickly than I could have imagined, and impact on the surrounding code
is quite light -- a few property tests only.  But some stuff is still
missing:

+ No equivalent work was done to the HUD, so it still displays
   incorrect headings when the view changes.  The use of pixel
   coordinates deep in the HUD code is going to give me fits doing the
   port, I sure.  It's not nearly so well put together as the panel
   (where I just changed the setup code -- none of the rendering code
   changed at all).

+ I forgot that the panel was clickable. :)  Input events still have
   the screen coordinates, which essentially kills the interactivity
   when in virtual cockpit mode.  This won't be hard to fix; it's only
   broken because I forgot the feature existed.

And one note about the implementation choice: to get away from the
inevitable near clip plane issue, the virtual cockpit renderer simply
disables the z buffer.  This means that cockpits built using these
panels need to be z-sorted, which isn't too hard since they are static
geometry.  It also means that no two "virtual panels" can ever be
allowed to interpenetrate.  No biggie.
2002-03-03 00:06:24 +00:00
david
608668bd5f Attempt to merge LED font patches back in (they were wiped out by
Jim's tiled-background patches).
2002-02-19 23:54:17 +00:00
david
d13b46b8f1 Tiled panel background support from Jim Wilson. 2002-02-19 21:57:09 +00:00
curt
b8fc42d824 Add support for multiple panel fonts (specifically an LED font.) 2002-02-19 03:42:16 +00:00
curt
b1027c7b6a Various Irix compiler tweaks. 2002-02-05 15:57:46 +00:00
david
aabdd355f0 Modified FGSubsystem::update() to take an int parameter for delta time
(i.e. multiloop).  Most subsystems currently ignore the parameter, but
eventually, it will allow all subsystems to update by time rather than
by framerate.
2001-12-22 17:33:27 +00:00
curt
e1ac99d5c9 ** src/Cockpit/panel.cxx
- delete table in destructor

** src/FDM/flight.cxx
- bind engine properties in FGInterface::bind, and publish properties
  for all engines rather than just engine 0

** src/Main/fg_props.cxx
- removed all engine properties; now bound in FGInterface::bind

** src/Sounds/fg_fx.cxx
- support multiple engine and cranking sounds

** src/Sounds/fg_fx.hxx
- support multiple engine and cranking sounds
2001-11-30 20:55:14 +00:00
curt
4b5bcd0f0a Cosmetic changes. 2001-10-29 04:37:24 +00:00
curt
eacec814e1 Fixed a typo in an #if ... 2001-10-26 22:58:28 +00:00
curt
535d708ee0 Various MSVC patches. 2001-10-24 21:25:11 +00:00
curt
cb0aa1baa1 Added panel jitter support dependent on cockpit forces (visual force feedback) 2001-10-05 20:26:21 +00:00
curt
79b25c850e - modified to use pointers to bindings to avoid copying 2001-08-10 05:16:41 +00:00
curt
b077c3a8a0 - added support for conditions
- added support for group layers
2001-08-03 00:17:58 +00:00
curt
0f156c7280 - modified PanelAction to use FGBinding, like keyboard and joystick
events
- removed all classes derived from PanelAction (no longer needed)
2001-07-27 21:59:53 +00:00
curt
96b88e539f Move FGControls declaration to globals.hxx 2001-07-22 19:51:16 +00:00
curt
4bd5a0ab29 Made the following properties archivable:
- /sim/panel/visibility
- /sim/panel/x-offset
- /sim/panel/y-offset
2001-07-12 23:34:16 +00:00
curt
af2a0da64c Patches contributed by Norman Vine to do ultra-hires tiled screen dumps. 2001-06-26 18:23:07 +00:00
curt
6814f9966b - changed to favour height over width when the aspect is less than
4:3, to avoid a gap on top (suggested by Norm Vine)
2001-06-20 20:50:49 +00:00
curt
46b82360b0 Fixed a couple items for Norman's large resolution print routines. 2001-06-13 20:31:49 +00:00
curt
5f71bca303 Fixed panel edge artifacts (due to forced wrapping of background texture) 2001-06-12 19:07:13 +00:00
curt
72c7dc57fd replaced SGValue with SGPropertyNode throughout. 2001-06-12 05:15:48 +00:00
curt
b2f604ad00 Reduce output verbosity. 2001-06-01 17:55:49 +00:00
curt
5893de13ff 1. Fixed FGInput bug preventing same key from being bound separately
with different modifiers (the format of the key bindings has changed
again slightly, adding a <code>..</code> element; see keyboard.xml for
details).

2. Modified FGInput to try default modifiers for ctrl, shift, and alt
when the initial bindings fail (i.e. you don't have to specify
mod-shift explicitly for upper-case 'P' any more).

3. Fixed problems with properties and panel reloading reported by
Martin Dressler and John Check.

4. Updated preferences.xml to get rid of obsolete references to
/controls/brakes/left and /controls/brakes/right (as reported by John
Check).


There were also two non-bugs reported by John Check:

(a) Differential braking doesn't work (John was using the obsolete
properties from #4 above).

(b) Duplicates show up in the property tree using the telnet interface
(the property tree doesn't show indices, and John was seeing separate
entries for each possible engine, etc.).
2001-05-29 22:31:04 +00:00
curt
b1af3904c8 Updates from David Megginson. 2001-05-15 23:08:25 +00:00
curt
f1b1077d93 More fg -> sg namespace changes in simgear. 2001-03-25 14:20:12 +00:00
curt
17c96ae69e SG_ namespace 2001-03-24 04:48:44 +00:00
curt
576432ec75 David Megginson writes:
FGOptions is history, and the modules are (starting) to use the property
manager directly.  Let me know if I left any files out.

Inevitably, there will be some problems with broken options, etc.,
that I haven't found in my tests, but I'll try to fix them quickly.
We also need to stress that the property names currently in use are
not stable -- we need to reorganize them a bit for clarity.
2001-01-13 22:06:39 +00:00
curt
469703dd0c Internal interface changes by David Megginson. 2001-01-11 22:44:18 +00:00
curt
5175227e3b Tweaks. 2000-11-03 23:04:23 +00:00
curt
08fd9cc36d Moved fov and win_ration from FGOptions to FGViewer so we can control these
on a per view basis.
Fixed some compile warnings in Main/*.cxx
2000-11-01 23:27:32 +00:00
curt
0175b4cd25 Continued FGViewer cleanups. FGViewer is now a base class so that we can
derive specific viewer classes from it.  Here's what I currently have in mind:

FGViewer
  |
  |-> FGViewerPRH     (current system with orientation specified in
  |                    LaRCsim Euler angle convention)
  |
  |-> FGViewerLookAt  Feed in a position, view direction, and up vector
  |
  |-> FGViewerHPR     (similar to PRH, but using ssg hpr euler angle
  |                    convention)
  |-> others?
2000-10-25 22:59:02 +00:00
curt
152a5902c8 Moved winWidth and winHeight out of FGViewer since these are set on a
per-application level.  We can have multiple viewers ...
Cleaned up fov mistake on startup with panel activated.
2000-10-19 23:09:33 +00:00
curt
01c44cbb99 Code clean ups relating to FGOptions ... and moved it into globals-> space. 2000-10-19 21:24:43 +00:00
curt
ce574d59f5 The following changes were made to flightgear-0.7.5 code to implement the follow
ing features:

a) ADA Flight model - ADA.cxx, ADA.hxx, flight.hxx
b) Fighter a/c HUD       - flight.hxx, hud.hxx, hud.cxx, cockpit.cxx, hud_ladr.c
xx, hud_card.cxx
c) 3-window display      - options.hxx, options.cxx, viewer.cxx
d) Moving objects (ship) - main.cxx
e) Patches               - main.cxx

ADA.cxx, ADA.hxx
--------------------------
Interface to the external ADA flight dynamics package.

flight.hxx
----------
Included prototypes for accepting additional data fron the External flight
model for fighter aircraft HUD

Hud.hxx
-------
Included prototypes for accepting additional data for fighter HUD from Exernal F
light model.
Defined FIGHTER_HUD pre-processor directive to enable compilation of fighter hud
 code.

hud.cxx, cockpit.cxx, hud_ladr.cxx, hud_card.cxx
---------------------------------------
Included code to initialise additional reticles/text for fighter HUD which is co
nditionally
compiled if FIGHTER_HUD is defined.

options.hxx
-----------
Added window_offset, and function to retrieve its value for 3 windows

options.cxx
-----------
Changed few options to suit ADA/CEF projection system/screens and checks for win
dow offset.

views.cxx
---------
Added code to retrieve view offset for window.

Main.cxx
--------
Added code to load and move an aircraft carrier.
Patch to enable clouds from command line until Curtis fixes it. By default cloud
s are disabled.
2000-10-19 19:46:13 +00:00
curt
2eda8480e9 Some changes contributed by David Megginson to allow for more interesting
external views.
2000-10-18 21:19:30 +00:00
curt
5018278831 Panel tweaks to support "shaped" panels.
Additional HUD support for waypoints.
JSBSim updates.
2000-10-13 23:34:54 +00:00
curt
f6fac40a11 David Megginson writes:
I have a scrollable panel working (it didn't take long in the end).  A
panel can now be much wider or higher than the available area, and the
user can scroll around using [Shift]F5, [Shift]F6, [Shift]F7, and
[Shift]F8.  The user can also scroll the panel down to get a bigger
external view.  Mouse clicks seem still to be working correctly.

To set the panel's (virtual) height and width, use the panel file's /w
and /h properties in a panel XML file; to set the initial x- and y-
offsets (untested), use the panel file's /x-offset and /y-offset
properties; to set the initial height of the external view (untested
and optional), use the panel file's /view-height property.  Note that
none of these show up in the regular FGFS property manager.

Unfortunately, these patches will not affect your initialization
problems with the property manager -- I'm having a hard time tracking
them down because I cannot reproduce them.

I have also made some patches to main.cxx and views.cxx to do two
things:

1. Expand or shrink the external view as the panel moves up and down.

2. Set the window ratio correctly, so that we don't get an oval sun
   and flat clouds when the panel is visible (the problem before was
   integer division, so I added casts).

Unfortunately, the window ratio is not set properly at start-up --
there are too many dependencies, and I haven't figured that part out
yet.  As soon as you hide and redisplay the panel or move it
vertically (i.e. force fgReshape to be called), you'll see the correct
ratio.
2000-10-06 21:16:01 +00:00
curt
8d1295119f Updates from David Megginson relating to the property manager. 2000-09-30 03:35:38 +00:00
curt
e7df2d5dc8 Sep. 22, 2000 panel updates from David Megginson to make the new config file
panel be the default (sp_panel.* RIP).
2000-09-22 17:20:56 +00:00
curt
be88681d69 MacOS changes by Darrell Walisser. 2000-09-13 21:51:07 +00:00
curt
a2cd367ab5 Sep 8, 2000 panel updates from David Megginson. 2000-09-08 20:47:18 +00:00
curt
e891f2ff05 20000905 changes from David Megginson to impliment a data file configurable
instrument panel.
2000-09-06 00:07:48 +00:00
curt
016cd935ef Updates from David Megginson:
I've done some substantial reengineering of the 2D panel: except for the
radios, the whole panel is built from a large table now.  I'd be
grateful if you could add these changes to the main distribution.

Since I always like to provide some eye-candy with my updates, I've
fixed the ADF gauge to be more usable by slimming the needle and adding
markings every 45 deg (you'll need to use the attached textures).
2000-06-14 20:59:51 +00:00
curt
febc9cf0b2 First quick hack at panel shading. 2000-05-27 06:40:55 +00:00
curt
9dc5c9ca22 Instrument panel updates from David Megginson.
- the panel uses much, much less texture memory, and draws much
  faster, at least on my hardware

- there is a wet (magnetic) compass at the top of the panel

- the gyro compass shows true heading again, but don't get used to it:
  we're going to set it up to drift soon

- there are TO/FROM flags on NAV1 and NAV2 (but no GS flag yet)

- the ADF looks a little more realistic (if you can forgive the ugly
  needle)

- when the HUD is not open, the framerate is moved to the right side
  of the screen so that it won't be obscured by the mag compass
2000-05-15 16:33:42 +00:00
curt
a975fd77c5 User-visible
- knobs now continue to rotate when you hold down the mouse
- the middle mouse button makes knobs rotate much faster
- there are NAV1, NAV2, and ADF radios that can be tuned using the mouse
- there are standby frequencies for NAV1 and NAV2, and buttons to swap
- there is a crude, rather silly-looking DME, hard-wired to NAV1
- there is a crude, rather silly-looking autopilot that can lock
  the heading (to the bug on the gyro), can lock to NAV1, and can lock
  the current altitude
- the knobs for changing the radials on NAV1 and NAV2 look much better
  and are in the right place
- tuning into an ILS frequency doesn't change the displayed radial for
  NAV1

Code

- I've created a new module, sp_panel.[ch]xx, that constructs the
  default single-prop panel; this works entirely outside of FGPanel,
  so it is possible to construct similar modules for other sorts of
  panels; all code specific to the default panel has been removed from
  panel.cxx
- current_panel is now a pointer
- radiostack.[ch]xx keeps track both of the actual radial and of the
  selected radial (they will differ with ILS); the NAV gauges should
  not spin around automatically to show the actual radial (we need to
  do something similar with the autopilot)
- the panel is initialized fairly early
- make sure that standby frequencies also get initialized
- I've started combining and clipping small textures to save texture
  memory; there's a lot more to do, but at least I've made a start
2000-05-02 18:26:00 +00:00
curt
921beb96d7 First stab at NAV1 and GS hold modes for the autopilot. 2000-04-30 22:21:47 +00:00
curt
3ecf1b8dce Autopilot "class-ification".
Separated out gui parts of autopilot control from the actual autopilot code.
2000-04-30 06:51:49 +00:00
curt
418279fdd4 Panel updates from David Megginson. Radials can now be adjusted on the fly
by clicking on the knob on the instrument panel.
2000-04-27 22:45:48 +00:00
curt
87d4e7b5d4 David Megginson: I've created a couple of very simple textures: one for
the NAV face, and one for a NAV needle (just a thin, slightly blurry red
line for now).  I'm attaching my two new textures, together with my newest
panel.cxx (modified from Alex's to use the new textures).  Obviously,
there's a lot more to do, including TO/FROM indicators, but this is a
start, and it's fun.
2000-03-26 17:19:39 +00:00