From: curt Date: Wed, 20 May 1998 20:53:53 +0000 (+0000) Subject: Moved global ref point and radius (bounding sphere info, and offset) to X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=70fae724a771aef46ae432027553cbf5150fd91d;p=flightgear.git Moved global ref point and radius (bounding sphere info, and offset) to data file rather than calculating it on the fly. Fixed polygon winding problem in scenery generation stage rather than compensating for it on the fly. Made a fgTILECACHE class. --- diff --git a/Scenery/obj.cxx b/Scenery/obj.cxx index f7e635f2d..d11cdd305 100644 --- a/Scenery/obj.cxx +++ b/Scenery/obj.cxx @@ -103,16 +103,14 @@ static double calc_dist(double *p) { /* Load a .obj file and generate the GL call list */ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { fgOPTIONS *o; - fgCartesianPoint3d cp; fgPolarPoint3d pp; - char fgpath[256], line[256], winding_str[256]; - double approx_normal[3], normal[3], scale, dist; + char fgpath[256], line[256], material[256]; + double approx_normal[3], normal[3], scale; // double x, y, z, xmax, xmin, ymax, ymin, zmax, zmin; // GLfloat sgenparams[] = { 1.0, 0.0, 0.0, 0.0 }; GLint tile; fgFile f; int first, ncount, vncount, n1, n2, n3, n4; - int winding; int last1, last2, odd; o = ¤t_options; @@ -140,17 +138,6 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { tile = xglGenLists(1); xglNewList(tile, GL_COMPILE); - /* - xglTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - xglTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - xglTexGenfv(GL_S, GL_OBJECT_PLANE, sgenparams); - xglTexGenfv(GL_T, GL_OBJECT_PLANE, sgenparams); - // xglTexGenfv(GL_S, GL_SPHERE_MAP, 0); - // xglTexGenfv(GL_T, GL_SPHERE_MAP, 0); - xglEnable(GL_TEXTURE_GEN_S); - xglEnable(GL_TEXTURE_GEN_T); - */ - first = 1; ncount = 1; vncount = 1; @@ -161,9 +148,10 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { /* comment -- ignore */ } else if ( line[0] == '\n' ) { /* empty line -- ignore */ - } else if ( strncmp(line, "ref ", 4) == 0 ) { + } else if ( strncmp(line, "gb ", 3) == 0 ) { /* reference point (center offset) */ - sscanf(line, "ref %lf %lf %lf\n", &ref->x, &ref->y, &ref->z); + sscanf(line, "gb %lf %lf %lf %lf\n", &ref->x, &ref->y, &ref->z, + radius); } else if ( strncmp(line, "v ", 2) == 0 ) { /* node (vertex) */ if ( ncount < MAXNODES ) { @@ -173,13 +161,13 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { &nodes[ncount][2]); // temporary code to calculate bounding radius - dist = calc_dist(nodes[ncount]); + // dist = calc_dist(nodes[ncount]); // printf("node = %.2f %.2f %.2f dist = %.2f\n", // nodes[ncount][0], nodes[ncount][1], nodes[ncount][2], // dist); - if ( (dist > *radius) && (dist < 100000.0) ) { - *radius = dist; - } + // if ( (dist > *radius) && (dist < 100000.0) ) { + // *radius = dist; + // } ncount++; } else { @@ -198,21 +186,9 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { fgPrintf( FG_TERRAIN, FG_EXIT, "Read too many vertex normals ... dying :-(\n"); } - } else if ( strncmp(line, "winding ", 8) == 0 ) { - sscanf(line+8, "%s", winding_str); - fgPrintf( FG_TERRAIN, FG_DEBUG, " WINDING = %s\n", winding_str); - - /* can't call xglFrontFace() between xglBegin() & xglEnd() */ - xglEnd(); - first = 1; - - if ( strcmp(winding_str, "cw") == 0 ) { - xglFrontFace( GL_CW ); - winding = 0; - } else { - glFrontFace ( GL_CCW ); - winding = 1; - } + } else if ( strncmp(line, "usemtl ", 7) == 0 ) { + /* material property specification */ + sscanf(line, "usemtl %s\n", material); } else if ( line[0] == 't' ) { /* start a new triangle strip */ @@ -233,13 +209,8 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { xglBegin(GL_TRIANGLE_STRIP); - if ( winding ) { - odd = 1; - scale = 1.0; - } else { - odd = 0; - scale = 1.0; - } + odd = 1; + scale = 1.0; if ( o->shading ) { // Shading model is "GL_SMOOTH" so use precalculated @@ -423,11 +394,6 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { xglEnd(); */ - // xglDisable(GL_TEXTURE_GEN_S); - // xglDisable(GL_TEXTURE_GEN_T); - - xglFrontFace ( GL_CCW ); - xglEndList(); fgclose(f); @@ -444,11 +410,18 @@ GLint fgObjLoad(char *path, fgCartesianPoint3d *ref, double *radius) { /* $Log$ -/* Revision 1.4 1998/05/16 13:09:57 curt -/* Beginning to add support for view frustum culling. -/* Added some temporary code to calculate bouding radius, until the -/* scenery generation tools and scenery can be updated. +/* Revision 1.5 1998/05/20 20:53:53 curt +/* Moved global ref point and radius (bounding sphere info, and offset) to +/* data file rather than calculating it on the fly. +/* Fixed polygon winding problem in scenery generation stage rather than +/* compensating for it on the fly. +/* Made a fgTILECACHE class. /* + * Revision 1.4 1998/05/16 13:09:57 curt + * Beginning to add support for view frustum culling. + * Added some temporary code to calculate bouding radius, until the + * scenery generation tools and scenery can be updated. + * * Revision 1.3 1998/05/03 00:48:01 curt * Updated texture coordinate fmod() parameter. * diff --git a/Scenery/tilecache.cxx b/Scenery/tilecache.cxx index 61c5b6194..92155f072 100644 --- a/Scenery/tilecache.cxx +++ b/Scenery/tilecache.cxx @@ -1,27 +1,25 @@ -/************************************************************************** - * tilecache.cxx -- routines to handle scenery tile caching - * - * Written by Curtis Olson, started January 1998. - * - * 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) - **************************************************************************/ +// tilecache.cxx -- routines to handle scenery tile caching +// +// Written by Curtis Olson, started January 1998. +// +// 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) #ifdef HAVE_CONFIG_H @@ -44,12 +42,17 @@ #include "tilecache.hxx" -/* tile cache */ -struct fgTILE tile_cache[FG_TILE_CACHE_SIZE]; +// the tile cache +fgTILECACHE global_tile_cache; -/* Initialize the tile cache subsystem */ -void fgTileCacheInit( void ) { +// Constructor +fgTILECACHE::fgTILECACHE( void ) { +} + + +// Initialize the tile cache subsystem +void fgTILECACHE::Init( void ) { int i; fgPrintf(FG_TERRAIN, FG_INFO, "Initializing the tile cache.\n"); @@ -60,8 +63,8 @@ void fgTileCacheInit( void ) { } -/* Search for the specified "bucket" in the cache */ -int fgTileCacheExists( struct fgBUCKET *p ) { +// Search for the specified "bucket" in the cache +int fgTILECACHE::Exists( struct fgBUCKET *p ) { int i; for ( i = 0; i < FG_TILE_CACHE_SIZE; i++ ) { @@ -82,24 +85,24 @@ int fgTileCacheExists( struct fgBUCKET *p ) { } -/* Fill in a tile cache entry with real data for the specified bucket */ -void fgTileCacheEntryFillIn( int index, struct fgBUCKET *p ) { +// Fill in a tile cache entry with real data for the specified bucket +void fgTILECACHE::EntryFillIn( int index, struct fgBUCKET *p ) { fgOPTIONS *o; char base_path[256]; char file_name[256]; o = ¤t_options; - /* Mark this cache entry as used */ + // Mark this cache entry as used tile_cache[index].used = 1; - /* Update the bucket */ + // Update the bucket tile_cache[index].tile_bucket.lon = p->lon; tile_cache[index].tile_bucket.lat = p->lat; tile_cache[index].tile_bucket.x = p->x; tile_cache[index].tile_bucket.y = p->y; - /* Load the appropriate area and get the display list pointer */ + // Load the appropriate area and get the display list pointer fgBucketGenBasePath(p, base_path); sprintf(file_name, "%s/Scenery/%s/%ld", o->fg_root, base_path, fgBucketGenIndex(p)); @@ -109,12 +112,12 @@ void fgTileCacheEntryFillIn( int index, struct fgBUCKET *p ) { } -/* Free a tile cache entry */ -void fgTileCacheEntryFree( int index ) { - /* Mark this cache entry as un-used */ +// Free a tile cache entry +void fgTILECACHE::EntryFree( int index ) { + // Mark this cache entry as un-used tile_cache[index].used = 0; - /* Update the bucket */ + // Update the bucket fgPrintf( FG_TERRAIN, FG_DEBUG, "FREEING TILE = (%d %d %d %d)\n", tile_cache[index].tile_bucket.lon, @@ -122,19 +125,19 @@ void fgTileCacheEntryFree( int index ) { tile_cache[index].tile_bucket.x, tile_cache[index].tile_bucket.y ); - /* Load the appropriate area and get the display list pointer */ + // Load the appropriate area and get the display list pointer if ( tile_cache[index].display_list >= 0 ) { xglDeleteLists( tile_cache[index].display_list, 1 ); } } -/* Return info for a tile cache entry */ -void fgTileCacheEntryInfo( int index, GLint *display_list, +// Return info for a tile cache entry +void fgTILECACHE::EntryInfo( int index, GLint *display_list, fgCartesianPoint3d *local_ref, double *radius ) { *display_list = tile_cache[index].display_list; - /* fgPrintf(FG_TERRAIN, FG_DEBUG, "Display list = %d\n", *display_list); */ + // fgPrintf(FG_TERRAIN, FG_DEBUG, "Display list = %d\n", *display_list); local_ref->x = tile_cache[index].local_ref.x; local_ref->y = tile_cache[index].local_ref.y; @@ -144,8 +147,8 @@ void fgTileCacheEntryInfo( int index, GLint *display_list, } -/* Return index of next available slot in tile cache */ -int fgTileCacheNextAvail( void ) { +// Return index of next available slot in tile cache +int fgTILECACHE::NextAvail( void ) { fgVIEW *v; int i; float dx, dy, dz, max, med, min, tmp; @@ -161,7 +164,7 @@ int fgTileCacheNextAvail( void ) { if ( tile_cache[i].used == 0 ) { return(i); } else { - /* calculate approximate distance from view point */ + // calculate approximate distance from view point fgPrintf( FG_TERRAIN, FG_DEBUG, "DIST Abs view pos = %.4f, %.4f, %.4f\n", v->abs_view_pos.x, v->abs_view_pos.y, v->abs_view_pos.z ); @@ -192,80 +195,91 @@ int fgTileCacheNextAvail( void ) { } } - /* If we made it this far, then there were no open cache entries. - * We will instead free the furthest cache entry and return it's - * index. */ + // If we made it this far, then there were no open cache entries. + // We will instead free the furthest cache entry and return it's + // index. - fgTileCacheEntryFree( max_index ); + EntryFree( max_index ); return( max_index ); } -/* $Log$ -/* Revision 1.8 1998/05/16 13:09:57 curt -/* Beginning to add support for view frustum culling. -/* Added some temporary code to calculate bouding radius, until the -/* scenery generation tools and scenery can be updated. -/* - * Revision 1.7 1998/05/13 18:26:41 curt - * Root path info moved to fgOPTIONS. - * - * Revision 1.6 1998/05/02 01:52:17 curt - * Playing around with texture coordinates. - * - * Revision 1.5 1998/04/30 12:35:31 curt - * Added a command line rendering option specify smooth/flat shading. - * - * Revision 1.4 1998/04/28 01:21:43 curt - * Tweaked texture parameter calculations to keep the number smaller. This - * avoids the "swimming" problem. - * Type-ified fgTIME and fgVIEW. - * - * Revision 1.3 1998/04/25 22:06:32 curt - * Edited cvs log messages in source files ... bad bad bad! - * - * Revision 1.2 1998/04/24 00:51:08 curt - * Wrapped "#include " in "#ifdef HAVE_CONFIG_H" - * Tweaked the scenery file extentions to be "file.obj" (uncompressed) - * or "file.obz" (compressed.) - * - * Revision 1.1 1998/04/22 13:22:46 curt - * C++ - ifing the code a bit. - * - * Revision 1.11 1998/04/18 04:14:07 curt - * Moved fg_debug.c to it's own library. - * - * Revision 1.10 1998/04/14 02:23:17 curt - * Code reorganizations. Added a Lib/ directory for more general libraries. - * - * Revision 1.9 1998/04/08 23:30:07 curt - * Adopted Gnu automake/autoconf system. - * - * Revision 1.8 1998/04/03 22:11:38 curt - * Converting to Gnu autoconf system. - * - * Revision 1.7 1998/02/01 03:39:55 curt - * Minor tweaks. - * - * Revision 1.6 1998/01/31 00:43:26 curt - * Added MetroWorks patches from Carmen Volpe. - * - * Revision 1.5 1998/01/29 00:51:39 curt - * First pass at tile cache, dynamic tile loading and tile unloading now works. - * - * Revision 1.4 1998/01/27 03:26:43 curt - * Playing with new fgPrintf command. - * - * Revision 1.3 1998/01/27 00:48:03 curt - * Incorporated Paul Bleisch's new debug message - * system and commandline/config file processing code. - * - * Revision 1.2 1998/01/26 15:55:24 curt - * Progressing on building dynamic scenery system. - * - * Revision 1.1 1998/01/24 00:03:29 curt - * Initial revision. - * - */ +// Destructor +fgTILECACHE::~fgTILECACHE( void ) { +} + + +// $Log$ +// Revision 1.9 1998/05/20 20:53:54 curt +// Moved global ref point and radius (bounding sphere info, and offset) to +// data file rather than calculating it on the fly. +// Fixed polygon winding problem in scenery generation stage rather than +// compensating for it on the fly. +// Made a fgTILECACHE class. +// +// Revision 1.8 1998/05/16 13:09:57 curt +// Beginning to add support for view frustum culling. +// Added some temporary code to calculate bouding radius, until the +// scenery generation tools and scenery can be updated. +// +// Revision 1.7 1998/05/13 18:26:41 curt +// Root path info moved to fgOPTIONS. +// +// Revision 1.6 1998/05/02 01:52:17 curt +// Playing around with texture coordinates. +// +// Revision 1.5 1998/04/30 12:35:31 curt +// Added a command line rendering option specify smooth/flat shading. +// +// Revision 1.4 1998/04/28 01:21:43 curt +// Tweaked texture parameter calculations to keep the number smaller. This +// avoids the "swimming" problem. +// Type-ified fgTIME and fgVIEW. +// +// Revision 1.3 1998/04/25 22:06:32 curt +// Edited cvs log messages in source files ... bad bad bad! +// +// Revision 1.2 1998/04/24 00:51:08 curt +// Wrapped "#include " in "#ifdef HAVE_CONFIG_H" +// Tweaked the scenery file extentions to be "file.obj" (uncompressed) +// or "file.obz" (compressed.) +// +// Revision 1.1 1998/04/22 13:22:46 curt +// C++ - ifing the code a bit. +// +// Revision 1.11 1998/04/18 04:14:07 curt +// Moved fg_debug.c to it's own library. +// +// Revision 1.10 1998/04/14 02:23:17 curt +// Code reorganizations. Added a Lib/ directory for more general libraries. +// +// Revision 1.9 1998/04/08 23:30:07 curt +// Adopted Gnu automake/autoconf system. +// +// Revision 1.8 1998/04/03 22:11:38 curt +// Converting to Gnu autoconf system. +// +// Revision 1.7 1998/02/01 03:39:55 curt +// Minor tweaks. +// +// Revision 1.6 1998/01/31 00:43:26 curt +// Added MetroWorks patches from Carmen Volpe. +// +// Revision 1.5 1998/01/29 00:51:39 curt +// First pass at tile cache, dynamic tile loading and tile unloading now works. +// +// Revision 1.4 1998/01/27 03:26:43 curt +// Playing with new fgPrintf command. +// +// Revision 1.3 1998/01/27 00:48:03 curt +// Incorporated Paul Bleisch's new debug message +// system and commandline/config file processing code. +// +// Revision 1.2 1998/01/26 15:55:24 curt +// Progressing on building dynamic scenery system. +// +// Revision 1.1 1998/01/24 00:03:29 curt +// Initial revision. + diff --git a/Scenery/tilecache.hxx b/Scenery/tilecache.hxx index 9d2080880..ecbdd1ca7 100644 --- a/Scenery/tilecache.hxx +++ b/Scenery/tilecache.hxx @@ -1,27 +1,25 @@ -/************************************************************************** - * tilecache.hxx -- routines to handle scenery tile caching - * - * Written by Curtis Olson, started January 1998. - * - * 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) - **************************************************************************/ +// tilecache.hxx -- routines to handle scenery tile caching +// +// Written by Curtis Olson, started January 1998. +// +// 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 _TILECACHE_HXX @@ -47,107 +45,129 @@ #include #include -/* For best results ... i.e. to avoid tile load problems and blank areas - * - * FG_TILE_CACHE_SIZE >= (o->tile_diameter + 1) ** 2 */ +// For best results ... i.e. to avoid tile load problems and blank areas +// +// FG_TILE_CACHE_SIZE >= (o->tile_diameter + 1) ** 2 #define FG_TILE_CACHE_SIZE 121 -/* Tile cache record */ -struct fgTILE { +// Tile cache record +typedef struct { struct fgBUCKET tile_bucket; GLint display_list; fgCartesianPoint3d local_ref; double bounding_radius; int used; int priority; +} fgTILE; + + +// A class to store and manage a pile of tiles +class fgTILECACHE { + // cache storage space + fgTILE tile_cache[FG_TILE_CACHE_SIZE]; + +public: + + // Constructor + fgTILECACHE( void ); + + // Initialize the tile cache subsystem + void Init( void ); + + // Search for the specified "bucket" in the cache + int Exists( struct fgBUCKET *p ); + + // Return index of next available slot in tile cache + int NextAvail( void ); + + // Free a tile cache entry + void fgTILECACHE::EntryFree( int index ); + + // Fill in a tile cache entry with real data for the specified bucket + void EntryFillIn( int index, struct fgBUCKET *p ); + + // Return info for a tile cache entry + void EntryInfo( int index, GLint *display_list, + fgCartesianPoint3d *local_ref, double *radius ); + + // Destructor + ~fgTILECACHE( void ); }; -/* tile cache */ -extern struct fgTILE tile_cache[FG_TILE_CACHE_SIZE]; - - -/* Initialize the tile cache subsystem */ -void fgTileCacheInit( void ); - -/* Search for the specified "bucket" in the cache */ -int fgTileCacheExists( struct fgBUCKET *p ); - -/* Return index of next available slot in tile cache */ -int fgTileCacheNextAvail( void ); - -/* Fill in a tile cache entry with real data for the specified bucket */ -void fgTileCacheEntryFillIn( int index, struct fgBUCKET *p ); - -/* Return info for a tile cache entry */ -void fgTileCacheEntryInfo( int index, GLint *display_list, - fgCartesianPoint3d *local_ref, - double *radius ); - - -#endif /* _TILECACHE_HXX */ - - -/* $Log$ -/* Revision 1.7 1998/05/16 13:09:57 curt -/* Beginning to add support for view frustum culling. -/* Added some temporary code to calculate bouding radius, until the -/* scenery generation tools and scenery can be updated. -/* - * Revision 1.6 1998/05/07 23:15:20 curt - * Fixed a glTexImage2D() usage bug where width and height were mis-swapped. - * Added support for --tile-radius=n option. - * - * Revision 1.5 1998/05/02 01:52:17 curt - * Playing around with texture coordinates. - * - * Revision 1.4 1998/04/30 12:35:31 curt - * Added a command line rendering option specify smooth/flat shading. - * - * Revision 1.3 1998/04/25 22:06:32 curt - * Edited cvs log messages in source files ... bad bad bad! - * - * Revision 1.2 1998/04/24 00:51:08 curt - * Wrapped "#include " in "#ifdef HAVE_CONFIG_H" - * Tweaked the scenery file extentions to be "file.obj" (uncompressed) - * or "file.obz" (compressed.) - * - * Revision 1.1 1998/04/22 13:22:47 curt - * C++ - ifing the code a bit. - * - * Revision 1.10 1998/04/21 17:02:45 curt - * Prepairing for C++ integration. - * - * Revision 1.9 1998/04/14 02:23:17 curt - * Code reorganizations. Added a Lib/ directory for more general libraries. - * - * Revision 1.8 1998/04/08 23:30:08 curt - * Adopted Gnu automake/autoconf system. - * - * Revision 1.7 1998/04/03 22:11:38 curt - * Converting to Gnu autoconf system. - * - * Revision 1.6 1998/02/18 15:07:10 curt - * Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated - * drivers will work.) - * - * Revision 1.5 1998/02/16 13:39:45 curt - * Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole - * tiles to occasionally be missing. - * - * Revision 1.4 1998/01/31 00:43:27 curt - * Added MetroWorks patches from Carmen Volpe. - * - * Revision 1.3 1998/01/29 00:51:40 curt - * First pass at tile cache, dynamic tile loading and tile unloading now works. - * - * Revision 1.2 1998/01/27 00:48:04 curt - * Incorporated Paul Bleisch's new debug message - * system and commandline/config file processing code. - * - * Revision 1.1 1998/01/24 00:03:29 curt - * Initial revision. - * - */ + +// the tile cache +extern fgTILECACHE global_tile_cache; + + +#endif // _TILECACHE_HXX + + +// $Log$ +// Revision 1.8 1998/05/20 20:53:54 curt +// Moved global ref point and radius (bounding sphere info, and offset) to +// data file rather than calculating it on the fly. +// Fixed polygon winding problem in scenery generation stage rather than +// compensating for it on the fly. +// Made a fgTILECACHE class. +// +// Revision 1.7 1998/05/16 13:09:57 curt +// Beginning to add support for view frustum culling. +// Added some temporary code to calculate bouding radius, until the +// scenery generation tools and scenery can be updated. +// +// Revision 1.6 1998/05/07 23:15:20 curt +// Fixed a glTexImage2D() usage bug where width and height were mis-swapped. +// Added support for --tile-radius=n option. +// +// Revision 1.5 1998/05/02 01:52:17 curt +// Playing around with texture coordinates. +// +// Revision 1.4 1998/04/30 12:35:31 curt +// Added a command line rendering option specify smooth/flat shading. +// +// Revision 1.3 1998/04/25 22:06:32 curt +// Edited cvs log messages in source files ... bad bad bad! +// +// Revision 1.2 1998/04/24 00:51:08 curt +// Wrapped "#include " in "#ifdef HAVE_CONFIG_H" +// Tweaked the scenery file extentions to be "file.obj" (uncompressed) +// or "file.obz" (compressed.) +// +// Revision 1.1 1998/04/22 13:22:47 curt +// C++ - ifing the code a bit. +// +// Revision 1.10 1998/04/21 17:02:45 curt +// Prepairing for C++ integration. +// +// Revision 1.9 1998/04/14 02:23:17 curt +// Code reorganizations. Added a Lib/ directory for more general libraries. +// +// Revision 1.8 1998/04/08 23:30:08 curt +// Adopted Gnu automake/autoconf system. +// +// Revision 1.7 1998/04/03 22:11:38 curt +// Converting to Gnu autoconf system. +// +// Revision 1.6 1998/02/18 15:07:10 curt +// Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated +// drivers will work.) +// +// Revision 1.5 1998/02/16 13:39:45 curt +// Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole +// tiles to occasionally be missing. +// +// Revision 1.4 1998/01/31 00:43:27 curt +// Added MetroWorks patches from Carmen Volpe. +// +// Revision 1.3 1998/01/29 00:51:40 curt +// First pass at tile cache, dynamic tile loading and tile unloading now works. +// +// Revision 1.2 1998/01/27 00:48:04 curt +// Incorporated Paul Bleisch's new debug message +// system and commandline/config file processing code. +// +// Revision 1.1 1998/01/24 00:03:29 curt +// Initial revision. diff --git a/Scenery/tilemgr.cxx b/Scenery/tilemgr.cxx index c277ac8af..9314a0959 100644 --- a/Scenery/tilemgr.cxx +++ b/Scenery/tilemgr.cxx @@ -1,27 +1,25 @@ -/* - * tilemgr.cxx -- routines to handle dynamic management of scenery tiles - * - * Written by Curtis Olson, started January 1998. - * - * 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) - **************************************************************************/ +// tilemgr.cxx -- routines to handle dynamic management of scenery tiles +// +// Written by Curtis Olson, started January 1998. +// +// 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) #ifdef HAVE_CONFIG_H @@ -49,45 +47,51 @@ #include -#define FG_LOCAL_X_Y 81 /* max(o->tile_diameter) ** 2 */ +#define FG_LOCAL_X_Y 81 // max(o->tile_diameter) ** 2 -/* closest (potentially viewable) tiles, centered on current tile. - * This is an array of pointers to cache indexes. */ +// closest (potentially viewable) tiles, centered on current tile. +// This is an array of pointers to cache indexes. int tiles[FG_LOCAL_X_Y]; -/* Initialize the Tile Manager subsystem */ +// Initialize the Tile Manager subsystem int fgTileMgrInit( void ) { fgPrintf( FG_TERRAIN, FG_INFO, "Initializing Tile Manager subsystem.\n"); return 1; } -/* load a tile */ +// load a tile void fgTileMgrLoadTile( struct fgBUCKET *p, int *index) { + fgTILECACHE *c; + + c = &global_tile_cache; + fgPrintf( FG_TERRAIN, FG_DEBUG, "Updating for bucket %d %d %d %d\n", p->lon, p->lat, p->x, p->y); - /* if not in cache, load tile into the next available slot */ - if ( (*index = fgTileCacheExists(p)) < 0 ) { - *index = fgTileCacheNextAvail(); - fgTileCacheEntryFillIn(*index, p); + // if not in cache, load tile into the next available slot + if ( (*index = c->Exists(p)) < 0 ) { + *index = c->NextAvail(); + c->EntryFillIn(*index, p); } fgPrintf( FG_TERRAIN, FG_DEBUG, "Selected cache index of %d\n", *index); } -/* given the current lon/lat, fill in the array of local chunks. If - * the chunk isn't already in the cache, then read it from disk. */ +// given the current lon/lat, fill in the array of local chunks. If +// the chunk isn't already in the cache, then read it from disk. int fgTileMgrUpdate( void ) { + fgTILECACHE *c; fgFLIGHT *f; fgOPTIONS *o; struct fgBUCKET p1, p2; static struct fgBUCKET p_last = {-1000, 0, 0, 0}; int i, j, dw, dh; + c = &global_tile_cache; f = current_aircraft.flight; o = ¤t_options; @@ -97,11 +101,11 @@ int fgTileMgrUpdate( void ) { if ( (p1.lon == p_last.lon) && (p1.lat == p_last.lat) && (p1.x == p_last.x) && (p1.y == p_last.y) ) { - /* same bucket as last time */ + // same bucket as last time fgPrintf( FG_TERRAIN, FG_DEBUG, "Same bucket as last time\n"); } else if ( p_last.lon == -1000 ) { - /* First time through, initialize the system and load all - * relavant tiles */ + // First time through, initialize the system and load all + // relavant tiles fgPrintf( FG_TERRAIN, FG_INFO, " First time through ... "); fgPrintf( FG_TERRAIN, FG_INFO, " Updating Tile list for %d,%d %d,%d\n", @@ -109,10 +113,10 @@ int fgTileMgrUpdate( void ) { fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n", o->tile_diameter * o->tile_diameter); - /* wipe tile cache */ - fgTileCacheInit(); + // wipe/initialize tile cache + c->Init(); - /* build the local area list and update cache */ + // build the local area list and update cache for ( j = 0; j < o->tile_diameter; j++ ) { for ( i = 0; i < o->tile_diameter; i++ ) { fgBucketOffset(&p1, &p2, i - dw, j - dh); @@ -120,12 +124,12 @@ int fgTileMgrUpdate( void ) { } } } else { - /* We've moved to a new bucket, we need to scroll our - * structures, and load in the new tiles */ + // We've moved to a new bucket, we need to scroll our + // structures, and load in the new tiles - /* CURRENTLY THIS ASSUMES WE CAN ONLY MOVE TO ADJACENT TILES. - AT ULTRA HIGH SPEEDS THIS ASSUMPTION MAY NOT BE VALID IF - THE AIRCRAFT CAN SKIP A TILE IN A SINGLE ITERATION. */ + // CURRENTLY THIS ASSUMES WE CAN ONLY MOVE TO ADJACENT TILES. + // AT ULTRA HIGH SPEEDS THIS ASSUMPTION MAY NOT BE VALID IF + // THE AIRCRAFT CAN SKIP A TILE IN A SINGLE ITERATION. fgPrintf( FG_TERRAIN, FG_INFO, "Updating Tile list for %d,%d %d,%d\n", p1.lon, p1.lat, p1.x, p1.y); @@ -135,24 +139,27 @@ int fgTileMgrUpdate( void ) { fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n", o->tile_diameter); for ( j = 0; j < o->tile_diameter; j++ ) { - /* scrolling East */ + // scrolling East for ( i = 0; i < o->tile_diameter - 1; i++ ) { - tiles[(j*o->tile_diameter) + i] = tiles[(j*o->tile_diameter) + i + 1]; + tiles[(j*o->tile_diameter) + i] = + tiles[(j*o->tile_diameter) + i + 1]; } - /* load in new column */ + // load in new column fgBucketOffset(&p_last, &p2, dw + 1, j - dh); - fgTileMgrLoadTile(&p2, &tiles[(j*o->tile_diameter) + o->tile_diameter - 1]); + fgTileMgrLoadTile(&p2, &tiles[(j*o->tile_diameter) + + o->tile_diameter - 1]); } } else if ( (p1.lon < p_last.lon) || ( (p1.lon == p_last.lon) && (p1.x < p_last.x) ) ) { fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n", o->tile_diameter); for ( j = 0; j < o->tile_diameter; j++ ) { - /* scrolling West */ + // scrolling West for ( i = o->tile_diameter - 1; i > 0; i-- ) { - tiles[(j*o->tile_diameter) + i] = tiles[(j*o->tile_diameter) + i - 1]; + tiles[(j*o->tile_diameter) + i] = + tiles[(j*o->tile_diameter) + i - 1]; } - /* load in new column */ + // load in new column fgBucketOffset(&p_last, &p2, -dw - 1, j - dh); fgTileMgrLoadTile(&p2, &tiles[(j*o->tile_diameter) + 0]); } @@ -163,26 +170,27 @@ int fgTileMgrUpdate( void ) { fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n", o->tile_diameter); for ( i = 0; i < o->tile_diameter; i++ ) { - /* scrolling North */ + // scrolling North for ( j = 0; j < o->tile_diameter - 1; j++ ) { tiles[(j * o->tile_diameter) + i] = tiles[((j+1) * o->tile_diameter) + i]; } - /* load in new column */ + // load in new column fgBucketOffset(&p_last, &p2, i - dw, dh + 1); - fgTileMgrLoadTile(&p2, &tiles[((o->tile_diameter-1)*o->tile_diameter) + i]); + fgTileMgrLoadTile(&p2, &tiles[((o->tile_diameter-1) * + o->tile_diameter) + i]); } } else if ( (p1.lat < p_last.lat) || ( (p1.lat == p_last.lat) && (p1.y < p_last.y) ) ) { fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n", o->tile_diameter); for ( i = 0; i < o->tile_diameter; i++ ) { - /* scrolling South */ + // scrolling South for ( j = o->tile_diameter - 1; j > 0; j-- ) { tiles[(j * o->tile_diameter) + i] = tiles[((j-1) * o->tile_diameter) + i]; } - /* load in new column */ + // load in new column fgBucketOffset(&p_last, &p2, i - dw, -dh - 1); fgTileMgrLoadTile(&p2, &tiles[0 + i]); } @@ -197,7 +205,6 @@ int fgTileMgrUpdate( void ) { // Calculate if point/radius is inside view frustum -// static int viewable( fgCartesianPoint3d *cp, double radius ) { fgVIEW *v; MAT3hvec world, eye; @@ -279,8 +286,9 @@ static int viewable( fgCartesianPoint3d *cp, double radius ) { } -/* Render the local tiles */ +// Render the local tiles void fgTileMgrRender( void ) { + fgTILECACHE *c; fgFLIGHT *f; fgOPTIONS *o; fgVIEW *v; @@ -293,14 +301,15 @@ void fgTileMgrRender( void ) { int culled = 0; int drawn = 0; + c = &global_tile_cache; f = current_aircraft.flight; o = ¤t_options; v = ¤t_view; - /* Find current translation offset */ + // Find current translation offset fgBucketFind(FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG, &p); - index = fgTileCacheExists(&p); - fgTileCacheEntryInfo(index, &display_list, &scenery.next_center, &radius ); + index = c->Exists(&p); + c->EntryInfo(index, &display_list, &scenery.next_center, &radius ); fgPrintf( FG_TERRAIN, FG_DEBUG, "Pos = (%.2f, %.2f) Current bucket = %d %d %d %d Index = %ld\n", @@ -309,8 +318,8 @@ void fgTileMgrRender( void ) { for ( i = 0; i < (o->tile_diameter * o->tile_diameter); i++ ) { index = tiles[i]; - /* fgPrintf( FG_TERRAIN, FG_DEBUG, "Index = %d\n", index); */ - fgTileCacheEntryInfo(index, &display_list, &local_ref, &radius ); + // fgPrintf( FG_TERRAIN, FG_DEBUG, "Index = %d\n", index); + c->EntryInfo(index, &display_list, &local_ref, &radius ); if ( display_list >= 0 ) { @@ -336,135 +345,139 @@ void fgTileMgrRender( void ) { } -/* $Log$ -/* Revision 1.10 1998/05/17 16:59:34 curt -/* Frist pass at view frustum culling now operational. -/* - * Revision 1.9 1998/05/16 13:09:58 curt - * Beginning to add support for view frustum culling. - * Added some temporary code to calculate bouding radius, until the - * scenery generation tools and scenery can be updated. - * - * Revision 1.8 1998/05/07 23:15:21 curt - * Fixed a glTexImage2D() usage bug where width and height were mis-swapped. - * Added support for --tile-radius=n option. - * - * Revision 1.7 1998/05/06 03:16:42 curt - * Added an option to control square tile radius. - * - * Revision 1.6 1998/05/02 01:52:18 curt - * Playing around with texture coordinates. - * - * Revision 1.5 1998/04/30 12:35:32 curt - * Added a command line rendering option specify smooth/flat shading. - * - * Revision 1.4 1998/04/27 03:30:14 curt - * Minor transformation adjustments to try to keep scenery tiles closer to - * (0, 0, 0) GLfloats run out of precision at the distances we need to model - * the earth, but we can do a bunch of pre-transformations using double math - * and then cast to GLfloat once everything is close in where we have less - * precision problems. - * - * Revision 1.3 1998/04/25 22:06:32 curt - * Edited cvs log messages in source files ... bad bad bad! - * - * Revision 1.2 1998/04/24 00:51:09 curt - * Wrapped "#include " in "#ifdef HAVE_CONFIG_H" - * Tweaked the scenery file extentions to be "file.obj" (uncompressed) - * or "file.obz" (compressed.) - * - * Revision 1.1 1998/04/22 13:22:48 curt - * C++ - ifing the code a bit. - * - * Revision 1.25 1998/04/18 04:14:07 curt - * Moved fg_debug.c to it's own library. - * - * Revision 1.24 1998/04/14 02:23:18 curt - * Code reorganizations. Added a Lib/ directory for more general libraries. - * - * Revision 1.23 1998/04/08 23:30:08 curt - * Adopted Gnu automake/autoconf system. - * - * Revision 1.22 1998/04/03 22:11:38 curt - * Converting to Gnu autoconf system. - * - * Revision 1.21 1998/03/23 21:23:05 curt - * Debugging output tweaks. - * - * Revision 1.20 1998/03/14 00:30:51 curt - * Beginning initial terrain texturing experiments. - * - * Revision 1.19 1998/02/20 00:16:25 curt - * Thursday's tweaks. - * - * Revision 1.18 1998/02/19 13:05:54 curt - * Incorporated some HUD tweaks from Michelle America. - * Tweaked the sky's sunset/rise colors. - * Other misc. tweaks. - * - * Revision 1.17 1998/02/16 13:39:46 curt - * Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole - * tiles to occasionally be missing. - * - * Revision 1.16 1998/02/12 21:59:53 curt - * Incorporated code changes contributed by Charlie Hotchkiss - * - * - * Revision 1.14 1998/02/09 21:30:19 curt - * Fixed a nagging problem with terrain tiles not "quite" matching up perfectly. - * - * Revision 1.13 1998/02/07 15:29:46 curt - * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss - * - * - * Revision 1.12 1998/02/01 03:39:55 curt - * Minor tweaks. - * - * Revision 1.11 1998/01/31 00:43:27 curt - * Added MetroWorks patches from Carmen Volpe. - * - * Revision 1.10 1998/01/29 00:51:40 curt - * First pass at tile cache, dynamic tile loading and tile unloading now works. - * - * Revision 1.9 1998/01/27 03:26:44 curt - * Playing with new fgPrintf command. - * - * Revision 1.8 1998/01/27 00:48:04 curt - * Incorporated Paul Bleisch's new debug message - * system and commandline/config file processing code. - * - * Revision 1.7 1998/01/26 15:55:25 curt - * Progressing on building dynamic scenery system. - * - * Revision 1.6 1998/01/24 00:03:30 curt - * Initial revision. - * - * Revision 1.5 1998/01/19 19:27:18 curt - * Merged in make system changes from Bob Kuehne - * This should simplify things tremendously. - * - * Revision 1.4 1998/01/19 18:40:38 curt - * Tons of little changes to clean up the code and to remove fatal errors - * when building with the c++ compiler. - * - * Revision 1.3 1998/01/13 00:23:11 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.2 1998/01/08 02:22:27 curt - * Continue working on basic features. - * - * Revision 1.1 1998/01/07 23:50:51 curt - * "area" renamed to "tile" - * - * Revision 1.2 1998/01/07 03:29:29 curt - * Given an arbitrary lat/lon, we can now: - * generate a unique index for the chunk containing the lat/lon - * generate a path name to the chunk file - * build a list of the indexes of all the nearby areas. - * - * Revision 1.1 1998/01/07 02:05:48 curt - * Initial revision. - * */ - - +// $Log$ +// Revision 1.11 1998/05/20 20:53:55 curt +// Moved global ref point and radius (bounding sphere info, and offset) to +// data file rather than calculating it on the fly. +// Fixed polygon winding problem in scenery generation stage rather than +// compensating for it on the fly. +// Made a fgTILECACHE class. +// +// Revision 1.10 1998/05/17 16:59:34 curt +// Frist pass at view frustum culling now operational. +// +// Revision 1.9 1998/05/16 13:09:58 curt +// Beginning to add support for view frustum culling. +// Added some temporary code to calculate bouding radius, until the +// scenery generation tools and scenery can be updated. +// +// Revision 1.8 1998/05/07 23:15:21 curt +// Fixed a glTexImage2D() usage bug where width and height were mis-swapped. +// Added support for --tile-radius=n option. +// +// Revision 1.7 1998/05/06 03:16:42 curt +// Added an option to control square tile radius. +// +// Revision 1.6 1998/05/02 01:52:18 curt +// Playing around with texture coordinates. +// +// Revision 1.5 1998/04/30 12:35:32 curt +// Added a command line rendering option specify smooth/flat shading. +// +// Revision 1.4 1998/04/27 03:30:14 curt +// Minor transformation adjustments to try to keep scenery tiles closer to +// (0, 0, 0) GLfloats run out of precision at the distances we need to model +// the earth, but we can do a bunch of pre-transformations using double math +// and then cast to GLfloat once everything is close in where we have less +// precision problems. +// +// Revision 1.3 1998/04/25 22:06:32 curt +// Edited cvs log messages in source files ... bad bad bad! +// +// Revision 1.2 1998/04/24 00:51:09 curt +// Wrapped "#include " in "#ifdef HAVE_CONFIG_H" +// Tweaked the scenery file extentions to be "file.obj" (uncompressed) +// or "file.obz" (compressed.) +// +// Revision 1.1 1998/04/22 13:22:48 curt +// C++ - ifing the code a bit. +// +// Revision 1.25 1998/04/18 04:14:07 curt +// Moved fg_debug.c to it's own library. +// +// Revision 1.24 1998/04/14 02:23:18 curt +// Code reorganizations. Added a Lib/ directory for more general libraries. +// +// Revision 1.23 1998/04/08 23:30:08 curt +// Adopted Gnu automake/autoconf system. +// +// Revision 1.22 1998/04/03 22:11:38 curt +// Converting to Gnu autoconf system. +// +// Revision 1.21 1998/03/23 21:23:05 curt +// Debugging output tweaks. +// +// Revision 1.20 1998/03/14 00:30:51 curt +// Beginning initial terrain texturing experiments. +// +// Revision 1.19 1998/02/20 00:16:25 curt +// Thursday's tweaks. +// +// Revision 1.18 1998/02/19 13:05:54 curt +// Incorporated some HUD tweaks from Michelle America. +// Tweaked the sky's sunset/rise colors. +// Other misc. tweaks. +// +// Revision 1.17 1998/02/16 13:39:46 curt +// Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole +// tiles to occasionally be missing. +// +// Revision 1.16 1998/02/12 21:59:53 curt +// Incorporated code changes contributed by Charlie Hotchkiss +// +// +// Revision 1.14 1998/02/09 21:30:19 curt +// Fixed a nagging problem with terrain tiles not "quite" matching up perfectly. +// +// Revision 1.13 1998/02/07 15:29:46 curt +// Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss +// +// +// Revision 1.12 1998/02/01 03:39:55 curt +// Minor tweaks. +// +// Revision 1.11 1998/01/31 00:43:27 curt +// Added MetroWorks patches from Carmen Volpe. +// +// Revision 1.10 1998/01/29 00:51:40 curt +// First pass at tile cache, dynamic tile loading and tile unloading now works. +// +// Revision 1.9 1998/01/27 03:26:44 curt +// Playing with new fgPrintf command. +// +// Revision 1.8 1998/01/27 00:48:04 curt +// Incorporated Paul Bleisch's new debug message +// system and commandline/config file processing code. +// +// Revision 1.7 1998/01/26 15:55:25 curt +// Progressing on building dynamic scenery system. +// +// Revision 1.6 1998/01/24 00:03:30 curt +// Initial revision. +// +// Revision 1.5 1998/01/19 19:27:18 curt +// Merged in make system changes from Bob Kuehne +// This should simplify things tremendously. +// +// Revision 1.4 1998/01/19 18:40:38 curt +// Tons of little changes to clean up the code and to remove fatal errors +// when building with the c++ compiler. +// +// Revision 1.3 1998/01/13 00:23:11 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.2 1998/01/08 02:22:27 curt +// Continue working on basic features. +// +// Revision 1.1 1998/01/07 23:50:51 curt +// "area" renamed to "tile" +// +// Revision 1.2 1998/01/07 03:29:29 curt +// Given an arbitrary lat/lon, we can now: +// generate a unique index for the chunk containing the lat/lon +// generate a path name to the chunk file +// build a list of the indexes of all the nearby areas. +// +// Revision 1.1 1998/01/07 02:05:48 curt +// Initial revision. diff --git a/Scenery/tilemgr.hxx b/Scenery/tilemgr.hxx index 5616df9bf..29d7e64f3 100644 --- a/Scenery/tilemgr.hxx +++ b/Scenery/tilemgr.hxx @@ -1,27 +1,25 @@ -/************************************************************************** - * tilemgr.hxx -- routines to handle dynamic management of scenery tiles - * - * Written by Curtis Olson, started January 1998. - * - * 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) - **************************************************************************/ +// tilemgr.hxx -- routines to handle dynamic management of scenery tiles +// +// Written by Curtis Olson, started January 1998. +// +// 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 _TILEMGR_HXX @@ -33,47 +31,50 @@ #endif -/* Initialize the Tile Manager subsystem */ +// Initialize the Tile Manager subsystem int fgTileMgrInit( void ); -/* given the current lon/lat, fill in the array of local chunks. If - * the chunk isn't already in the cache, then read it from disk. */ +// given the current lon/lat, fill in the array of local chunks. If +// the chunk isn't already in the cache, then read it from disk. int fgTileMgrUpdate( void ); -/* Render the local tiles --- hack, hack, hack */ +// Render the local tiles --- hack, hack, hack void fgTileMgrRender( void ); -#endif /* _TILEMGR_HXX */ - - -/* $Log$ -/* Revision 1.1 1998/04/22 13:22:49 curt -/* C++ - ifing the code a bit. -/* - * Revision 1.6 1998/04/21 17:02:45 curt - * Prepairing for C++ integration. - * - * Revision 1.5 1998/02/12 21:59:53 curt - * Incorporated code changes contributed by Charlie Hotchkiss - * - * - * Revision 1.4 1998/01/22 02:59:42 curt - * Changed #ifdef FILE_H to #ifdef _FILE_H - * - * Revision 1.3 1998/01/19 18:40:38 curt - * Tons of little changes to clean up the code and to remove fatal errors - * when building with the c++ compiler. - * - * Revision 1.2 1998/01/13 00:23:11 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.1 1998/01/07 23:50:51 curt - * "area" renamed to "tile" - * - * */ - - +#endif // _TILEMGR_HXX + + +// $Log$ +// Revision 1.2 1998/05/20 20:53:56 curt +// Moved global ref point and radius (bounding sphere info, and offset) to +// data file rather than calculating it on the fly. +// Fixed polygon winding problem in scenery generation stage rather than +// compensating for it on the fly. +// Made a fgTILECACHE class. +// +// Revision 1.1 1998/04/22 13:22:49 curt +// C++ - ifing the code a bit. +// +// Revision 1.6 1998/04/21 17:02:45 curt +// Prepairing for C++ integration. +// +// Revision 1.5 1998/02/12 21:59:53 curt +// Incorporated code changes contributed by Charlie Hotchkiss +// +// +// Revision 1.4 1998/01/22 02:59:42 curt +// Changed #ifdef FILE_H to #ifdef _FILE_H +// +// Revision 1.3 1998/01/19 18:40:38 curt +// Tons of little changes to clean up the code and to remove fatal errors +// when building with the c++ compiler. +// +// Revision 1.2 1998/01/13 00:23:11 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.1 1998/01/07 23:50:51 curt +// "area" renamed to "tile"