]> git.mxchange.org Git - flightgear.git/commitdiff
C++ - ifing the code.
authorcurt <curt>
Wed, 22 Apr 1998 13:25:39 +0000 (13:25 +0000)
committercurt <curt>
Wed, 22 Apr 1998 13:25:39 +0000 (13:25 +0000)
Starting a bit of reorganization of lighting code.

16 files changed:
Main/GLUTkey.c [deleted file]
Main/GLUTkey.cxx [new file with mode: 0644]
Main/GLUTkey.h [deleted file]
Main/GLUTkey.hxx [new file with mode: 0644]
Main/GLUTmain.cxx
Main/Makefile.am
Main/Makefile.in
Main/fg_getopt.h
Main/fg_init.c [deleted file]
Main/fg_init.cxx [new file with mode: 0644]
Main/fg_init.h [deleted file]
Main/fg_init.hxx [new file with mode: 0644]
Main/views.c [deleted file]
Main/views.cxx [new file with mode: 0644]
Main/views.h [deleted file]
Main/views.hxx [new file with mode: 0644]

diff --git a/Main/GLUTkey.c b/Main/GLUTkey.c
deleted file mode 100644 (file)
index cf0e458..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/**************************************************************************
- * GLUTkey.c -- handle GLUT keyboard events
- *
- * Written by Curtis Olson, started May 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#include <config.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>                     
-#endif
-
-#include <GL/glut.h>
-#include <XGL/xgl.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <Debug/fg_debug.h>
-#include <Main/GLUTkey.h>
-#include <Main/views.h>
-
-#include <Include/fg_constants.h>
-
-#include <Aircraft/aircraft.h>
-#include <Autopilot/autopilot.h> // Added autopilot.h to list, Jeff Goeke-Smith
-#include <Weather/weather.h>
-
-
-extern int show_hud;             /* HUD state */
-extern int displayInstruments;
-
-
-/* Handle keyboard events */
-void GLUTkey(unsigned char k, int x, int y) {
-    fgCONTROLS *c;
-    struct fgTIME *t;
-    struct fgVIEW *v;
-    struct fgWEATHER *w;
-
-    c = current_aircraft.controls;
-    t = &cur_time_params;
-    v = &current_view;
-    w = &current_weather;
-
-    fgPrintf( FG_INPUT, FG_DEBUG, "Key hit = %d", k);
-
-    if ( GLUT_ACTIVE_ALT && glutGetModifiers() ) {
-       fgPrintf( FG_INPUT, FG_DEBUG, " SHIFTED\n");
-       switch (k) {
-       case 49: /* numeric keypad 1 */
-           v->goal_view_offset = FG_PI * 0.75;
-           return;
-       case 50: /* numeric keypad 2 */
-           v->goal_view_offset = FG_PI;
-           return;
-       case 51: /* numeric keypad 3 */
-           v->goal_view_offset = FG_PI * 1.25;
-           return;
-       case 52: /* numeric keypad 4 */
-           v->goal_view_offset = FG_PI * 0.50;
-           return;
-       case 54: /* numeric keypad 6 */
-           v->goal_view_offset = FG_PI * 1.50;
-           return;
-       case 55: /* numeric keypad 7 */
-           v->goal_view_offset = FG_PI * 0.25;
-           return;
-       case 56: /* numeric keypad 8 */
-           v->goal_view_offset = 0.00;
-           return;
-       case 57: /* numeric keypad 9 */
-           v->goal_view_offset = FG_PI * 1.75;
-           return;
-       case 72: /* H key */
-           show_hud = !show_hud;
-           return;
-       case 77: /* M key */
-           t->warp -= 60;
-           return;
-       case 84: /* T key */
-           t->warp_delta -= 30;
-           return;
-       case 87: /* W key */
-           displayInstruments = !displayInstruments;
-           return;
-       case 90: /* Z key */
-           w->visibility /= 1.10;
-           xglFogf(GL_FOG_END, w->visibility);
-           fgPrintf( FG_INPUT, FG_DEBUG, 
-                     "Fog density = %.4f\n", w->visibility );
-           return;
-       // autopilot additions
-       case 65: /* A key */
-               fgAPSetMode(1);
-               return;
-       case 83: /* S key */
-               fgAPSetMode(0);
-               return;
-               
-       }
-    } else {
-       fgPrintf( FG_INPUT, FG_DEBUG, "\n");
-       switch (k) {
-       case 50: /* numeric keypad 2 */
-           fgElevMove(-0.05);
-           return;
-       case 56: /* numeric keypad 8 */
-           fgElevMove(0.05);
-           return;
-       case 49: /* numeric keypad 1 */
-           fgElevTrimMove(-0.001);
-           return;
-       case 55: /* numeric keypad 7 */
-           fgElevTrimMove(0.001);
-           return;
-       case 52: /* numeric keypad 4 */
-           fgAileronMove(-0.05);
-           return;
-       case 54: /* numeric keypad 6 */
-           fgAileronMove(0.05);
-           return;
-       case 48: /* numeric keypad Ins */
-           fgRudderMove(-0.05);
-           return;
-       case 13: /* numeric keypad Enter */
-           fgRudderMove(0.05);
-           return;
-       case 53: /* numeric keypad 5 */
-           fgAileronSet(0.0);
-           fgElevSet(0.0);
-           fgRudderSet(0.0);
-           return;
-       case 57: /* numeric keypad 9 (Pg Up) */
-           fgThrottleMove(0, 0.01);
-           return;
-       case 51: /* numeric keypad 3 (Pg Dn) */
-           fgThrottleMove(0, -0.01);
-           return;
-       case 109: /* m key */
-           t->warp += 60;
-           return;
-       case 116: /* t key */
-           t->warp_delta += 30;
-           return;
-       case 122: /* z key */
-           w->visibility *= 1.10;
-           xglFogf(GL_FOG_END, w->visibility);
-           fgPrintf( FG_INPUT, FG_DEBUG, "Fog density = %.4f\n", w->visibility);
-           return;
-       case 27: /* ESC */
-           exit(0);
-       }
-    }
-
-}
-
-
-/* Handle "special" keyboard events */
-void GLUTspecialkey(int k, int x, int y) {
-    fgCONTROLS *c;
-    struct fgVIEW *v;
-
-    c = current_aircraft.controls;
-    v = &current_view;
-
-    fgPrintf( FG_INPUT, FG_DEBUG, "Special key hit = %d", k);
-
-    if ( GLUT_ACTIVE_SHIFT && glutGetModifiers() ) {
-       fgPrintf( FG_INPUT, FG_DEBUG, " SHIFTED\n");
-       switch (k) {
-       case GLUT_KEY_END: /* numeric keypad 1 */
-           v->goal_view_offset = FG_PI * 0.75;
-           return;
-       case GLUT_KEY_DOWN: /* numeric keypad 2 */
-           v->goal_view_offset = FG_PI;
-           return;
-       case GLUT_KEY_PAGE_DOWN: /* numeric keypad 3 */
-           v->goal_view_offset = FG_PI * 1.25;
-           return;
-       case GLUT_KEY_LEFT: /* numeric keypad 4 */
-           v->goal_view_offset = FG_PI * 0.50;
-           return;
-       case GLUT_KEY_RIGHT: /* numeric keypad 6 */
-           v->goal_view_offset = FG_PI * 1.50;
-           return;
-       case GLUT_KEY_HOME: /* numeric keypad 7 */
-           v->goal_view_offset = FG_PI * 0.25;
-           return;
-       case GLUT_KEY_UP: /* numeric keypad 8 */
-           v->goal_view_offset = 0.00;
-           return;
-       case GLUT_KEY_PAGE_UP: /* numeric keypad 9 */
-           v->goal_view_offset = FG_PI * 1.75;
-           return;
-       }
-    } else {
-        fgPrintf( FG_INPUT, FG_DEBUG, "\n");
-       switch (k) {
-       case GLUT_KEY_UP:
-           fgElevMove(0.05);
-           return;
-       case GLUT_KEY_DOWN:
-           fgElevMove(-0.05);
-           return;
-       case GLUT_KEY_LEFT:
-           fgAileronMove(-0.05);
-           return;
-       case GLUT_KEY_RIGHT:
-           fgAileronMove(0.05);
-           return;
-       case GLUT_KEY_HOME: /* numeric keypad 1 */
-           fgElevTrimMove(0.001);
-           return;
-       case GLUT_KEY_END: /* numeric keypad 7 */
-           fgElevTrimMove(-0.001);
-           return;
-       case GLUT_KEY_INSERT: /* numeric keypad Ins */
-           fgRudderMove(-0.05);
-           return;
-       case 13: /* numeric keypad Enter */
-           fgRudderMove(0.05);
-           return;
-       case 53: /* numeric keypad 5 */
-           fgAileronSet(0.0);
-           fgElevSet(0.0);
-           fgRudderSet(0.0);
-           return;
-       case GLUT_KEY_PAGE_UP: /* numeric keypad 9 (Pg Up) */
-           fgThrottleMove(0, 0.01);
-           return;
-       case GLUT_KEY_PAGE_DOWN: /* numeric keypad 3 (Pg Dn) */
-           fgThrottleMove(0, -0.01);
-           return;
-       }
-    }
-}
-
-
-/* $Log$
-/* Revision 1.33  1998/04/18 04:11:25  curt
-/* Moved fg_debug to it's own library, added zlib support.
-/*
- * Revision 1.32  1998/04/14 02:21:01  curt
- * Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
- * <jgoeke@voyager.net>
- *
- * Revision 1.31  1998/04/08 23:34:05  curt
- * Patch from Durk to fix trim reversal with numlock key active.
- *
- * Revision 1.30  1998/04/03 22:09:02  curt
- * Converting to Gnu autoconf system.
- *
- * Revision 1.29  1998/02/07 15:29:40  curt
- * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.28  1998/02/03 23:20:23  curt
- * Lots of little tweaks to fix various consistency problems discovered by
- * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
- * passed arguments along to the real printf().  Also incorporated HUD changes
- * by Michele America.
- *
- * Revision 1.27  1998/01/27 00:47:55  curt
- * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
- * system and commandline/config file processing code.
- *
- * Revision 1.26  1998/01/19 19:27:07  curt
- * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
- * This should simplify things tremendously.
- *
- * Revision 1.25  1998/01/05 18:44:34  curt
- * Add an option to advance/decrease time from keyboard.
- *
- * Revision 1.24  1997/12/30 16:36:46  curt
- * Merged in Durk's changes ...
- *
- * Revision 1.23  1997/12/15 23:54:44  curt
- * Add xgl wrappers for debugging.
- * Generate terrain normals on the fly.
- *
- * Revision 1.22  1997/12/10 22:37:45  curt
- * Prepended "fg" on the name of all global structures that didn't have it yet.
- * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
- *
- * Revision 1.21  1997/08/27 21:32:23  curt
- * Restructured view calculation code.  Added stars.
- *
- * Revision 1.20  1997/08/27 03:30:13  curt
- * Changed naming scheme of basic shared structures.
- *
- * Revision 1.19  1997/08/25 20:27:21  curt
- * Merged in initial HUD and Joystick code.
- *
- * Revision 1.18  1997/08/22 21:34:38  curt
- * Doing a bit of reorganizing and house cleaning.
- *
- * Revision 1.17  1997/07/19 22:34:02  curt
- * Moved PI definitions to ../constants.h
- * Moved random() stuff to ../Utils/ and renamed fg_random()
- *
- * Revision 1.16  1997/07/18 23:41:24  curt
- * Tweaks for building with Cygnus Win32 compiler.
- *
- * Revision 1.15  1997/07/16 20:04:47  curt
- * Minor tweaks to aid Win32 port.
- *
- * Revision 1.14  1997/07/12 03:50:20  curt
- * Added an #include <Windows32/Base.h> to help compiling for Win32
- *
- * Revision 1.13  1997/06/25 15:39:46  curt
- * Minor changes to compile with rsxnt/win32.
- *
- * Revision 1.12  1997/06/21 17:12:52  curt
- * Capitalized subdirectory names.
- *
- * Revision 1.11  1997/06/18 04:10:31  curt
- * A couple more runway tweaks ...
- *
- * Revision 1.10  1997/06/18 02:21:23  curt
- * Hacked in a runway
- *
- * Revision 1.9  1997/06/02 03:40:06  curt
- * A tiny bit more view tweaking.
- *
- * Revision 1.8  1997/06/02 03:01:38  curt
- * Working on views (side, front, back, transitions, etc.)
- *
- * Revision 1.7  1997/05/31 19:16:25  curt
- * Elevator trim added.
- *
- * Revision 1.6  1997/05/31 04:13:52  curt
- * WE CAN NOW FLY!!!
- *
- * Continuing work on the LaRCsim flight model integration.
- * Added some MSFS-like keyboard input handling.
- *
- * Revision 1.5  1997/05/30 23:26:19  curt
- * Added elevator/aileron controls.
- *
- * Revision 1.4  1997/05/27 17:44:31  curt
- * Renamed & rearranged variables and routines.   Added some initial simple
- * timer/alarm routines so the flight model can be updated on a regular interval.
- *
- * Revision 1.3  1997/05/23 15:40:25  curt
- * Added GNU copyright headers.
- * Fog now works!
- *
- * Revision 1.2  1997/05/23 00:35:12  curt
- * Trying to get fog to work ...
- *
- * Revision 1.1  1997/05/21 15:57:50  curt
- * Renamed due to added GLUT support.
- *
- * Revision 1.2  1997/05/19 18:22:41  curt
- * Parameter tweaking ... starting to stub in fog support.
- *
- * Revision 1.1  1997/05/16 16:05:51  curt
- * Initial revision.
- *
- */
diff --git a/Main/GLUTkey.cxx b/Main/GLUTkey.cxx
new file mode 100644 (file)
index 0000000..c60dbb0
--- /dev/null
@@ -0,0 +1,383 @@
+/**************************************************************************
+ * GLUTkey.c -- handle GLUT keyboard events
+ *
+ * Written by Curtis Olson, started May 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#include <config.h>
+
+#ifdef HAVE_WINDOWS_H
+#  include <windows.h>                     
+#endif
+
+#include <GL/glut.h>
+#include <XGL/xgl.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <Aircraft/aircraft.h>
+#include <Autopilot/autopilot.h> // Added autopilot.h to list, Jeff Goeke-Smith
+#include <Debug/fg_debug.h>
+#include <Include/fg_constants.h>
+#include <Weather/weather.h>
+
+#include "GLUTkey.hxx"
+#include "views.hxx"
+
+
+extern int show_hud;             /* HUD state */
+extern int displayInstruments;
+
+
+/* Handle keyboard events */
+void GLUTkey(unsigned char k, int x, int y) {
+    fgCONTROLS *c;
+    struct fgTIME *t;
+    struct fgVIEW *v;
+    struct fgWEATHER *w;
+
+    c = current_aircraft.controls;
+    t = &cur_time_params;
+    v = &current_view;
+    w = &current_weather;
+
+    fgPrintf( FG_INPUT, FG_DEBUG, "Key hit = %d", k);
+
+    if ( GLUT_ACTIVE_ALT && glutGetModifiers() ) {
+       fgPrintf( FG_INPUT, FG_DEBUG, " SHIFTED\n");
+       switch (k) {
+       case 49: /* numeric keypad 1 */
+           v->goal_view_offset = FG_PI * 0.75;
+           return;
+       case 50: /* numeric keypad 2 */
+           v->goal_view_offset = FG_PI;
+           return;
+       case 51: /* numeric keypad 3 */
+           v->goal_view_offset = FG_PI * 1.25;
+           return;
+       case 52: /* numeric keypad 4 */
+           v->goal_view_offset = FG_PI * 0.50;
+           return;
+       case 54: /* numeric keypad 6 */
+           v->goal_view_offset = FG_PI * 1.50;
+           return;
+       case 55: /* numeric keypad 7 */
+           v->goal_view_offset = FG_PI * 0.25;
+           return;
+       case 56: /* numeric keypad 8 */
+           v->goal_view_offset = 0.00;
+           return;
+       case 57: /* numeric keypad 9 */
+           v->goal_view_offset = FG_PI * 1.75;
+           return;
+       case 72: /* H key */
+           show_hud = !show_hud;
+           return;
+       case 77: /* M key */
+           t->warp -= 60;
+           return;
+       case 84: /* T key */
+           t->warp_delta -= 30;
+           return;
+       case 87: /* W key */
+           displayInstruments = !displayInstruments;
+           return;
+       case 90: /* Z key */
+           w->visibility /= 1.10;
+           xglFogf(GL_FOG_END, w->visibility);
+           fgPrintf( FG_INPUT, FG_DEBUG, 
+                     "Fog density = %.4f\n", w->visibility );
+           return;
+       // autopilot additions
+       case 65: /* A key */
+               fgAPSetMode(1);
+               return;
+       case 83: /* S key */
+               fgAPSetMode(0);
+               return;
+               
+       }
+    } else {
+       fgPrintf( FG_INPUT, FG_DEBUG, "\n");
+       switch (k) {
+       case 50: /* numeric keypad 2 */
+           fgElevMove(-0.05);
+           return;
+       case 56: /* numeric keypad 8 */
+           fgElevMove(0.05);
+           return;
+       case 49: /* numeric keypad 1 */
+           fgElevTrimMove(-0.001);
+           return;
+       case 55: /* numeric keypad 7 */
+           fgElevTrimMove(0.001);
+           return;
+       case 52: /* numeric keypad 4 */
+           fgAileronMove(-0.05);
+           return;
+       case 54: /* numeric keypad 6 */
+           fgAileronMove(0.05);
+           return;
+       case 48: /* numeric keypad Ins */
+           fgRudderMove(-0.05);
+           return;
+       case 13: /* numeric keypad Enter */
+           fgRudderMove(0.05);
+           return;
+       case 53: /* numeric keypad 5 */
+           fgAileronSet(0.0);
+           fgElevSet(0.0);
+           fgRudderSet(0.0);
+           return;
+       case 57: /* numeric keypad 9 (Pg Up) */
+           fgThrottleMove(0, 0.01);
+           return;
+       case 51: /* numeric keypad 3 (Pg Dn) */
+           fgThrottleMove(0, -0.01);
+           return;
+       case 109: /* m key */
+           t->warp += 60;
+           return;
+       case 116: /* t key */
+           t->warp_delta += 30;
+           return;
+       case 122: /* z key */
+           w->visibility *= 1.10;
+           xglFogf(GL_FOG_END, w->visibility);
+           fgPrintf( FG_INPUT, FG_DEBUG, "Fog density = %.4f\n", w->visibility);
+           return;
+       case 27: /* ESC */
+           exit(0);
+       }
+    }
+
+}
+
+
+/* Handle "special" keyboard events */
+void GLUTspecialkey(int k, int x, int y) {
+    fgCONTROLS *c;
+    struct fgVIEW *v;
+
+    c = current_aircraft.controls;
+    v = &current_view;
+
+    fgPrintf( FG_INPUT, FG_DEBUG, "Special key hit = %d", k);
+
+    if ( GLUT_ACTIVE_SHIFT && glutGetModifiers() ) {
+       fgPrintf( FG_INPUT, FG_DEBUG, " SHIFTED\n");
+       switch (k) {
+       case GLUT_KEY_END: /* numeric keypad 1 */
+           v->goal_view_offset = FG_PI * 0.75;
+           return;
+       case GLUT_KEY_DOWN: /* numeric keypad 2 */
+           v->goal_view_offset = FG_PI;
+           return;
+       case GLUT_KEY_PAGE_DOWN: /* numeric keypad 3 */
+           v->goal_view_offset = FG_PI * 1.25;
+           return;
+       case GLUT_KEY_LEFT: /* numeric keypad 4 */
+           v->goal_view_offset = FG_PI * 0.50;
+           return;
+       case GLUT_KEY_RIGHT: /* numeric keypad 6 */
+           v->goal_view_offset = FG_PI * 1.50;
+           return;
+       case GLUT_KEY_HOME: /* numeric keypad 7 */
+           v->goal_view_offset = FG_PI * 0.25;
+           return;
+       case GLUT_KEY_UP: /* numeric keypad 8 */
+           v->goal_view_offset = 0.00;
+           return;
+       case GLUT_KEY_PAGE_UP: /* numeric keypad 9 */
+           v->goal_view_offset = FG_PI * 1.75;
+           return;
+       }
+    } else {
+        fgPrintf( FG_INPUT, FG_DEBUG, "\n");
+       switch (k) {
+       case GLUT_KEY_UP:
+           fgElevMove(0.05);
+           return;
+       case GLUT_KEY_DOWN:
+           fgElevMove(-0.05);
+           return;
+       case GLUT_KEY_LEFT:
+           fgAileronMove(-0.05);
+           return;
+       case GLUT_KEY_RIGHT:
+           fgAileronMove(0.05);
+           return;
+       case GLUT_KEY_HOME: /* numeric keypad 1 */
+           fgElevTrimMove(0.001);
+           return;
+       case GLUT_KEY_END: /* numeric keypad 7 */
+           fgElevTrimMove(-0.001);
+           return;
+       case GLUT_KEY_INSERT: /* numeric keypad Ins */
+           fgRudderMove(-0.05);
+           return;
+       case 13: /* numeric keypad Enter */
+           fgRudderMove(0.05);
+           return;
+       case 53: /* numeric keypad 5 */
+           fgAileronSet(0.0);
+           fgElevSet(0.0);
+           fgRudderSet(0.0);
+           return;
+       case GLUT_KEY_PAGE_UP: /* numeric keypad 9 (Pg Up) */
+           fgThrottleMove(0, 0.01);
+           return;
+       case GLUT_KEY_PAGE_DOWN: /* numeric keypad 3 (Pg Dn) */
+           fgThrottleMove(0, -0.01);
+           return;
+       }
+    }
+}
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:40  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.33  1998/04/18 04:11:25  curt
+ * Moved fg_debug to it's own library, added zlib support.
+ *
+ * Revision 1.32  1998/04/14 02:21:01  curt
+ * Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
+ * <jgoeke@voyager.net>
+ *
+ * Revision 1.31  1998/04/08 23:34:05  curt
+ * Patch from Durk to fix trim reversal with numlock key active.
+ *
+ * Revision 1.30  1998/04/03 22:09:02  curt
+ * Converting to Gnu autoconf system.
+ *
+ * Revision 1.29  1998/02/07 15:29:40  curt
+ * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.28  1998/02/03 23:20:23  curt
+ * Lots of little tweaks to fix various consistency problems discovered by
+ * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
+ * passed arguments along to the real printf().  Also incorporated HUD changes
+ * by Michele America.
+ *
+ * Revision 1.27  1998/01/27 00:47:55  curt
+ * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
+ * system and commandline/config file processing code.
+ *
+ * Revision 1.26  1998/01/19 19:27:07  curt
+ * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
+ * This should simplify things tremendously.
+ *
+ * Revision 1.25  1998/01/05 18:44:34  curt
+ * Add an option to advance/decrease time from keyboard.
+ *
+ * Revision 1.24  1997/12/30 16:36:46  curt
+ * Merged in Durk's changes ...
+ *
+ * Revision 1.23  1997/12/15 23:54:44  curt
+ * Add xgl wrappers for debugging.
+ * Generate terrain normals on the fly.
+ *
+ * Revision 1.22  1997/12/10 22:37:45  curt
+ * Prepended "fg" on the name of all global structures that didn't have it yet.
+ * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+ *
+ * Revision 1.21  1997/08/27 21:32:23  curt
+ * Restructured view calculation code.  Added stars.
+ *
+ * Revision 1.20  1997/08/27 03:30:13  curt
+ * Changed naming scheme of basic shared structures.
+ *
+ * Revision 1.19  1997/08/25 20:27:21  curt
+ * Merged in initial HUD and Joystick code.
+ *
+ * Revision 1.18  1997/08/22 21:34:38  curt
+ * Doing a bit of reorganizing and house cleaning.
+ *
+ * Revision 1.17  1997/07/19 22:34:02  curt
+ * Moved PI definitions to ../constants.h
+ * Moved random() stuff to ../Utils/ and renamed fg_random()
+ *
+ * Revision 1.16  1997/07/18 23:41:24  curt
+ * Tweaks for building with Cygnus Win32 compiler.
+ *
+ * Revision 1.15  1997/07/16 20:04:47  curt
+ * Minor tweaks to aid Win32 port.
+ *
+ * Revision 1.14  1997/07/12 03:50:20  curt
+ * Added an #include <Windows32/Base.h> to help compiling for Win32
+ *
+ * Revision 1.13  1997/06/25 15:39:46  curt
+ * Minor changes to compile with rsxnt/win32.
+ *
+ * Revision 1.12  1997/06/21 17:12:52  curt
+ * Capitalized subdirectory names.
+ *
+ * Revision 1.11  1997/06/18 04:10:31  curt
+ * A couple more runway tweaks ...
+ *
+ * Revision 1.10  1997/06/18 02:21:23  curt
+ * Hacked in a runway
+ *
+ * Revision 1.9  1997/06/02 03:40:06  curt
+ * A tiny bit more view tweaking.
+ *
+ * Revision 1.8  1997/06/02 03:01:38  curt
+ * Working on views (side, front, back, transitions, etc.)
+ *
+ * Revision 1.7  1997/05/31 19:16:25  curt
+ * Elevator trim added.
+ *
+ * Revision 1.6  1997/05/31 04:13:52  curt
+ * WE CAN NOW FLY!!!
+ *
+ * Continuing work on the LaRCsim flight model integration.
+ * Added some MSFS-like keyboard input handling.
+ *
+ * Revision 1.5  1997/05/30 23:26:19  curt
+ * Added elevator/aileron controls.
+ *
+ * Revision 1.4  1997/05/27 17:44:31  curt
+ * Renamed & rearranged variables and routines.   Added some initial simple
+ * timer/alarm routines so the flight model can be updated on a regular interval.
+ *
+ * Revision 1.3  1997/05/23 15:40:25  curt
+ * Added GNU copyright headers.
+ * Fog now works!
+ *
+ * Revision 1.2  1997/05/23 00:35:12  curt
+ * Trying to get fog to work ...
+ *
+ * Revision 1.1  1997/05/21 15:57:50  curt
+ * Renamed due to added GLUT support.
+ *
+ * Revision 1.2  1997/05/19 18:22:41  curt
+ * Parameter tweaking ... starting to stub in fog support.
+ *
+ * Revision 1.1  1997/05/16 16:05:51  curt
+ * Initial revision.
+ *
+ */
diff --git a/Main/GLUTkey.h b/Main/GLUTkey.h
deleted file mode 100644 (file)
index 1eb9ecb..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/**************************************************************************
- * GLUTkey.h -- handle GLUT keyboard events
- *
- * Written by Curtis Olson, started May 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#ifndef _GLUTKEY_H
-#define _GLUTKEY_H
-
-
-#ifdef __cplusplus                                                          
-extern "C" {                            
-#endif                                   
-
-
-#include <config.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>                     
-#endif
-
-#include <GL/glut.h>
-#include <XGL/xgl.h>
-
-/* Handle keyboard events */
-void GLUTkey(unsigned char k, int x, int y);
-void GLUTspecialkey(int k, int x, int y);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _GLUTKEY_H */
-
-
-/* $Log$
-/* Revision 1.9  1998/04/21 17:02:36  curt
-/* Prepairing for C++ integration.
-/*
- * Revision 1.8  1998/04/03 22:09:02  curt
- * Converting to Gnu autoconf system.
- *
- * Revision 1.7  1998/02/12 21:59:44  curt
- * Incorporated code changes contributed by Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.6  1998/01/22 02:59:36  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.5  1997/07/23 21:52:23  curt
- * Put comments around the text after an #endif for increased portability.
- *
- * Revision 1.4  1997/06/02 03:40:06  curt
- * A tiny bit more view tweaking.
- *
- * Revision 1.3  1997/05/31 04:13:52  curt
- * WE CAN NOW FLY!!!
- *
- * Continuing work on the LaRCsim flight model integration.
- * Added some MSFS-like keyboard input handling.
- *
- * Revision 1.2  1997/05/23 15:40:25  curt
- * Added GNU copyright headers.
- * Fog now works!
- *
- * Revision 1.1  1997/05/21 15:57:51  curt
- * Renamed due to added GLUT support.
- *
- * Revision 1.2  1997/05/17 00:17:34  curt
- * Trying to stub in support for standard OpenGL.
- *
- * Revision 1.1  1997/05/16 16:05:53  curt
- * Initial revision.
- *
- */
diff --git a/Main/GLUTkey.hxx b/Main/GLUTkey.hxx
new file mode 100644 (file)
index 0000000..185afa0
--- /dev/null
@@ -0,0 +1,97 @@
+/**************************************************************************
+ * GLUTkey.h -- handle GLUT keyboard events
+ *
+ * Written by Curtis Olson, started May 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#ifndef _GLUTKEY_H
+#define _GLUTKEY_H
+
+
+#ifndef __cplusplus                                                          
+# error This library requires C++
+#endif                                   
+
+
+#include <config.h>
+
+#ifdef HAVE_WINDOWS_H
+#  include <windows.h>                     
+#endif
+
+#include <GL/glut.h>
+#include <XGL/xgl.h>
+
+
+/* Handle keyboard events */
+void GLUTkey(unsigned char k, int x, int y);
+void GLUTspecialkey(int k, int x, int y);
+
+
+#endif /* _GLUTKEY_H */
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:41  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.9  1998/04/21 17:02:36  curt
+ * Prepairing for C++ integration.
+ *
+ * Revision 1.8  1998/04/03 22:09:02  curt
+ * Converting to Gnu autoconf system.
+ *
+ * Revision 1.7  1998/02/12 21:59:44  curt
+ * Incorporated code changes contributed by Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.6  1998/01/22 02:59:36  curt
+ * Changed #ifdef FILE_H to #ifdef _FILE_H
+ *
+ * Revision 1.5  1997/07/23 21:52:23  curt
+ * Put comments around the text after an #endif for increased portability.
+ *
+ * Revision 1.4  1997/06/02 03:40:06  curt
+ * A tiny bit more view tweaking.
+ *
+ * Revision 1.3  1997/05/31 04:13:52  curt
+ * WE CAN NOW FLY!!!
+ *
+ * Continuing work on the LaRCsim flight model integration.
+ * Added some MSFS-like keyboard input handling.
+ *
+ * Revision 1.2  1997/05/23 15:40:25  curt
+ * Added GNU copyright headers.
+ * Fog now works!
+ *
+ * Revision 1.1  1997/05/21 15:57:51  curt
+ * Renamed due to added GLUT support.
+ *
+ * Revision 1.2  1997/05/17 00:17:34  curt
+ * Trying to stub in support for standard OpenGL.
+ *
+ * Revision 1.1  1997/05/16 16:05:53  curt
+ * Initial revision.
+ *
+ */
index fbfde978d5687e9631b7956ea60b5e47d5bf32d0..d45e3ae6f2575029b5ffbb9ea8ade18104ffc654 100644 (file)
 #   include <getopt.h>
 #endif
 
-#include <Debug/fg_debug.h>
-#include <Main/GLUTkey.h>
-#include <Main/fg_init.h>
-#include <Main/fg_getopt.h>
-#include <Main/views.h>
-
 #include <Include/cmdargs.h>       // Line to command line arguments
 #include <Include/fg_constants.h>  // for VERSION
 #include <Include/general.h>
 
 #include <Aircraft/aircraft.h>
-#include <Astro/moon.h>
-#include <Astro/planets.h>
-#include <Astro/sky.h>
-#include <Astro/stars.h>
-#include <Astro/sun.h>
+#include <Astro/moon.hxx>
+#include <Astro/planets.hxx>
+#include <Astro/sky.hxx>
+#include <Astro/stars.hxx>
+#include <Astro/sun.hxx>
 #include <Cockpit/cockpit.h>
+#include <Debug/fg_debug.h>
 #include <Joystick/joystick.h>
 #include <Math/fg_geodesy.h>
 #include <Math/mat3.h>
 #include <Math/polar.h>
 #include <Scenery/scenery.h>
-#include <Scenery/tilemgr.h>
+#include <Scenery/tilemgr.hxx>
 #include <Time/event.h>
 #include <Time/fg_time.h>
 #include <Time/fg_timer.h>
-#include <Time/sunpos.h>
+#include <Time/sunpos.hxx>
 #include <Weather/weather.h>
 
+#include "GLUTkey.hxx"
+#include "fg_init.hxx"
+#include "fg_getopt.h"
+#include "views.hxx"
+
 
 // This is a record containing global housekeeping information
 fgGENERAL general;
@@ -777,6 +777,10 @@ extern "C" {
 
 
 // $Log$
+// Revision 1.2  1998/04/22 13:25:41  curt
+// C++ - ifing the code.
+// Starting a bit of reorganization of lighting code.
+//
 // Revision 1.1  1998/04/21 17:02:39  curt
 // Prepairing for C++ integration.
 //
index 37e0e4400073594262ee95af896759a0e7f65339..dcd61ec5ac34a963ae8e45dbfa150cf4bcf0e214 100644 (file)
@@ -5,12 +5,12 @@ bin_PROGRAMS = fg
 bin_SCRIPTS = runfg runfg.bat
 
 fg_SOURCES = \
-       GLUTkey.c GLUTkey.h \
+       GLUTkey.cxx GLUTkey.hxx \
        GLUTmain.cxx \
        fg_config.h \
        fg_getopt.c fg_getopt.h \
-       fg_init.c fg_init.h \
-       views.c views.h
+       fg_init.cxx fg_init.hxx \
+       views.cxx views.hxx
 
 fg_LDADD = \
        $(top_builddir)/Simulator/Aircraft/libAircraft.la \
index b358d46990f4ba4d41f3194533f4d053346085ff..e39b4474ce926f085f80b432ef476b0240b6665f 100644 (file)
@@ -78,12 +78,12 @@ bin_PROGRAMS = fg
 bin_SCRIPTS = runfg runfg.bat
 
 fg_SOURCES = \
-       GLUTkey.c GLUTkey.h \
+       GLUTkey.cxx GLUTkey.hxx \
        GLUTmain.cxx \
        fg_config.h \
        fg_getopt.c fg_getopt.h \
-       fg_init.c fg_init.h \
-       views.c views.h
+       fg_init.cxx fg_init.hxx \
+       views.cxx views.hxx
 
 fg_LDADD = \
        $(top_builddir)/Simulator/Aircraft/libAircraft.la \
index 4c12f99acc9173a0095a666951880cf15d5f8f3b..a6799f48d880d8b363af1b99e80398b21810f8eb 100644 (file)
@@ -122,17 +122,23 @@ extern int getargs(int argc, char *argv[],int num_opt, Option ** optarr,
 
 extern void print_desc(int num_opt, Option **optarr);  // Not original code
 
+
 #ifdef __cplusplus
 }
 #endif
 
+
 #endif
 
 
 /* $Log$
-/* Revision 1.2  1998/04/21 17:02:41  curt
-/* Prepairing for C++ integration.
+/* Revision 1.3  1998/04/22 13:25:43  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
 /*
+ * Revision 1.2  1998/04/21 17:02:41  curt
+ * Prepairing for C++ integration.
+ *
  * Revision 1.1  1998/02/13 00:23:39  curt
  * Initial revision.
  *
diff --git a/Main/fg_init.c b/Main/fg_init.c
deleted file mode 100644 (file)
index e70e611..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-/* -*- Mode: C++ -*-
- *
- * fg_init.c -- Flight Gear top level initialization routines
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <Main/fg_init.h>
-#include <Main/views.h>
-
-#include <Include/cmdargs.h>
-#include <Include/fg_constants.h>
-#include <Include/general.h>
-
-#include <Aircraft/aircraft.h>
-#include <Astro/moon.h>
-#include <Astro/planets.h>
-#include <Astro/sky.h>
-#include <Astro/stars.h>
-#include <Astro/sun.h>
-#include <Autopilot/autopilot.h>
-#include <Cockpit/cockpit.h>
-#include <Debug/fg_debug.h>
-#include <Joystick/joystick.h>
-#include <Math/fg_random.h>
-#include <Scenery/scenery.h>
-#include <Scenery/tilemgr.h>
-#include <Time/event.h>
-#include <Time/fg_time.h>
-#include <Time/sunpos.h>
-#include <Weather/weather.h>
-
-extern int show_hud;             /* HUD state */
-extern int displayInstruments;
-extern const char *default_root;
-
-/* General house keeping initializations */
-
-int fgInitGeneral( void ) {
-    fgGENERAL *g;
-
-    g = &general;
-
-    fgInitDebug();
-
-    fgPrintf( FG_GENERAL, FG_INFO, "General Initialization\n" );
-    fgPrintf( FG_GENERAL, FG_INFO, "======= ==============\n" );
-
-    /* seed the random number generater */
-    fg_srandom();
-
-    // determine the fg root path. The command line parser getargs() will
-    // fill in a root directory if the option was used.
-
-    if( !(g->root_dir) ) { 
-       // If not set by command line test for environmental var..
-       g->root_dir = getenv("FG_ROOT");
-       if ( !g->root_dir ) { 
-           // No root path set? Then assume, we will exit if this is
-           // wrong when looking for support files.
-           g->root_dir = (char *)DefaultRootDir;
-       }
-    }
-    fgPrintf( FG_GENERAL, FG_INFO, "FG_ROOT = %s\n\n", g->root_dir);
-
-    // Dummy value can be changed if future initializations
-    // fail a critical task.
-    return ( 0 /* FALSE */ ); 
-}
-
-
-// This is the top level init routine which calls all the other
-// initialization routines.  If you are adding a subsystem to flight
-// gear, its initialization call should located in this routine.
-// Returns non-zero if a problem encountered.
-
-int fgInitSubsystems( void ) {
-    double cur_elev;
-
-    // Ok will be flagged only if we get EVERYTHING done.
-    int ret_val = 1 /* TRUE */;
-
-    fgFLIGHT *f;
-    struct fgLIGHT *l;
-    struct fgTIME *t;
-    struct fgVIEW *v;
-
-    l = &cur_light_params;
-    t = &cur_time_params;
-    v = &current_view;
-
-    fgPrintf( FG_GENERAL, FG_INFO, "Initialize Subsystems\n");
-    fgPrintf( FG_GENERAL, FG_INFO, "========== ==========\n");
-
-    /****************************************************************
-     * The following section sets up the flight model EOM parameters and
-     * should really be read in from one or more files.
-     ****************************************************************/
-
-    /* Must happen before any of the flight model or control
-     * parameters are set */
-
-    fgAircraftInit();   // In the future this might not be the case.
-    f = current_aircraft.flight;
-
-    // Initial Position at (P13) Globe, AZ
-    FG_Longitude = ( -110.6642444 ) * DEG_TO_RAD;
-    FG_Latitude  = (  33.3528917 ) * DEG_TO_RAD;
-    FG_Runway_altitude = (3234.5 + 300);
-    FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position at (E81) Superior, AZ
-    // FG_Longitude = ( -111.1270650 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  33.2778339 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = (2646 + 100);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position at (TUS) Tucson, AZ
-    // FG_Longitude = ( -110.9412597 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  32.1162439 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = (2641 + 0);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position at (SEZ) SEDONA airport
-    // FG_Longitude = (-111.7884614 + 0.01) * DEG_TO_RAD;
-    // FG_Latitude  = (  34.8486289 - 0.015) * DEG_TO_RAD;
-    // FG_Runway_altitude = (4827 + 450);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-        
-    // Initial Position at near Anchoraze, AK
-    // FG_Longitude = ( -152.00 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  61.17 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = (0);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position at (HSP) Hot Springs, VA
-    // FG_Longitude = (-79.8338964 + 0.01) * DEG_TO_RAD;
-    // FG_Latitude  = ( 37.9514564 + 0.008) * DEG_TO_RAD;
-    // FG_Runway_altitude = (3792 + 1300);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-    
-    // Initial Position at (ANE) Anoka County airport
-    // FG_Longitude = -93.2113889 * DEG_TO_RAD;
-    // FG_Latitude  = 45.145 * DEG_TO_RAD;
-    // FG_Runway_altitude = 912;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position north of the city of Globe
-    // FG_Longitude = ( -398673.28 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  120625.64 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Longitude = ( -397867.44 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  119548.21 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Altitude = 0.0 + 3.758099;
-
-    // Initial Position near where I used to live in Globe, AZ
-    // FG_Longitude = ( -398757.6 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  120160.0 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 4000.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: 10125 Jewell St. NE
-    // FG_Longitude = ( -93.15 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  45.15 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 950.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: Somewhere near the Grand Canyon
-    // FG_Longitude = ( -112.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  36.5 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 8000.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: (GCN) Grand Canyon Airport, AZ
-    // FG_Longitude = ( -112.1469647 ) * DEG_TO_RAD;
-    // FG_Latitude  = (   35.9523539 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 6606.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: Jim Brennon's Kingmont Observatory
-    // FG_Longitude = ( -121.1131667 ) * DEG_TO_RAD;
-    // FG_Latitude  = (   38.8293917 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 920.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // probably interesting for european team members
-    // That is: If I can get the scenery to work -;) (Durk)
-    // Initial Position: Groningen Airport Eelde, the netherlands
-    // FG_Longitude = ( 6.583333 ) * DEG_TO_RAD;
-    // FG_Latitude  = (   53.125 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 920.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-    // Initial Position: Schiphol Amsterdam Airport, the netherlands
-    // FG_Longitude = ( -4.7641667 ) * DEG_TO_RAD;
-    // FG_Latitude  = (   52.308056 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 920.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Eclipse Watching w73.5 n10 (approx) 18:00 UT
-    // FG_Longitude = ( -73.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  10.0 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 0.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Test Position
-    // FG_Longitude = ( -109.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  32.5 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = (2646 + 2000);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    fgPrintf( FG_GENERAL, FG_INFO, 
-             "Initial position is: (%.4f, %.4f, %.2f)\n", 
-             FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG, 
-             FG_Altitude * FEET_TO_METER);
-
-    /* Initial Velocity */
-    FG_V_north = 0.0 /*  7.287719E+00 */;
-    FG_V_east  = 0.0 /*  1.521770E+03 */;
-    FG_V_down  = 0.0 /* -1.265722E-05 */;
-
-    /* Initial Orientation */
-    FG_Phi   = -2.658474E-06;
-    FG_Theta =  7.401790E-03;
-    FG_Psi   =  260.0 * DEG_TO_RAD;
-
-    /* Initial Angular B rates */
-    FG_P_body = 7.206685E-05;
-    FG_Q_body = 0.000000E+00;
-    FG_R_body = 9.492658E-05;
-
-    FG_Earth_position_angle = 0.000000E+00;
-
-    /* Mass properties and geometry values */
-    FG_Mass = 8.547270E+01;
-    FG_I_xx = 1.048000E+03;
-    FG_I_yy = 3.000000E+03;
-    FG_I_zz = 3.530000E+03;
-    FG_I_xz = 0.000000E+00;
-
-    /* CG position w.r.t. ref. point */
-    FG_Dx_cg = 0.000000E+00;
-    FG_Dy_cg = 0.000000E+00;
-    FG_Dz_cg = 0.000000E+00;
-
-    /* Set initial position and slew parameters */
-    /* fgSlewInit(-398391.3, 120070.41, 244, 3.1415); */ /* GLOBE Airport */
-    /* fgSlewInit(-335340,162540, 15, 4.38); */
-    /* fgSlewInit(-398673.28,120625.64, 53, 4.38); */
-
-    /* Initialize the event manager */
-    fgEventInit();
-
-    /* Dump event stats every 60 seconds */
-    fgEventRegister( "fgEventPrintStats()", fgEventPrintStats,
-                    FG_EVENT_READY, 60000 );
-
-    /* Initialize "time" */
-    fgTimeInit(t);
-    fgTimeUpdate(f, t);
-
-    /* fgViewUpdate() needs the sun in the right place, while
-     * fgUpdateSunPos() needs to know the view position.  I'll get
-     * around this interdependency for now by calling fgUpdateSunPos()
-     * once, then moving on with normal initialization. */
-    fgUpdateSunPos();
-
-    /* Initialize view parameters */
-    fgViewInit(v);
-    fgViewUpdate(f, v, l);
-
-    /* Initialize the weather modeling subsystem */
-    fgWeatherInit();
-
-    /* update the weather for our current position */
-    fgEventRegister( "fgWeatherUpdate()", fgWeatherUpdate,
-                    FG_EVENT_READY, 120000 );
-
-    /* Initialize the Cockpit subsystem */
-    if( fgCockpitInit( &current_aircraft )) {
-       // Cockpit initialized ok.
-    } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Cockpit initialization!\n" );
-    }
-
-    // Initialize the orbital elements of sun, moon and mayor planets
-    fgSolarSystemInit(*t);
-
-    // Initialize the Stars subsystem
-    if( fgStarsInit() ) {
-       // Stars initialized ok.
-    } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Stars initialization!\n" );
-    }
-
-    // Initialize the planetary subsystem
-    fgEventRegister("fgPlanetsInit()", fgPlanetsInit, FG_EVENT_READY, 600000);
-
-    // Initialize the sun's position 
-    fgEventRegister("fgSunInit()", fgSunInit, FG_EVENT_READY, 30000 );
-
-    // Intialize the moon's position
-    fgEventRegister( "fgMoonInit()", fgMoonInit, FG_EVENT_READY, 600000 );
-
-    // Initialize the "sky"
-    fgSkyInit();
-
-    // Initialize the Scenery Management subsystem
-    if ( fgSceneryInit() ) {
-       // Scenery initialized ok.
-    } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Scenery initialization!\n" );
-    }
-
-
-    if( fgTileMgrInit() ) {
-       // Load the local scenery data
-       fgTileMgrUpdate();
-    } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, 
-                 "Error in Tile Manager initialization!\n" );
-    }
-
-    // I'm just sticking this here for now, it should probably move
-    // eventually
-    // cur_elev = mesh_altitude(FG_Longitude * RAD_TO_DEG * 3600.0,
-    //           FG_Latitude  * RAD_TO_DEG * 3600.0); */
-    // fgPrintf( FG_GENERAL, FG_INFO,
-    //   "True ground elevation is %.2f meters here.\n",
-    //   cur_elev); */
-
-    cur_elev = FG_Runway_altitude * FEET_TO_METER;
-    if ( cur_elev > -9990.0 ) {
-       FG_Runway_altitude = cur_elev * METER_TO_FEET;
-    }
-
-    if ( FG_Altitude < FG_Runway_altitude ) {
-       FG_Altitude = FG_Runway_altitude + 3.758099;
-    }
-
-    fgPrintf(FG_GENERAL, FG_INFO,
-            "Updated position (after elevation adj): (%.4f, %.4f, %.2f)\n",
-            FG_Latitude * RAD_TO_DEG, FG_Longitude * RAD_TO_DEG,
-            FG_Altitude * FEET_TO_METER);
-
-    /* end of thing that I just stuck in that I should probably move */
-               
-    /* Initialize the flight model subsystem data structures base on
-     * above values */
-
-    fgFlightModelInit( FG_LARCSIM, f, 1.0 / DEFAULT_MODEL_HZ );
-
-    // To HUD or not to HUD  - Now a command line issue
-    //              show_hud = 0;
-
-    // Let's not show the instrument panel
-    displayInstruments = 0;
-
-    // Joystick support
-    if (fgJoystickInit(0) ) {
-       // Joystick initialized ok.
-    } else {
-       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Joystick initialization!\n" );
-    }
-
-       /// Autopilot init added here, by Jeff Goeke-Smith
-       fgAPInit(&current_aircraft);
-       // end added section;
-    
-    // One more try here to get the sky synced up
-    fgSkyColorsInit();
-    ret_val = 0;
-
-    fgPrintf(FG_GENERAL, FG_INFO,"\n");
-    return ret_val;
-}
-
-
-/* $Log$
-/* Revision 1.56  1998/04/18 04:11:28  curt
-/* Moved fg_debug to it's own library, added zlib support.
-/*
- * Revision 1.55  1998/04/14 02:21:03  curt
- * Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
- * <jgoeke@voyager.net>
- *
- * Revision 1.54  1998/04/08 23:35:36  curt
- * Tweaks to Gnu automake/autoconf system.
- *
- * Revision 1.53  1998/04/03 22:09:06  curt
- * Converting to Gnu autoconf system.
- *
- * Revision 1.52  1998/03/23 21:24:38  curt
- * Source code formating tweaks.
- *
- * Revision 1.51  1998/03/14 00:31:22  curt
- * Beginning initial terrain texturing experiments.
- *
- * Revision 1.50  1998/03/09 22:46:19  curt
- * Minor tweaks.
- *
- * Revision 1.49  1998/02/23 19:07:59  curt
- * Incorporated Durk's Astro/ tweaks.  Includes unifying the sun position
- * calculation code between sun display, and other FG sections that use this
- * for things like lighting.
- *
- * Revision 1.48  1998/02/21 14:53:15  curt
- * Added Charlie's HUD changes.
- *
- * Revision 1.47  1998/02/19 13:05:53  curt
- * Incorporated some HUD tweaks from Michelle America.
- * Tweaked the sky's sunset/rise colors.
- * Other misc. tweaks.
- *
- * Revision 1.46  1998/02/18 15:07:06  curt
- * Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated
- * drivers will work.)
- *
- * Revision 1.45  1998/02/16 13:39:43  curt
- * Miscellaneous weekend tweaks.  Fixed? a cache problem that caused whole
- * tiles to occasionally be missing.
- *
- * Revision 1.44  1998/02/12 21:59:50  curt
- * Incorporated code changes contributed by Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.43  1998/02/11 02:50:40  curt
- * Minor changes.
- *
- * Revision 1.42  1998/02/09 22:56:58  curt
- * Removed "depend" files from cvs control.  Other minor make tweaks.
- *
- * Revision 1.41  1998/02/09 15:07:50  curt
- * Minor tweaks.
- *
- * Revision 1.40  1998/02/07 15:29:44  curt
- * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.39  1998/02/03 23:20:25  curt
- * Lots of little tweaks to fix various consistency problems discovered by
- * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
- * passed arguments along to the real printf().  Also incorporated HUD changes
- * by Michele America.
- *
- * Revision 1.38  1998/02/02 20:53:58  curt
- * Incorporated Durk's changes.
- *
- * Revision 1.37  1998/02/01 03:39:54  curt
- * Minor tweaks.
- *
- * Revision 1.36  1998/01/31 00:43:13  curt
- * Added MetroWorks patches from Carmen Volpe.
- *
- * Revision 1.35  1998/01/27 00:47:57  curt
- * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
- * system and commandline/config file processing code.
- *
- * Revision 1.34  1998/01/22 02:59:37  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.33  1998/01/21 21:11:34  curt
- * Misc. tweaks.
- *
- * Revision 1.32  1998/01/19 19:27:08  curt
- * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
- * This should simplify things tremendously.
- *
- * Revision 1.31  1998/01/19 18:40:32  curt
- * Tons of little changes to clean up the code and to remove fatal errors
- * when building with the c++ compiler.
- *
- * Revision 1.30  1998/01/13 00:23:09  curt
- * Initial changes to support loading and management of scenery tiles.  Note,
- * there's still a fair amount of work left to be done.
- *
- * Revision 1.29  1998/01/08 02:22:08  curt
- * Beginning to integrate Tile management subsystem.
- *
- * Revision 1.28  1998/01/07 03:18:58  curt
- * Moved astronomical stuff from .../Src/Scenery to .../Src/Astro/
- *
- * Revision 1.27  1998/01/05 18:44:35  curt
- * Add an option to advance/decrease time from keyboard.
- *
- * Revision 1.26  1997/12/30 23:09:04  curt
- * Tweaking initialization sequences.
- *
- * Revision 1.25  1997/12/30 22:22:33  curt
- * Further integration of event manager.
- *
- * Revision 1.24  1997/12/30 20:47:44  curt
- * Integrated new event manager with subsystem initializations.
- *
- * Revision 1.23  1997/12/30 16:36:50  curt
- * Merged in Durk's changes ...
- *
- * Revision 1.22  1997/12/19 23:34:05  curt
- * Lot's of tweaking with sky rendering and lighting.
- *
- * Revision 1.21  1997/12/19 16:45:00  curt
- * Working on scene rendering order and options.
- *
- * Revision 1.20  1997/12/18 23:32:33  curt
- * First stab at sky dome actually starting to look reasonable. :-)
- *
- * Revision 1.19  1997/12/17 23:13:36  curt
- * Began working on rendering a sky.
- *
- * Revision 1.18  1997/12/15 23:54:49  curt
- * Add xgl wrappers for debugging.
- * Generate terrain normals on the fly.
- *
- * Revision 1.17  1997/12/15 20:59:09  curt
- * Misc. tweaks.
- *
- * Revision 1.16  1997/12/12 19:52:48  curt
- * Working on lightling and material properties.
- *
- * Revision 1.15  1997/12/11 04:43:55  curt
- * Fixed sun vector and lighting problems.  I thing the moon is now lit
- * correctly.
- *
- * Revision 1.14  1997/12/10 22:37:47  curt
- * Prepended "fg" on the name of all global structures that didn't have it yet.
- * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
- *
- * Revision 1.13  1997/11/25 19:25:32  curt
- * Changes to integrate Durk's moon/sun code updates + clean up.
- *
- * Revision 1.12  1997/11/15 18:16:35  curt
- * minor tweaks.
- *
- * Revision 1.11  1997/10/30 12:38:42  curt
- * Working on new scenery subsystem.
- *
- * Revision 1.10  1997/10/25 03:24:23  curt
- * Incorporated sun, moon, and star positioning code contributed by Durk Talsma.
- *
- * Revision 1.9  1997/09/23 00:29:39  curt
- * Tweaks to get things to compile with gcc-win32.
- *
- * Revision 1.8  1997/09/22 14:44:20  curt
- * Continuing to try to align stars correctly.
- *
- * Revision 1.7  1997/09/16 15:50:30  curt
- * Working on star alignment and time issues.
- *
- * Revision 1.6  1997/09/05 14:17:30  curt
- * More tweaking with stars.
- *
- * Revision 1.5  1997/09/04 02:17:36  curt
- * Shufflin' stuff.
- *
- * Revision 1.4  1997/08/27 21:32:26  curt
- * Restructured view calculation code.  Added stars.
- *
- * Revision 1.3  1997/08/27 03:30:19  curt
- * Changed naming scheme of basic shared structures.
- *
- * Revision 1.2  1997/08/25 20:27:23  curt
- * Merged in initial HUD and Joystick code.
- *
- * Revision 1.1  1997/08/23 01:46:20  curt
- * Initial revision.
- *
- */
diff --git a/Main/fg_init.cxx b/Main/fg_init.cxx
new file mode 100644 (file)
index 0000000..d1f8317
--- /dev/null
@@ -0,0 +1,605 @@
+/* -*- Mode: C++ -*-
+ *
+ * fg_init.c -- Flight Gear top level initialization routines
+ *
+ * Written by Curtis Olson, started August 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <Include/cmdargs.h>
+#include <Include/fg_constants.h>
+#include <Include/general.h>
+
+#include <Aircraft/aircraft.h>
+#include <Astro/moon.hxx>
+#include <Astro/planets.hxx>
+#include <Astro/sky.hxx>
+#include <Astro/stars.hxx>
+#include <Astro/sun.hxx>
+#include <Autopilot/autopilot.h>
+#include <Cockpit/cockpit.h>
+#include <Debug/fg_debug.h>
+#include <Joystick/joystick.h>
+#include <Math/fg_random.h>
+#include <Scenery/scenery.h>
+#include <Scenery/tilemgr.hxx>
+#include <Time/event.h>
+#include <Time/fg_time.h>
+#include <Time/light.hxx>
+#include <Time/sunpos.hxx>
+#include <Weather/weather.h>
+
+#include "fg_init.hxx"
+#include "views.hxx"
+
+extern int show_hud;             /* HUD state */
+extern int displayInstruments;
+extern const char *default_root;
+
+/* General house keeping initializations */
+
+int fgInitGeneral( void ) {
+    fgGENERAL *g;
+
+    g = &general;
+
+    fgInitDebug();
+
+    fgPrintf( FG_GENERAL, FG_INFO, "General Initialization\n" );
+    fgPrintf( FG_GENERAL, FG_INFO, "======= ==============\n" );
+
+    /* seed the random number generater */
+    fg_srandom();
+
+    // determine the fg root path. The command line parser getargs() will
+    // fill in a root directory if the option was used.
+
+    if( !(g->root_dir) ) { 
+       // If not set by command line test for environmental var..
+       g->root_dir = getenv("FG_ROOT");
+       if ( !g->root_dir ) { 
+           // No root path set? Then assume, we will exit if this is
+           // wrong when looking for support files.
+           g->root_dir = (char *)DefaultRootDir;
+       }
+    }
+    fgPrintf( FG_GENERAL, FG_INFO, "FG_ROOT = %s\n\n", g->root_dir);
+
+    // Dummy value can be changed if future initializations
+    // fail a critical task.
+    return ( 0 /* FALSE */ ); 
+}
+
+
+// This is the top level init routine which calls all the other
+// initialization routines.  If you are adding a subsystem to flight
+// gear, its initialization call should located in this routine.
+// Returns non-zero if a problem encountered.
+
+int fgInitSubsystems( void ) {
+    double cur_elev;
+
+    // Ok will be flagged only if we get EVERYTHING done.
+    int ret_val = 1  /* TRUE */;
+
+    fgFLIGHT *f;
+    struct fgLIGHT *l;
+    struct fgTIME *t;
+    struct fgVIEW *v;
+
+    l = &cur_light_params;
+    t = &cur_time_params;
+    v = &current_view;
+
+    fgPrintf( FG_GENERAL, FG_INFO, "Initialize Subsystems\n");
+    fgPrintf( FG_GENERAL, FG_INFO, "========== ==========\n");
+
+    /****************************************************************
+     * The following section sets up the flight model EOM parameters and
+     * should really be read in from one or more files.
+     ****************************************************************/
+
+    // Must happen before any of the flight model or control
+    // parameters are set
+
+    fgAircraftInit();   // In the future this might not be the case.
+    f = current_aircraft.flight;
+
+    // Initial Position at (P13) Globe, AZ
+    FG_Longitude = ( -110.6642444 ) * DEG_TO_RAD;
+    FG_Latitude  = (  33.3528917 ) * DEG_TO_RAD;
+    FG_Runway_altitude = (3234.5 + 300);
+    FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position at (E81) Superior, AZ
+    // FG_Longitude = ( -111.1270650 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  33.2778339 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = (2646 + 100);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position at (TUS) Tucson, AZ
+    // FG_Longitude = ( -110.9412597 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  32.1162439 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = (2641 + 0);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position at (SEZ) SEDONA airport
+    // FG_Longitude = (-111.7884614 + 0.01) * DEG_TO_RAD;
+    // FG_Latitude  = (  34.8486289 - 0.015) * DEG_TO_RAD;
+    // FG_Runway_altitude = (4827 + 450);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+        
+    // Initial Position at near Anchoraze, AK
+    // FG_Longitude = ( -152.00 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  61.17 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = (0);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position at (HSP) Hot Springs, VA
+    // FG_Longitude = (-79.8338964 + 0.01) * DEG_TO_RAD;
+    // FG_Latitude  = ( 37.9514564 + 0.008) * DEG_TO_RAD;
+    // FG_Runway_altitude = (3792 + 1300);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+    
+    // Initial Position at (ANE) Anoka County airport
+    // FG_Longitude = -93.2113889 * DEG_TO_RAD;
+    // FG_Latitude  = 45.145 * DEG_TO_RAD;
+    // FG_Runway_altitude = 912;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position north of the city of Globe
+    // FG_Longitude = ( -398673.28 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  120625.64 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Longitude = ( -397867.44 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  119548.21 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Altitude = 0.0 + 3.758099;
+
+    // Initial Position near where I used to live in Globe, AZ
+    // FG_Longitude = ( -398757.6 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  120160.0 / 3600.0 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 4000.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position: 10125 Jewell St. NE
+    // FG_Longitude = ( -93.15 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  45.15 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 950.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position: Somewhere near the Grand Canyon
+    // FG_Longitude = ( -112.5 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  36.5 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 8000.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position: (GCN) Grand Canyon Airport, AZ
+    // FG_Longitude = ( -112.1469647 ) * DEG_TO_RAD;
+    // FG_Latitude  = (   35.9523539 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 6606.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Initial Position: Jim Brennon's Kingmont Observatory
+    // FG_Longitude = ( -121.1131667 ) * DEG_TO_RAD;
+    // FG_Latitude  = (   38.8293917 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 920.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // probably interesting for european team members
+    // That is: If I can get the scenery to work -;) (Durk)
+    // Initial Position: Groningen Airport Eelde, the netherlands
+    // FG_Longitude = ( 6.583333 ) * DEG_TO_RAD;
+    // FG_Latitude  = (   53.125 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 920.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+    // Initial Position: Schiphol Amsterdam Airport, the netherlands
+    // FG_Longitude = ( -4.7641667 ) * DEG_TO_RAD;
+    // FG_Latitude  = (   52.308056 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 920.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Eclipse Watching w73.5 n10 (approx) 18:00 UT
+    // FG_Longitude = ( -73.5 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  10.0 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = 0.0;
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    // Test Position
+    // FG_Longitude = ( -109.5 ) * DEG_TO_RAD;
+    // FG_Latitude  = (  32.5 ) * DEG_TO_RAD;
+    // FG_Runway_altitude = (2646 + 2000);
+    // FG_Altitude = FG_Runway_altitude + 3.758099;
+
+    fgPrintf( FG_GENERAL, FG_INFO, 
+             "Initial position is: (%.4f, %.4f, %.2f)\n", 
+             FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG, 
+             FG_Altitude * FEET_TO_METER);
+
+    // Initial Velocity
+    FG_V_north = 0.0 /*  7.287719E+00 */;
+    FG_V_east  = 0.0 /*  1.521770E+03 */;
+    FG_V_down  = 0.0 /* -1.265722E-05 */;
+
+    // Initial Orientation
+    FG_Phi   = -2.658474E-06;
+    FG_Theta =  7.401790E-03;
+    FG_Psi   =  270.0 * DEG_TO_RAD;
+
+    // Initial Angular B rates
+    FG_P_body = 7.206685E-05;
+    FG_Q_body = 0.000000E+00;
+    FG_R_body = 9.492658E-05;
+
+    FG_Earth_position_angle = 0.000000E+00;
+
+    // Mass properties and geometry values
+    FG_Mass = 8.547270E+01;
+    FG_I_xx = 1.048000E+03;
+    FG_I_yy = 3.000000E+03;
+    FG_I_zz = 3.530000E+03;
+    FG_I_xz = 0.000000E+00;
+
+    // CG position w.r.t. ref. point
+    FG_Dx_cg = 0.000000E+00;
+    FG_Dy_cg = 0.000000E+00;
+    FG_Dz_cg = 0.000000E+00;
+
+    // Set initial position and slew parameters
+    // fgSlewInit(-398391.3, 120070.41, 244, 3.1415);  // GLOBE Airport
+    // fgSlewInit(-335340,162540, 15, 4.38);
+    // fgSlewInit(-398673.28,120625.64, 53, 4.38);
+
+    // Initialize the event manager
+    fgEventInit();
+
+    // Dump event stats every 60 seconds
+    fgEventRegister( "fgEventPrintStats()", fgEventPrintStats,
+                    FG_EVENT_READY, 60000 );
+
+    // Initialize "time"
+    fgTimeInit(t);
+    fgTimeUpdate(f, t);
+
+    // fgViewUpdate() needs the sun in the right place, while
+    // fgUpdateSunPos() needs to know the view position.  I'll get
+    // around this interdependency for now by calling fgUpdateSunPos()
+    // once, then moving on with normal initialization.
+    fgUpdateSunPos();
+
+    // Initialize view parameters
+    fgViewInit(v);
+    fgViewUpdate(f, v, l);
+
+    // Initialize Lighting interpolation tables
+    fgLightInit();
+
+    // update the lighting parameters (based on sun angle)
+    fgEventRegister( "fgLightUpdate()", fgLightUpdate,
+                    FG_EVENT_READY, 30000 );
+
+    // Initialize the weather modeling subsystem
+    fgWeatherInit();
+
+    // update the weather for our current position
+    fgEventRegister( "fgWeatherUpdate()", fgWeatherUpdate,
+                    FG_EVENT_READY, 120000 );
+
+    // Initialize the Cockpit subsystem
+    if( fgCockpitInit( &current_aircraft )) {
+       // Cockpit initialized ok.
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Cockpit initialization!\n" );
+    }
+
+    // Initialize the orbital elements of sun, moon and mayor planets
+    fgSolarSystemInit(*t);
+
+    // Initialize the Stars subsystem
+    if( fgStarsInit() ) {
+       // Stars initialized ok.
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Stars initialization!\n" );
+    }
+
+    // Initialize the planetary subsystem
+    fgEventRegister("fgPlanetsInit()", fgPlanetsInit, FG_EVENT_READY, 600000);
+
+    // Initialize the sun's position 
+    fgEventRegister("fgSunInit()", fgSunInit, FG_EVENT_READY, 30000 );
+
+    // Intialize the moon's position
+    fgEventRegister( "fgMoonInit()", fgMoonInit, FG_EVENT_READY, 600000 );
+
+    // Initialize the "sky"
+    fgSkyInit();
+
+    // Initialize the Scenery Management subsystem
+    if ( fgSceneryInit() ) {
+       // Scenery initialized ok.
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Scenery initialization!\n" );
+    }
+
+
+    if( fgTileMgrInit() ) {
+       // Load the local scenery data
+       fgTileMgrUpdate();
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, 
+                 "Error in Tile Manager initialization!\n" );
+    }
+
+    // I'm just sticking this here for now, it should probably move
+    // eventually
+    // cur_elev = mesh_altitude(FG_Longitude * RAD_TO_DEG * 3600.0,
+    //           FG_Latitude  * RAD_TO_DEG * 3600.0);
+    // fgPrintf( FG_GENERAL, FG_INFO,
+    //   "True ground elevation is %.2f meters here.\n",
+    //   cur_elev);
+
+    cur_elev = FG_Runway_altitude * FEET_TO_METER;
+    if ( cur_elev > -9990.0 ) {
+       FG_Runway_altitude = cur_elev * METER_TO_FEET;
+    }
+
+    if ( FG_Altitude < FG_Runway_altitude ) {
+       FG_Altitude = FG_Runway_altitude + 3.758099;
+    }
+
+    fgPrintf(FG_GENERAL, FG_INFO,
+            "Updated position (after elevation adj): (%.4f, %.4f, %.2f)\n",
+            FG_Latitude * RAD_TO_DEG, FG_Longitude * RAD_TO_DEG,
+            FG_Altitude * FEET_TO_METER);
+
+    // end of thing that I just stuck in that I should probably move
+               
+    // Initialize the flight model subsystem data structures base on
+    // above values
+
+    fgFlightModelInit( FG_LARCSIM, f, 1.0 / DEFAULT_MODEL_HZ );
+
+    // To HUD or not to HUD  - Now a command line issue
+    //              show_hud = 0;
+
+    // Let's not show the instrument panel
+    displayInstruments = 0;
+
+    // Joystick support
+    if (fgJoystickInit(0) ) {
+       // Joystick initialized ok.
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Error in Joystick initialization!\n" );
+    }
+
+       // Autopilot init added here, by Jeff Goeke-Smith
+       fgAPInit(&current_aircraft);
+       // end added section;
+    
+    // One more try here to get the sky synced up
+    fgSkyColorsInit();
+    ret_val = 0;
+
+    fgPrintf(FG_GENERAL, FG_INFO,"\n");
+    return ret_val;
+}
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:44  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.56  1998/04/18 04:11:28  curt
+ * Moved fg_debug to it's own library, added zlib support.
+ *
+ * Revision 1.55  1998/04/14 02:21:03  curt
+ * Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
+ * <jgoeke@voyager.net>
+ *
+ * Revision 1.54  1998/04/08 23:35:36  curt
+ * Tweaks to Gnu automake/autoconf system.
+ *
+ * Revision 1.53  1998/04/03 22:09:06  curt
+ * Converting to Gnu autoconf system.
+ *
+ * Revision 1.52  1998/03/23 21:24:38  curt
+ * Source code formating tweaks.
+ *
+ * Revision 1.51  1998/03/14 00:31:22  curt
+ * Beginning initial terrain texturing experiments.
+ *
+ * Revision 1.50  1998/03/09 22:46:19  curt
+ * Minor tweaks.
+ *
+ * Revision 1.49  1998/02/23 19:07:59  curt
+ * Incorporated Durk's Astro/ tweaks.  Includes unifying the sun position
+ * calculation code between sun display, and other FG sections that use this
+ * for things like lighting.
+ *
+ * Revision 1.48  1998/02/21 14:53:15  curt
+ * Added Charlie's HUD changes.
+ *
+ * Revision 1.47  1998/02/19 13:05:53  curt
+ * Incorporated some HUD tweaks from Michelle America.
+ * Tweaked the sky's sunset/rise colors.
+ * Other misc. tweaks.
+ *
+ * Revision 1.46  1998/02/18 15:07:06  curt
+ * Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated
+ * drivers will work.)
+ *
+ * Revision 1.45  1998/02/16 13:39:43  curt
+ * Miscellaneous weekend tweaks.  Fixed? a cache problem that caused whole
+ * tiles to occasionally be missing.
+ *
+ * Revision 1.44  1998/02/12 21:59:50  curt
+ * Incorporated code changes contributed by Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.43  1998/02/11 02:50:40  curt
+ * Minor changes.
+ *
+ * Revision 1.42  1998/02/09 22:56:58  curt
+ * Removed "depend" files from cvs control.  Other minor make tweaks.
+ *
+ * Revision 1.41  1998/02/09 15:07:50  curt
+ * Minor tweaks.
+ *
+ * Revision 1.40  1998/02/07 15:29:44  curt
+ * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.39  1998/02/03 23:20:25  curt
+ * Lots of little tweaks to fix various consistency problems discovered by
+ * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
+ * passed arguments along to the real printf().  Also incorporated HUD changes
+ * by Michele America.
+ *
+ * Revision 1.38  1998/02/02 20:53:58  curt
+ * Incorporated Durk's changes.
+ *
+ * Revision 1.37  1998/02/01 03:39:54  curt
+ * Minor tweaks.
+ *
+ * Revision 1.36  1998/01/31 00:43:13  curt
+ * Added MetroWorks patches from Carmen Volpe.
+ *
+ * Revision 1.35  1998/01/27 00:47:57  curt
+ * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
+ * system and commandline/config file processing code.
+ *
+ * Revision 1.34  1998/01/22 02:59:37  curt
+ * Changed #ifdef FILE_H to #ifdef _FILE_H
+ *
+ * Revision 1.33  1998/01/21 21:11:34  curt
+ * Misc. tweaks.
+ *
+ * Revision 1.32  1998/01/19 19:27:08  curt
+ * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
+ * This should simplify things tremendously.
+ *
+ * Revision 1.31  1998/01/19 18:40:32  curt
+ * Tons of little changes to clean up the code and to remove fatal errors
+ * when building with the c++ compiler.
+ *
+ * Revision 1.30  1998/01/13 00:23:09  curt
+ * Initial changes to support loading and management of scenery tiles.  Note,
+ * there's still a fair amount of work left to be done.
+ *
+ * Revision 1.29  1998/01/08 02:22:08  curt
+ * Beginning to integrate Tile management subsystem.
+ *
+ * Revision 1.28  1998/01/07 03:18:58  curt
+ * Moved astronomical stuff from .../Src/Scenery to .../Src/Astro/
+ *
+ * Revision 1.27  1998/01/05 18:44:35  curt
+ * Add an option to advance/decrease time from keyboard.
+ *
+ * Revision 1.26  1997/12/30 23:09:04  curt
+ * Tweaking initialization sequences.
+ *
+ * Revision 1.25  1997/12/30 22:22:33  curt
+ * Further integration of event manager.
+ *
+ * Revision 1.24  1997/12/30 20:47:44  curt
+ * Integrated new event manager with subsystem initializations.
+ *
+ * Revision 1.23  1997/12/30 16:36:50  curt
+ * Merged in Durk's changes ...
+ *
+ * Revision 1.22  1997/12/19 23:34:05  curt
+ * Lot's of tweaking with sky rendering and lighting.
+ *
+ * Revision 1.21  1997/12/19 16:45:00  curt
+ * Working on scene rendering order and options.
+ *
+ * Revision 1.20  1997/12/18 23:32:33  curt
+ * First stab at sky dome actually starting to look reasonable. :-)
+ *
+ * Revision 1.19  1997/12/17 23:13:36  curt
+ * Began working on rendering a sky.
+ *
+ * Revision 1.18  1997/12/15 23:54:49  curt
+ * Add xgl wrappers for debugging.
+ * Generate terrain normals on the fly.
+ *
+ * Revision 1.17  1997/12/15 20:59:09  curt
+ * Misc. tweaks.
+ *
+ * Revision 1.16  1997/12/12 19:52:48  curt
+ * Working on lightling and material properties.
+ *
+ * Revision 1.15  1997/12/11 04:43:55  curt
+ * Fixed sun vector and lighting problems.  I thing the moon is now lit
+ * correctly.
+ *
+ * Revision 1.14  1997/12/10 22:37:47  curt
+ * Prepended "fg" on the name of all global structures that didn't have it yet.
+ * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+ *
+ * Revision 1.13  1997/11/25 19:25:32  curt
+ * Changes to integrate Durk's moon/sun code updates + clean up.
+ *
+ * Revision 1.12  1997/11/15 18:16:35  curt
+ * minor tweaks.
+ *
+ * Revision 1.11  1997/10/30 12:38:42  curt
+ * Working on new scenery subsystem.
+ *
+ * Revision 1.10  1997/10/25 03:24:23  curt
+ * Incorporated sun, moon, and star positioning code contributed by Durk Talsma.
+ *
+ * Revision 1.9  1997/09/23 00:29:39  curt
+ * Tweaks to get things to compile with gcc-win32.
+ *
+ * Revision 1.8  1997/09/22 14:44:20  curt
+ * Continuing to try to align stars correctly.
+ *
+ * Revision 1.7  1997/09/16 15:50:30  curt
+ * Working on star alignment and time issues.
+ *
+ * Revision 1.6  1997/09/05 14:17:30  curt
+ * More tweaking with stars.
+ *
+ * Revision 1.5  1997/09/04 02:17:36  curt
+ * Shufflin' stuff.
+ *
+ * Revision 1.4  1997/08/27 21:32:26  curt
+ * Restructured view calculation code.  Added stars.
+ *
+ * Revision 1.3  1997/08/27 03:30:19  curt
+ * Changed naming scheme of basic shared structures.
+ *
+ * Revision 1.2  1997/08/25 20:27:23  curt
+ * Merged in initial HUD and Joystick code.
+ *
+ * Revision 1.1  1997/08/23 01:46:20  curt
+ * Initial revision.
+ *
+ */
diff --git a/Main/fg_init.h b/Main/fg_init.h
deleted file mode 100644 (file)
index 139af9f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/**************************************************************************
- * fg_init.h -- Flight Gear top level initialization routines
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#ifndef _FG_INIT_H
-#define _FG_INIT_H
-
-
-#ifdef __cplusplus                                                          
-extern "C" {                            
-#endif                                   
-
-
-// General house keeping initializations
-int fgInitGeneral ( void );
-
-// This is the top level init routine which calls all the other
-// initialization routines.  If you are adding a subsystem to flight
-// gear, its initialization call should located in this routine.
-int fgInitSubsystems( void );
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _FG_INIT_H */
-
-
-/* $Log$
-/* Revision 1.4  1998/04/21 17:02:41  curt
-/* Prepairing for C++ integration.
-/*
- * Revision 1.3  1998/02/12 21:59:50  curt
- * Incorporated code changes contributed by Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.2  1998/01/22 02:59:38  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.1  1997/08/23 01:46:20  curt
- * Initial revision.
- *
- */
diff --git a/Main/fg_init.hxx b/Main/fg_init.hxx
new file mode 100644 (file)
index 0000000..f58c303
--- /dev/null
@@ -0,0 +1,66 @@
+/**************************************************************************
+ * fg_init.h -- Flight Gear top level initialization routines
+ *
+ * Written by Curtis Olson, started August 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#ifndef _FG_INIT_H
+#define _FG_INIT_H
+
+
+#ifndef __cplusplus                                                          
+# error This library requires C++
+#endif                                   
+
+
+// General house keeping initializations
+int fgInitGeneral ( void );
+
+// This is the top level init routine which calls all the other
+// initialization routines.  If you are adding a subsystem to flight
+// gear, its initialization call should located in this routine.
+int fgInitSubsystems( void );
+
+
+#endif /* _FG_INIT_H */
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:44  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.4  1998/04/21 17:02:41  curt
+ * Prepairing for C++ integration.
+ *
+ * Revision 1.3  1998/02/12 21:59:50  curt
+ * Incorporated code changes contributed by Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.2  1998/01/22 02:59:38  curt
+ * Changed #ifdef FILE_H to #ifdef _FILE_H
+ *
+ * Revision 1.1  1997/08/23 01:46:20  curt
+ * Initial revision.
+ *
+ */
diff --git a/Main/views.c b/Main/views.c
deleted file mode 100644 (file)
index f7b6fbb..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/**************************************************************************
- * views.c -- data structures and routines for managing and view parameters.
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#include <Main/views.h>
-
-#include <Include/fg_constants.h>
-
-#include <Debug/fg_debug.h>
-#include <Flight/flight.h>
-#include <Math/mat3.h>
-#include <Math/polar.h>
-#include <Math/vector.h>
-#include <Scenery/scenery.h>
-#include <Time/fg_time.h>
-
-/* This is a record containing current view parameters */
-struct fgVIEW current_view;
-
-
-/* Initialize a view structure */
-void fgViewInit(struct fgVIEW *v) {
-    fgPrintf( FG_VIEW, FG_INFO, "Initializing View parameters\n");
-
-    v->view_offset = 0.0;
-    v->goal_view_offset = 0.0;
-}
-
-
-/* Update the view parameters */
-void fgViewUpdate(fgFLIGHT *f, struct fgVIEW *v, struct fgLIGHT *l) {
-    MAT3vec vec, forward, v0, minus_z;
-    MAT3mat R, TMP, UP, LOCAL, VIEW;
-    double ntmp;
-
-    scenery.center.x = scenery.next_center.x;
-    scenery.center.y = scenery.next_center.y;
-    scenery.center.z = scenery.next_center.z;
-
-    /* calculate the cartesion coords of the current lat/lon/0 elev */
-    v->cur_zero_elev = fgPolarToCart(FG_Longitude, FG_Lat_geocentric, 
-                                    FG_Sea_level_radius * FEET_TO_METER);
-    v->cur_zero_elev.x -= scenery.center.x;
-    v->cur_zero_elev.y -= scenery.center.y;
-    v->cur_zero_elev.z -= scenery.center.z;
-
-    /* calculate view position in current FG view coordinate system */
-    v->abs_view_pos = fgPolarToCart(FG_Longitude, FG_Lat_geocentric, 
-                            FG_Radius_to_vehicle * FEET_TO_METER + 1.0);
-    v->view_pos.x = v->abs_view_pos.x - scenery.center.x;
-    v->view_pos.y = v->abs_view_pos.y - scenery.center.y;
-    v->view_pos.z = v->abs_view_pos.z - scenery.center.z;
-
-    fgPrintf( FG_VIEW, FG_DEBUG, "Absolute view pos = %.4f, %.4f, %.4f\n", 
-          v->abs_view_pos.x, v->abs_view_pos.y, v->abs_view_pos.z);
-    fgPrintf( FG_VIEW, FG_DEBUG, "Relative view pos = %.4f, %.4f, %.4f\n", 
-          v->view_pos.x, v->view_pos.y, v->view_pos.z);
-
-    /* make a vector to the current view position */
-    MAT3_SET_VEC(v0, v->view_pos.x, v->view_pos.y, v->view_pos.z);
-
-    /* calculate vector to sun's position on the earth's surface */
-    v->to_sun[0] = l->fg_sunpos.x - (v->view_pos.x + scenery.center.x);
-    v->to_sun[1] = l->fg_sunpos.y - (v->view_pos.y + scenery.center.y);
-    v->to_sun[2] = l->fg_sunpos.z - (v->view_pos.z + scenery.center.z);
-    /* printf("Vector to sun = %.2f %.2f %.2f\n",
-          v->to_sun[0], v->to_sun[1], v->to_sun[2]); */
-
-    /* Derive the LOCAL aircraft rotation matrix (roll, pitch, yaw) */
-    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
-    MAT3rotate(R, vec, FG_Phi);
-    /* printf("Roll matrix\n"); */
-    /* MAT3print(R, stdout); */
-
-    MAT3_SET_VEC(vec, 0.0, 1.0, 0.0);
-    /* MAT3mult_vec(vec, vec, R); */
-    MAT3rotate(TMP, vec, FG_Theta);
-    /* printf("Pitch matrix\n"); */
-    /* MAT3print(TMP, stdout); */
-    MAT3mult(R, R, TMP);
-
-    MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
-    /* MAT3mult_vec(vec, vec, R); */
-    /* MAT3rotate(TMP, vec, FG_Psi - FG_PI_2); */
-    MAT3rotate(TMP, vec, -FG_Psi);
-    /* printf("Yaw matrix\n");
-    MAT3print(TMP, stdout); */
-    MAT3mult(LOCAL, R, TMP);
-    /* printf("LOCAL matrix\n"); */
-    /* MAT3print(LOCAL, stdout); */
-
-    /* Derive the local UP transformation matrix based on *geodetic*
-     * coordinates */
-    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
-    MAT3rotate(R, vec, FG_Longitude);     /* R = rotate about Z axis */
-    /* printf("Longitude matrix\n"); */
-    /* MAT3print(R, stdout); */
-
-    MAT3_SET_VEC(vec, 0.0, 1.0, 0.0);
-    MAT3mult_vec(vec, vec, R);
-    MAT3rotate(TMP, vec, -FG_Latitude);  /* TMP = rotate about X axis */
-    /* printf("Latitude matrix\n"); */
-    /* MAT3print(TMP, stdout); */
-
-    MAT3mult(UP, R, TMP);
-    /* printf("Local up matrix\n"); */
-    /* MAT3print(UP, stdout); */
-
-    MAT3_SET_VEC(v->local_up, 1.0, 0.0, 0.0);
-    MAT3mult_vec(v->local_up, v->local_up, UP);
-
-    /* printf("Local Up = (%.4f, %.4f, %.4f)\n",
-          v->local_up[0], v->local_up[1], v->local_up[2]); */
-    
-    /* Alternative method to Derive local up vector based on
-     * *geodetic* coordinates */
-    /* alt_up = fgPolarToCart(FG_Longitude, FG_Latitude, 1.0); */
-    /* printf("    Alt Up = (%.4f, %.4f, %.4f)\n", 
-       alt_up.x, alt_up.y, alt_up.z); */
-
-    /* Calculate the VIEW matrix */
-    MAT3mult(VIEW, LOCAL, UP);
-    /* printf("VIEW matrix\n"); */
-    /* MAT3print(VIEW, stdout); */
-
-    /* generate the current up, forward, and fwrd-view vectors */
-    MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
-    MAT3mult_vec(v->view_up, vec, VIEW);
-
-    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
-    MAT3mult_vec(forward, vec, VIEW);
-    /* printf("Forward vector is (%.2f,%.2f,%.2f)\n", forward[0], forward[1], 
-          forward[2]); */
-
-    MAT3rotate(TMP, v->view_up, v->view_offset);
-    MAT3mult_vec(v->view_forward, forward, TMP);
-
-    /* Given a vector from the view position to the point on the
-     * earth's surface the sun is directly over, map into onto the
-     * local plane representing "horizontal". */
-    map_vec_onto_cur_surface_plane(v->local_up, v0, v->to_sun, 
-                                  v->surface_to_sun);
-    MAT3_NORMALIZE_VEC(v->surface_to_sun, ntmp);
-    /* printf("Surface direction to sun is %.2f %.2f %.2f\n",
-          v->surface_to_sun[0], v->surface_to_sun[1], v->surface_to_sun[2]); */
-    /* printf("Should be close to zero = %.2f\n", 
-          MAT3_DOT_PRODUCT(v->local_up, v->surface_to_sun)); */
-
-    /* Given a vector pointing straight down (-Z), map into onto the
-     * local plane representing "horizontal".  This should give us the
-     * local direction for moving "south". */
-    MAT3_SET_VEC(minus_z, 0.0, 0.0, -1.0);
-    map_vec_onto_cur_surface_plane(v->local_up, v0, minus_z, v->surface_south);
-    MAT3_NORMALIZE_VEC(v->surface_south, ntmp);
-    /* printf("Surface direction directly south %.2f %.2f %.2f\n",
-          v->surface_south[0], v->surface_south[1], v->surface_south[2]); */
-
-    /* now calculate the surface east vector */
-    MAT3rotate(TMP, v->view_up, FG_PI_2);
-    MAT3mult_vec(v->surface_east, v->surface_south, TMP);
-    /* printf("Surface direction directly east %.2f %.2f %.2f\n",
-          v->surface_east[0], v->surface_east[1], v->surface_east[2]); */
-    /* printf("Should be close to zero = %.2f\n", 
-          MAT3_DOT_PRODUCT(v->surface_south, v->surface_east)); */
-}
-
-
-/* $Log$
-/* Revision 1.16  1998/04/18 04:11:29  curt
-/* Moved fg_debug to it's own library, added zlib support.
-/*
- * Revision 1.15  1998/02/20 00:16:24  curt
- * Thursday's tweaks.
- *
- * Revision 1.14  1998/02/09 15:07:50  curt
- * Minor tweaks.
- *
- * Revision 1.13  1998/02/07 15:29:45  curt
- * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.12  1998/01/29 00:50:28  curt
- * Added a view record field for absolute x, y, z position.
- *
- * Revision 1.11  1998/01/27 00:47:58  curt
- * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
- * system and commandline/config file processing code.
- *
- * Revision 1.10  1998/01/19 19:27:09  curt
- * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
- * This should simplify things tremendously.
- *
- * Revision 1.9  1998/01/13 00:23:09  curt
- * Initial changes to support loading and management of scenery tiles.  Note,
- * there's still a fair amount of work left to be done.
- *
- * Revision 1.8  1997/12/30 22:22:33  curt
- * Further integration of event manager.
- *
- * Revision 1.7  1997/12/30 20:47:45  curt
- * Integrated new event manager with subsystem initializations.
- *
- * Revision 1.6  1997/12/22 04:14:32  curt
- * Aligned sky with sun so dusk/dawn effects can be correct relative to the sun.
- *
- * Revision 1.5  1997/12/18 04:07:02  curt
- * Worked on properly translating and positioning the sky dome.
- *
- * Revision 1.4  1997/12/17 23:13:36  curt
- * Began working on rendering a sky.
- *
- * Revision 1.3  1997/12/15 23:54:50  curt
- * Add xgl wrappers for debugging.
- * Generate terrain normals on the fly.
- *
- * Revision 1.2  1997/12/10 22:37:48  curt
- * Prepended "fg" on the name of all global structures that didn't have it yet.
- * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
- *
- * Revision 1.1  1997/08/27 21:31:17  curt
- * Initial revision.
- *
- */
diff --git a/Main/views.cxx b/Main/views.cxx
new file mode 100644 (file)
index 0000000..1c3901b
--- /dev/null
@@ -0,0 +1,251 @@
+/**************************************************************************
+ * views.c -- data structures and routines for managing and view parameters.
+ *
+ * Written by Curtis Olson, started August 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#include <config.h>
+
+#include <Debug/fg_debug.h>
+#include <Flight/flight.h>
+#include <Include/fg_constants.h>
+#include <Math/mat3.h>
+#include <Math/polar.h>
+#include <Math/vector.h>
+#include <Scenery/scenery.h>
+#include <Time/fg_time.h>
+
+#include "views.hxx"
+
+
+/* This is a record containing current view parameters */
+struct fgVIEW current_view;
+
+
+/* Initialize a view structure */
+void fgViewInit(struct fgVIEW *v) {
+    fgPrintf( FG_VIEW, FG_INFO, "Initializing View parameters\n");
+
+    v->view_offset = 0.0;
+    v->goal_view_offset = 0.0;
+}
+
+
+/* Update the view parameters */
+void fgViewUpdate(fgFLIGHT *f, struct fgVIEW *v, fgLIGHT *l) {
+    MAT3vec vec, forward, v0, minus_z;
+    MAT3mat R, TMP, UP, LOCAL, VIEW;
+    double ntmp;
+
+    scenery.center.x = scenery.next_center.x;
+    scenery.center.y = scenery.next_center.y;
+    scenery.center.z = scenery.next_center.z;
+
+    /* calculate the cartesion coords of the current lat/lon/0 elev */
+    v->cur_zero_elev = fgPolarToCart(FG_Longitude, FG_Lat_geocentric, 
+                                    FG_Sea_level_radius * FEET_TO_METER);
+    v->cur_zero_elev.x -= scenery.center.x;
+    v->cur_zero_elev.y -= scenery.center.y;
+    v->cur_zero_elev.z -= scenery.center.z;
+
+    /* calculate view position in current FG view coordinate system */
+    v->abs_view_pos = fgPolarToCart(FG_Longitude, FG_Lat_geocentric, 
+                            FG_Radius_to_vehicle * FEET_TO_METER + 1.0);
+    v->view_pos.x = v->abs_view_pos.x - scenery.center.x;
+    v->view_pos.y = v->abs_view_pos.y - scenery.center.y;
+    v->view_pos.z = v->abs_view_pos.z - scenery.center.z;
+
+    fgPrintf( FG_VIEW, FG_DEBUG, "Absolute view pos = %.4f, %.4f, %.4f\n", 
+          v->abs_view_pos.x, v->abs_view_pos.y, v->abs_view_pos.z);
+    fgPrintf( FG_VIEW, FG_DEBUG, "Relative view pos = %.4f, %.4f, %.4f\n", 
+          v->view_pos.x, v->view_pos.y, v->view_pos.z);
+
+    /* make a vector to the current view position */
+    MAT3_SET_VEC(v0, v->view_pos.x, v->view_pos.y, v->view_pos.z);
+
+    /* calculate vector to sun's position on the earth's surface */
+    v->to_sun[0] = l->fg_sunpos.x - (v->view_pos.x + scenery.center.x);
+    v->to_sun[1] = l->fg_sunpos.y - (v->view_pos.y + scenery.center.y);
+    v->to_sun[2] = l->fg_sunpos.z - (v->view_pos.z + scenery.center.z);
+    /* printf("Vector to sun = %.2f %.2f %.2f\n",
+          v->to_sun[0], v->to_sun[1], v->to_sun[2]); */
+
+    /* Derive the LOCAL aircraft rotation matrix (roll, pitch, yaw) */
+    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
+    MAT3rotate(R, vec, FG_Phi);
+    /* printf("Roll matrix\n"); */
+    /* MAT3print(R, stdout); */
+
+    MAT3_SET_VEC(vec, 0.0, 1.0, 0.0);
+    /* MAT3mult_vec(vec, vec, R); */
+    MAT3rotate(TMP, vec, FG_Theta);
+    /* printf("Pitch matrix\n"); */
+    /* MAT3print(TMP, stdout); */
+    MAT3mult(R, R, TMP);
+
+    MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
+    /* MAT3mult_vec(vec, vec, R); */
+    /* MAT3rotate(TMP, vec, FG_Psi - FG_PI_2); */
+    MAT3rotate(TMP, vec, -FG_Psi);
+    /* printf("Yaw matrix\n");
+    MAT3print(TMP, stdout); */
+    MAT3mult(LOCAL, R, TMP);
+    /* printf("LOCAL matrix\n"); */
+    /* MAT3print(LOCAL, stdout); */
+
+    /* Derive the local UP transformation matrix based on *geodetic*
+     * coordinates */
+    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
+    MAT3rotate(R, vec, FG_Longitude);     /* R = rotate about Z axis */
+    /* printf("Longitude matrix\n"); */
+    /* MAT3print(R, stdout); */
+
+    MAT3_SET_VEC(vec, 0.0, 1.0, 0.0);
+    MAT3mult_vec(vec, vec, R);
+    MAT3rotate(TMP, vec, -FG_Latitude);  /* TMP = rotate about X axis */
+    /* printf("Latitude matrix\n"); */
+    /* MAT3print(TMP, stdout); */
+
+    MAT3mult(UP, R, TMP);
+    /* printf("Local up matrix\n"); */
+    /* MAT3print(UP, stdout); */
+
+    MAT3_SET_VEC(v->local_up, 1.0, 0.0, 0.0);
+    MAT3mult_vec(v->local_up, v->local_up, UP);
+
+    /* printf("Local Up = (%.4f, %.4f, %.4f)\n",
+          v->local_up[0], v->local_up[1], v->local_up[2]); */
+    
+    /* Alternative method to Derive local up vector based on
+     * *geodetic* coordinates */
+    /* alt_up = fgPolarToCart(FG_Longitude, FG_Latitude, 1.0); */
+    /* printf("    Alt Up = (%.4f, %.4f, %.4f)\n", 
+       alt_up.x, alt_up.y, alt_up.z); */
+
+    /* Calculate the VIEW matrix */
+    MAT3mult(VIEW, LOCAL, UP);
+    /* printf("VIEW matrix\n"); */
+    /* MAT3print(VIEW, stdout); */
+
+    /* generate the current up, forward, and fwrd-view vectors */
+    MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
+    MAT3mult_vec(v->view_up, vec, VIEW);
+
+    MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
+    MAT3mult_vec(forward, vec, VIEW);
+    /* printf("Forward vector is (%.2f,%.2f,%.2f)\n", forward[0], forward[1], 
+          forward[2]); */
+
+    MAT3rotate(TMP, v->view_up, v->view_offset);
+    MAT3mult_vec(v->view_forward, forward, TMP);
+
+    /* Given a vector from the view position to the point on the
+     * earth's surface the sun is directly over, map into onto the
+     * local plane representing "horizontal". */
+    map_vec_onto_cur_surface_plane(v->local_up, v0, v->to_sun, 
+                                  v->surface_to_sun);
+    MAT3_NORMALIZE_VEC(v->surface_to_sun, ntmp);
+    /* printf("Surface direction to sun is %.2f %.2f %.2f\n",
+          v->surface_to_sun[0], v->surface_to_sun[1], v->surface_to_sun[2]); */
+    /* printf("Should be close to zero = %.2f\n", 
+          MAT3_DOT_PRODUCT(v->local_up, v->surface_to_sun)); */
+
+    /* Given a vector pointing straight down (-Z), map into onto the
+     * local plane representing "horizontal".  This should give us the
+     * local direction for moving "south". */
+    MAT3_SET_VEC(minus_z, 0.0, 0.0, -1.0);
+    map_vec_onto_cur_surface_plane(v->local_up, v0, minus_z, v->surface_south);
+    MAT3_NORMALIZE_VEC(v->surface_south, ntmp);
+    /* printf("Surface direction directly south %.2f %.2f %.2f\n",
+          v->surface_south[0], v->surface_south[1], v->surface_south[2]); */
+
+    /* now calculate the surface east vector */
+    MAT3rotate(TMP, v->view_up, FG_PI_2);
+    MAT3mult_vec(v->surface_east, v->surface_south, TMP);
+    /* printf("Surface direction directly east %.2f %.2f %.2f\n",
+          v->surface_east[0], v->surface_east[1], v->surface_east[2]); */
+    /* printf("Should be close to zero = %.2f\n", 
+          MAT3_DOT_PRODUCT(v->surface_south, v->surface_east)); */
+}
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:45  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.16  1998/04/18 04:11:29  curt
+ * Moved fg_debug to it's own library, added zlib support.
+ *
+ * Revision 1.15  1998/02/20 00:16:24  curt
+ * Thursday's tweaks.
+ *
+ * Revision 1.14  1998/02/09 15:07:50  curt
+ * Minor tweaks.
+ *
+ * Revision 1.13  1998/02/07 15:29:45  curt
+ * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.12  1998/01/29 00:50:28  curt
+ * Added a view record field for absolute x, y, z position.
+ *
+ * Revision 1.11  1998/01/27 00:47:58  curt
+ * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
+ * system and commandline/config file processing code.
+ *
+ * Revision 1.10  1998/01/19 19:27:09  curt
+ * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
+ * This should simplify things tremendously.
+ *
+ * Revision 1.9  1998/01/13 00:23:09  curt
+ * Initial changes to support loading and management of scenery tiles.  Note,
+ * there's still a fair amount of work left to be done.
+ *
+ * Revision 1.8  1997/12/30 22:22:33  curt
+ * Further integration of event manager.
+ *
+ * Revision 1.7  1997/12/30 20:47:45  curt
+ * Integrated new event manager with subsystem initializations.
+ *
+ * Revision 1.6  1997/12/22 04:14:32  curt
+ * Aligned sky with sun so dusk/dawn effects can be correct relative to the sun.
+ *
+ * Revision 1.5  1997/12/18 04:07:02  curt
+ * Worked on properly translating and positioning the sky dome.
+ *
+ * Revision 1.4  1997/12/17 23:13:36  curt
+ * Began working on rendering a sky.
+ *
+ * Revision 1.3  1997/12/15 23:54:50  curt
+ * Add xgl wrappers for debugging.
+ * Generate terrain normals on the fly.
+ *
+ * Revision 1.2  1997/12/10 22:37:48  curt
+ * Prepended "fg" on the name of all global structures that didn't have it yet.
+ * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+ *
+ * Revision 1.1  1997/08/27 21:31:17  curt
+ * Initial revision.
+ *
+ */
diff --git a/Main/views.h b/Main/views.h
deleted file mode 100644 (file)
index 29f2da6..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/**************************************************************************
- * views.h -- data structures and routines for managing and view parameters.
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
-
-
-#ifndef _VIEWS_H
-#define _VIEWS_H
-
-
-#ifdef __cplusplus                                                          
-extern "C" {                            
-#endif                                   
-
-
-#include <Include/fg_types.h>
-#include <Flight/flight.h>
-#include <Math/mat3.h>
-#include <Time/fg_time.h>
-
-
-/* Define a structure containing view information */
-struct fgVIEW {
-    /* absolute view position */
-    struct fgCartesianPoint abs_view_pos;
-
-    /* view position translated to scenery.center */
-    struct fgCartesianPoint view_pos;
-
-    /* cartesion coordinates of current lon/lat if at sea level
-     * translated to scenery.center*/
-    struct fgCartesianPoint cur_zero_elev;
-
-    /* vector in cartesian coordinates from current position to the
-     * postion on the earth's surface the sun is directly over */
-    MAT3vec to_sun;
-    
-    /* surface direction to go to head towards sun */
-    MAT3vec surface_to_sun;
-
-    /* surface vector heading south */
-    MAT3vec surface_south;
-
-    /* surface vector heading east (used to unambiguously align sky with sun) */
-    MAT3vec surface_east;
-
-    /* local up vector (normal to the plane tangent to the earth's
-     * surface at the spot we are directly above */
-    MAT3vec local_up;
-
-    /* up vector for the view (usually point straight up through the
-     * top of the aircraft */
-    MAT3vec view_up;
-
-    /* the vector pointing straight out the nose of the aircraft */
-    MAT3vec view_forward;
-
-    /* the current offset from forward for viewing */
-    double view_offset;
-
-    /* the goal view offset for viewing (used for smooth view changes) */
-    double goal_view_offset;
-};
-
-
-extern struct fgVIEW current_view;
-
-
-/* Initialize a view structure */
-void fgViewInit(struct fgVIEW *v);
-
-/* Update the view parameters */
-void fgViewUpdate(fgFLIGHT *f, struct fgVIEW *v, struct fgLIGHT *l);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _VIEWS_H */
-
-
-/* $Log$
-/* Revision 1.11  1998/04/21 17:02:42  curt
-/* Prepairing for C++ integration.
-/*
- * Revision 1.10  1998/02/07 15:29:45  curt
- * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.9  1998/01/29 00:50:29  curt
- * Added a view record field for absolute x, y, z position.
- *
- * Revision 1.8  1998/01/27 00:47:58  curt
- * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
- * system and commandline/config file processing code.
- *
- * Revision 1.7  1998/01/22 02:59:38  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.6  1998/01/19 19:27:10  curt
- * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
- * This should simplify things tremendously.
- *
- * Revision 1.5  1997/12/22 04:14:32  curt
- * Aligned sky with sun so dusk/dawn effects can be correct relative to the sun.
- *
- * Revision 1.4  1997/12/17 23:13:36  curt
- * Began working on rendering a sky.
- *
- * Revision 1.3  1997/12/15 23:54:51  curt
- * Add xgl wrappers for debugging.
- * Generate terrain normals on the fly.
- *
- * Revision 1.2  1997/12/10 22:37:48  curt
- * Prepended "fg" on the name of all global structures that didn't have it yet.
- * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
- *
- * Revision 1.1  1997/08/27 21:31:18  curt
- * Initial revision.
- *
- */
diff --git a/Main/views.hxx b/Main/views.hxx
new file mode 100644 (file)
index 0000000..f40535b
--- /dev/null
@@ -0,0 +1,143 @@
+/**************************************************************************
+ * views.hxx -- data structures and routines for managing and view parameters.
+ *
+ * Written by Curtis Olson, started August 1997.
+ *
+ * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ * (Log is kept at end of this file)
+ **************************************************************************/
+
+
+#ifndef _VIEWS_H
+#define _VIEWS_H
+
+
+#ifndef __cplusplus                                                          
+# error This library requires C++
+#endif                                   
+
+
+#include <Include/fg_types.h>
+#include <Flight/flight.h>
+#include <Math/mat3.h>
+#include <Time/fg_time.h>
+#include <Time/light.hxx>
+
+
+/* Define a structure containing view information */
+struct fgVIEW {
+    /* absolute view position */
+    struct fgCartesianPoint abs_view_pos;
+
+    /* view position translated to scenery.center */
+    struct fgCartesianPoint view_pos;
+
+    /* cartesion coordinates of current lon/lat if at sea level
+     * translated to scenery.center*/
+    struct fgCartesianPoint cur_zero_elev;
+
+    /* vector in cartesian coordinates from current position to the
+     * postion on the earth's surface the sun is directly over */
+    MAT3vec to_sun;
+    
+    /* surface direction to go to head towards sun */
+    MAT3vec surface_to_sun;
+
+    /* surface vector heading south */
+    MAT3vec surface_south;
+
+    /* surface vector heading east (used to unambiguously align sky with sun) */
+    MAT3vec surface_east;
+
+    /* local up vector (normal to the plane tangent to the earth's
+     * surface at the spot we are directly above */
+    MAT3vec local_up;
+
+    /* up vector for the view (usually point straight up through the
+     * top of the aircraft */
+    MAT3vec view_up;
+
+    /* the vector pointing straight out the nose of the aircraft */
+    MAT3vec view_forward;
+
+    /* the current offset from forward for viewing */
+    double view_offset;
+
+    /* the goal view offset for viewing (used for smooth view changes) */
+    double goal_view_offset;
+};
+
+
+extern struct fgVIEW current_view;
+
+
+/* Initialize a view structure */
+void fgViewInit(struct fgVIEW *v);
+
+/* Update the view parameters */
+void fgViewUpdate(fgFLIGHT *f, struct fgVIEW *v, fgLIGHT *l);
+
+
+#endif /* _VIEWS_HXX */
+
+
+/* $Log$
+/* Revision 1.1  1998/04/22 13:25:46  curt
+/* C++ - ifing the code.
+/* Starting a bit of reorganization of lighting code.
+/*
+ * Revision 1.11  1998/04/21 17:02:42  curt
+ * Prepairing for C++ integration.
+ *
+ * Revision 1.10  1998/02/07 15:29:45  curt
+ * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
+ * <chotchkiss@namg.us.anritsu.com>
+ *
+ * Revision 1.9  1998/01/29 00:50:29  curt
+ * Added a view record field for absolute x, y, z position.
+ *
+ * Revision 1.8  1998/01/27 00:47:58  curt
+ * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
+ * system and commandline/config file processing code.
+ *
+ * Revision 1.7  1998/01/22 02:59:38  curt
+ * Changed #ifdef FILE_H to #ifdef _FILE_H
+ *
+ * Revision 1.6  1998/01/19 19:27:10  curt
+ * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
+ * This should simplify things tremendously.
+ *
+ * Revision 1.5  1997/12/22 04:14:32  curt
+ * Aligned sky with sun so dusk/dawn effects can be correct relative to the sun.
+ *
+ * Revision 1.4  1997/12/17 23:13:36  curt
+ * Began working on rendering a sky.
+ *
+ * Revision 1.3  1997/12/15 23:54:51  curt
+ * Add xgl wrappers for debugging.
+ * Generate terrain normals on the fly.
+ *
+ * Revision 1.2  1997/12/10 22:37:48  curt
+ * Prepended "fg" on the name of all global structures that didn't have it yet.
+ * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+ *
+ * Revision 1.1  1997/08/27 21:31:18  curt
+ * Initial revision.
+ *
+ */