From 189c638b346b05d6eb000b304bd166f4d208fe19 Mon Sep 17 00:00:00 2001 From: curt Date: Sun, 22 Jun 1997 21:44:40 +0000 Subject: [PATCH] Working on intergrating the VRML (subset) parser. --- Main/GLmain.c | 46 ++++++++++++++++++++++--------------- Scenery/mesh.c | 56 +++++++++++++++++++++++++++++++++++++++++----- Scenery/mesh.h | 16 +++++++++++-- Simulator/Makefile | 5 ++++- Simulator/README | 20 ++++++++++++----- 5 files changed, 112 insertions(+), 31 deletions(-) diff --git a/Main/GLmain.c b/Main/GLmain.c index f0e8008e6..23c5245a6 100644 --- a/Main/GLmain.c +++ b/Main/GLmain.c @@ -23,6 +23,7 @@ * (Log is kept at end of this file) **************************************************************************/ + #include #include #include @@ -65,8 +66,9 @@ extern struct mesh *mesh_ptr; /* Function prototypes */ GLint fgSceneryCompile(); static void fgSceneryDraw(); -/* pointer to terrain mesh structure */ -static GLint terrain, runway; + +/* pointer to scenery structure */ +static GLint scenery, runway; /* Another hack */ double fogDensity = 2000.0; @@ -202,7 +204,7 @@ static void fgUpdateVisuals( void ) { glMatrixMode(GL_MODELVIEW); /* glLoadIdentity(); */ - /* draw terrain mesh */ + /* draw scenery */ fgSceneryDraw(); #ifdef GLUT @@ -271,19 +273,19 @@ void fgInitTimeDepCalcs() { **************************************************************************/ static void fgSceneryInit() { - /* make terrain mesh */ - terrain = fgSceneryCompile(); + /* make scenery */ + scenery = fgSceneryCompile(); runway = fgRunwayHack(0.69, 53.07); } -/* create the terrain mesh */ +/* create the scenery */ GLint fgSceneryCompile() { - GLint terrain; + GLint scenery; - terrain = mesh2GL(mesh_ptr); + scenery = mesh2GL(mesh_ptr); - return(terrain); + return(scenery); } @@ -332,13 +334,13 @@ GLint fgRunwayHack(double width, double length) { } -/* draw the terrain mesh */ +/* draw the scenery */ static void fgSceneryDraw() { static float z = 32.35; glPushMatrix(); - glCallList(terrain); + glCallList(scenery); printf("*** Drawing runway at %.2f\n", z); @@ -405,9 +407,6 @@ int main( int argc, char *argv[] ) { f = ¤t_aircraft.flight; - /* parse the scenery file */ - parse_scenery(argv[1]); - #ifdef GLUT /* initialize GLUT */ glutInit(&argc, argv); @@ -419,7 +418,7 @@ int main( int argc, char *argv[] ) { glutInitWindowSize(640, 480); /* Initialize the main window */ - glutCreateWindow("Terrain Demo"); + glutCreateWindow("Flight Gear"); #elif MESA_TK /* Define initial window size */ tkInitPosition(0, 0, 640, 480); @@ -428,7 +427,7 @@ int main( int argc, char *argv[] ) { tkInitDisplayMode( TK_RGB | TK_DEPTH | TK_DOUBLE | TK_DIRECT ); /* Initialize the main window */ - if (tkInitWindow("Terrain Demo") == GL_FALSE) { + if (tkInitWindow("Flight Gear") == GL_FALSE) { tkQuit(); } #endif @@ -494,6 +493,14 @@ int main( int argc, char *argv[] ) { } /* build all objects */ + + /* parse the scenery file, and build the OpenGL call list */ + /* this function will eventually move to the scenery management system */ + if ( strlen(argv[1]) ) { + parse_scenery(argv[1]); + } + + /* initialize the scenery */ fgSceneryInit(); #ifdef GLUT @@ -537,9 +544,12 @@ int main( int argc, char *argv[] ) { /* $Log$ -/* Revision 1.20 1997/06/21 17:12:53 curt -/* Capitalized subdirectory names. +/* Revision 1.21 1997/06/22 21:44:41 curt +/* Working on intergrating the VRML (subset) parser. /* + * Revision 1.20 1997/06/21 17:12:53 curt + * Capitalized subdirectory names. + * * Revision 1.19 1997/06/18 04:10:31 curt * A couple more runway tweaks ... * diff --git a/Scenery/mesh.c b/Scenery/mesh.c index 622ce21df..f112bfe70 100644 --- a/Scenery/mesh.c +++ b/Scenery/mesh.c @@ -33,6 +33,23 @@ #include "common.h" +/* initialize the non-array mesh values */ +void mesh_init(struct mesh *m) { + m->originx = 0.0; + m->originy = 0.0; + + m->rows = 0; + m->cols = 0; + + m->row_step = 0.0; + m->col_step = 0.0; + + m->cur_row = 0; + m->cur_col = 0; + m->do_data = 0; +} + + /* return a pointer to a new mesh structure (no data array allocated yet) */ struct mesh *(new_mesh)() { struct mesh *mesh_ptr; @@ -76,13 +93,32 @@ void mesh_set_option_name(struct mesh *m, char *name) { strncpy(m->option_name, name, MAX_IDENT_LEN - 1); m->option_name[MAX_IDENT_LEN - 1] = '\0'; } + if ( strcmp(m->option_name, "do_data") == 0 ) { + m->do_data = 1; + } else { + m->do_data = 0; + } } + /* set an option value in the mesh data structure */ void mesh_set_option_value(struct mesh *m, char *value) { - printf("Setting %s to %s\n", m->option_name, value); - - if ( strcmp(m->option_name, "origin_lon") == 0 ) { + /* printf("Setting %s to %s\n", m->option_name, value); */ + + if ( m->do_data ) { + /* mesh data is a pseudo 2d array */ + /* printf("Setting mesh_data[%d][%d] to %s\n", m->cur_row, m->cur_col, + value); */ + m->mesh_data[m->cur_row * m->rows + m->cur_col] = atof(value); + m->cur_col++; + if ( m->cur_col >= m->cols ) { + m->cur_col = 0; + m->cur_row++; + if ( m->cur_row > m->rows ) { + m->do_data = 0; + } + } + } else if ( strcmp(m->option_name, "origin_lon") == 0 ) { m->originx = atof(value); } else if ( strcmp(m->option_name, "origin_lat") == 0 ) { m->originy = atof(value); @@ -101,10 +137,20 @@ void mesh_set_option_value(struct mesh *m, char *value) { } +/* do whatever needs to be done with the mesh now that it's been + loaded, such as generating the OpenGL call list. */ +void mesh_do_it(struct mesh *m) { + mesh2GL(m); +} + + /* $Log$ -/* Revision 1.4 1997/05/30 19:30:17 curt -/* The LaRCsim flight model is starting to look like it is working. +/* Revision 1.5 1997/06/22 21:44:41 curt +/* Working on intergrating the VRML (subset) parser. /* + * Revision 1.4 1997/05/30 19:30:17 curt + * The LaRCsim flight model is starting to look like it is working. + * * Revision 1.3 1997/05/23 15:40:41 curt * Added GNU copyright headers. * diff --git a/Scenery/mesh.h b/Scenery/mesh.h index 18b3be669..7d6217269 100644 --- a/Scenery/mesh.h +++ b/Scenery/mesh.h @@ -43,6 +43,7 @@ struct mesh { /* a temporary values for the parser to use */ char option_name[32]; + int do_data; int cur_row, cur_col; }; @@ -50,6 +51,9 @@ struct mesh { /* return a pointer to a new mesh structure (no data array allocated yet) */ struct mesh *(new_mesh)(); +/* initialize the non-array mesh values */ +void mesh_init(struct mesh *m); + /* return a pointer to a dynamically allocated array */ float *(new_mesh_data)(int nrows, int ncols); @@ -59,13 +63,21 @@ void mesh_set_option_name(struct mesh *m, char *name); /* set an option value in the mesh data structure */ void mesh_set_option_value(struct mesh *m, char *value); +/* do whatever needs to be done with the mesh now that it's been + loaded, such as generating the OpenGL call list. */ +void mesh_do_it(struct mesh *m); + + #endif MESH_H /* $Log$ -/* Revision 1.2 1997/05/23 15:40:42 curt -/* Added GNU copyright headers. +/* Revision 1.3 1997/06/22 21:44:41 curt +/* Working on intergrating the VRML (subset) parser. /* + * Revision 1.2 1997/05/23 15:40:42 curt + * Added GNU copyright headers. + * * Revision 1.1 1997/05/16 16:07:05 curt * Initial revision. * diff --git a/Simulator/Makefile b/Simulator/Makefile index d6f1cd6fe..209a8c960 100644 --- a/Simulator/Makefile +++ b/Simulator/Makefile @@ -27,7 +27,7 @@ CC = gcc -SUBSUBDIRS = Flight/LaRCsim Flight/Slew Scenery/ParseScn +SUBSUBDIRS = Flight/LaRCsim Flight/Slew Scenery/ParseScn Scenery/ParseVrml SUBDIRS = Aircraft Controls Flight mat3 Scenery Timer MAIN = OpenGL @@ -59,6 +59,9 @@ tar: clean #--------------------------------------------------------------------------- # $Log$ +# Revision 1.9 1997/06/22 21:44:40 curt +# Working on intergrating the VRML (subset) parser. +# # Revision 1.8 1997/06/21 17:52:22 curt # Continue directory shuffling ... everything should be compilable/runnable # again. diff --git a/Simulator/README b/Simulator/README index 597253556..0a338c24a 100644 --- a/Simulator/README +++ b/Simulator/README @@ -5,18 +5,18 @@ OpenGL/ "main" and OpenGL dependent mouse/keyboard/graphics code. -aircraft/ +Aircraft/ --------- Structure and code to tie together all the pieces of an aircraft such as flight model, engine model, panel, controls, etc. -controls/ +Controls/ --------- Provide a standardized interface to all aircraft controls. -flight/ +Flight/ ------- Strucures and code to implement various flight models. Provides a standardized interface to all interesting flight model variabls. @@ -27,11 +27,21 @@ mat3/ Contains miscellaneous matrix/vector routines. -scenery/ +Scenery/ -------- Scenery parsing/generating code. -timer/ +Sound/ +------ +Sound management code + + +Timer/ ------ Code to handle time and timing of events. + + +Weather/ +-------- +Weather management and modeling code. -- 2.39.2