]> git.mxchange.org Git - flightgear.git/commitdiff
material.cxx: whups, double method declaration with no definition.
authorcurt <curt>
Fri, 24 Jul 1998 21:42:06 +0000 (21:42 +0000)
committercurt <curt>
Fri, 24 Jul 1998 21:42:06 +0000 (21:42 +0000)
obj.cxx: tweaks to avoid errors in SGI's CC.
tile.cxx: optimizations by Norman Vine.
tilemgr.cxx: optimizations by Norman Vine.

Scenery/material.cxx
Scenery/material.hxx
Scenery/obj.cxx
Scenery/tile.cxx
Scenery/tile.hxx
Scenery/tilemgr.cxx

index f52bff0369dba58feefb92df37258ccac1ba1923..c8d8d917d460455bc7be37eec0d218ba1e1843ee 100644 (file)
@@ -52,10 +52,13 @@ fgMATERIAL::fgMATERIAL ( void ) {
 
 
 // Sorting routines
-void fgMATERIAL::init_sort_list( void );
+void fgMATERIAL::init_sort_list( void ) {
+}
 
 
-int fgMATERIAL::append_sort_list( fgFRAGMENT *object );
+int fgMATERIAL::append_sort_list( fgFRAGMENT *object ) {
+    return(0);
+}
 
 
 // Destructor
@@ -294,6 +297,12 @@ fgMATERIAL_MGR::~fgMATERIAL_MGR ( void ) {
 
 
 // $Log$
+// Revision 1.10  1998/07/24 21:42:06  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.9  1998/07/13 21:01:57  curt
 // Wrote access functions for current fgOPTIONS.
 //
index a4254dce6281218442ba537bd9819e61bc803c4e..7efcc391fde7f38638b42d1a717278379e31e721 100644 (file)
 #include <GL/glut.h>
 #include <XGL/xgl.h>
 
-#ifdef __sun__
+#if defined ( __sun__ )
 extern "C" void *memmove(void *, const void *, size_t);
 extern "C" void *memset(void *, int, size_t);
 #endif
 
-#include <string>          // Standard C++ string library
-#include <map>             // STL associative "array"
+#include <string>        // Standard C++ string library
+#include <map>           // STL associative "array"
+
 #ifdef NEEDNAMESPACESTD
 using namespace std;
 #endif
@@ -119,6 +120,12 @@ extern fgMATERIAL_MGR material_mgr;
 
 
 // $Log$
+// Revision 1.10  1998/07/24 21:42:06  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.9  1998/07/06 21:34:33  curt
 // Added using namespace std for compilers that support this.
 //
index dc544b33f43d97fbe2149807d9eadb43036e07f7..43664a2916b420d0228c7f5d41f6790188b1d56e 100644 (file)
 #include <GL/glut.h>
 #include <XGL/xgl.h>
 
-#ifdef __sun__
+#if defined ( __sun__ )
 extern "C" void *memmove(void *, const void *, size_t);
 extern "C" void *memset(void *, int, size_t);
 #endif
 
-#include <string>  // Standard C++ library
-#include <map>     // STL
+#include <string>       // Standard C++ library
+#include <map>          // STL
+
 #ifdef NEEDNAMESPACESTD
 using namespace std;
 #endif
@@ -216,7 +217,7 @@ int fgObjLoad(char *path, fgTILE *t) {
            sscanf(line, "usemtl %s\n", material);
 
            // give the fragment a pointer back to the tile
-           (fgTILE *)fragment.tile_ptr = t;
+           (fgTILE *)(fragment.tile_ptr) = t;
 
            // find this material in the properties list
            map < string, fgMATERIAL, less<string> > :: iterator myfind = 
@@ -226,7 +227,7 @@ int fgObjLoad(char *path, fgTILE *t) {
                          "Ack! unknown usemtl name = %s in %s\n",
                          material, path);
            } else {
-               (fgMATERIAL *)fragment.material_ptr = &(*myfind).second;
+               fragment.material_ptr = (void *)(&(*myfind).second);
            }
 
            // initialize the fragment transformation matrix
@@ -466,6 +467,12 @@ int fgObjLoad(char *path, fgTILE *t) {
 
 
 // $Log$
+// Revision 1.20  1998/07/24 21:42:07  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.19  1998/07/13 21:01:58  curt
 // Wrote access functions for current fgOPTIONS.
 //
index a0a6078cf3aec08dafa9170f527e45febd5638c3..d6903134eabce40daec3353b4f819a27e4c41c9d 100644 (file)
@@ -256,16 +256,24 @@ int fgFRAGMENT::intersect( fgPoint3d *end0, fgPoint3d *end1, int side_flag,
            // check to see if end0 and end1 are on opposite sides of
            // plane
            if ( (x - x0) > FG_EPSILON ) {
-               t1 = x; t2 = x0; t3 = x1;
+               t1 = x;
+               t2 = x0;
+               t3 = x1;
            } else if ( (y - y0) > FG_EPSILON ) {
-               t1 = y; t2 = y0; t3 = y1;
+               t1 = y;
+               t2 = y0;
+               t3 = y1;
            } else if ( (z - z0) > FG_EPSILON ) {
-               t1 = z; t2 = z0; t3 = z1;
+               t1 = z;
+               t2 = z0;
+               t3 = z1;
            } else {
                // everything is too close together to tell the difference
                // so the current intersection point should work as good
                // as any
-               result->x = x; result->y = y; result->z = z;
+               result->x = x;
+               result->y = y;
+               result->z = z;
                return(1);
            }
            side1 = FG_SIGN (t1 - t2);
@@ -287,17 +295,17 @@ int fgFRAGMENT::intersect( fgPoint3d *end0, fgPoint3d *end1, int side_flag,
        // printf("bounding cube = %.2f,%.2f,%.2f  %.2f,%.2f,%.2f\n",
        //        xmin, ymin, zmin, xmax, ymax, zmax);
        // punt if outside bouding cube
-       if ( x < xmin ) {
+       if ( x < (xmin = fg_min3 (p1[0], p2[0], p3[0])) ) {
            continue;
-       } else if ( x > xmax ) {
+       } else if ( x > (xmax = fg_max3 (p1[0], p2[0], p3[0])) ) {
            continue;
-       } else if ( y < ymin ) {
+       } else if ( y < (ymin = fg_min3 (p1[1], p2[1], p3[1])) ) {
            continue;
-       } else if ( y > ymax ) {
+       } else if ( y > (ymax = fg_max3 (p1[1], p2[1], p3[1])) ) {
            continue;
-       } else if ( z < zmin ) {
+       } else if ( z < (zmin = fg_min3 (p1[2], p2[2], p3[2])) ) {
            continue;
-       } else if ( z > zmax ) {
+       } else if ( z > (zmax = fg_max3 (p1[2], p2[2], p3[2])) ) {
            continue;
        }
 
@@ -312,55 +320,74 @@ int fgFRAGMENT::intersect( fgPoint3d *end0, fgPoint3d *end1, int side_flag,
        min_dim = fg_min3 (dx, dy, dz);
        if ( fabs(min_dim - dx) <= FG_EPSILON ) {
            // x is the smallest dimension
-           x1 = p1[1]; y1 = p1[2];
-           x2 = p2[1]; y2 = p2[2];
-           x3 = p3[1]; y3 = p3[2];
-           rx = y; ry = z;
+           x1 = p1[1];
+           y1 = p1[2];
+           x2 = p2[1];
+           y2 = p2[2];
+           x3 = p3[1];
+           y3 = p3[2];
+           rx = y;
+           ry = z;
        } else if ( fabs(min_dim - dy) <= FG_EPSILON ) {
            // y is the smallest dimension
-           x1 = p1[0]; y1 = p1[2];
-           x2 = p2[0]; y2 = p2[2];
-           x3 = p3[0]; y3 = p3[2];
-           rx = x; ry = z;
+           x1 = p1[0];
+           y1 = p1[2];
+           x2 = p2[0];
+           y2 = p2[2];
+           x3 = p3[0];
+           y3 = p3[2];
+           rx = x;
+           ry = z;
        } else if ( fabs(min_dim - dz) <= FG_EPSILON ) {
            // z is the smallest dimension
-           x1 = p1[0]; y1 = p1[1];
-           x2 = p2[0]; y2 = p2[1];
-           x3 = p3[0]; y3 = p3[1];
-           rx = x; ry = y;
+           x1 = p1[0];
+           y1 = p1[1];
+           x2 = p2[0];
+           y2 = p2[1];
+           x3 = p3[0];
+           y3 = p3[1];
+           rx = x;
+           ry = y;
        } else {
            // all dimensions are really small so lets call it close
            // enough and return a successful match
-           result->x = x; result->y = y; result->z = z;
+           result->x = x;
+           result->y = y;
+           result->z = z;
            return(1);
        }
 
        // check if intersection point is on the same side of p1 <-> p2 as p3
-       side1 = FG_SIGN ((y1 - y2) * ((x3) - x2) / (x1 - x2) + y2 - (y3));
-       side2 = FG_SIGN ((y1 - y2) * ((rx) - x2) / (x1 - x2) + y2 - (ry));
+       t1 = (y1 - y2) / (x1 - x2);
+       side1 = FG_SIGN (t1 * ((x3) - x2) + y2 - (y3));
+       side2 = FG_SIGN (t1 * ((rx) - x2) + y2 - (ry));
        if ( side1 != side2 ) {
            // printf("failed side 1 check\n");
            continue;
        }
 
        // check if intersection point is on correct side of p2 <-> p3 as p1
-       side1 = FG_SIGN ((y2 - y3) * ((x1) - x3) / (x2 - x3) + y3 - (y1));
-       side2 = FG_SIGN ((y2 - y3) * ((rx) - x3) / (x2 - x3) + y3 - (ry));
+       t1 = (y2 - y3) / (x2 - x3);
+       side1 = FG_SIGN (t1 * ((x1) - x3) + y3 - (y1));
+       side2 = FG_SIGN (t1 * ((rx) - x3) + y3 - (ry));
        if ( side1 != side2 ) {
            // printf("failed side 2 check\n");
            continue;
        }
 
        // check if intersection point is on correct side of p1 <-> p3 as p2
-       side1 = FG_SIGN ((y1 - y3) * ((x2) - x3) / (x1 - x3) + y3 - (y2));
-       side2 = FG_SIGN ((y1 - y3) * ((rx) - x3) / (x1 - x3) + y3 - (ry));
+       t1 = (y1 - y3) / (x1 - x3);
+       side1 = FG_SIGN (t1 * ((x2) - x3) + y3 - (y2));
+       side2 = FG_SIGN (t1 * ((rx) - x3) + y3 - (ry));
        if ( side1 != side2 ) {
            // printf("failed side 3  check\n");
            continue;
        }
 
        // printf( "intersection point = %.2f %.2f %.2f\n", x, y, z);
-       result->x = x; result->y = y; result->z = z;
+       result->x = x;
+       result->y = y;
+       result->z = z;
        return(1);
     }
 
@@ -419,6 +446,12 @@ fgTILE::~fgTILE ( void ) {
 
 
 // $Log$
+// Revision 1.5  1998/07/24 21:42:08  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.4  1998/07/22 21:41:42  curt
 // Add basic fgFACE methods contributed by Charlie Hotchkiss.
 // intersect optimization from Norman Vine.
index 2143a77505bc5619f1968fc859190ca6daf40efe..c676741e6f78ef5a91daac7a03e60f7dbcc5ba81 100644 (file)
@@ -41,7 +41,7 @@
 #include <GL/glut.h>
 #include <XGL/xgl.h>
 
-#ifdef __sun__
+#if defined ( __sun__ )
 extern "C" void *memmove(void *, const void *, size_t);
 extern "C" void *memset(void *, int, size_t);
 #endif
@@ -163,6 +163,12 @@ public:
 
 
 // $Log$
+// Revision 1.13  1998/07/24 21:42:08  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.12  1998/07/22 21:41:42  curt
 // Add basic fgFACE methods contributed by Charlie Hotchkiss.
 // intersect optimization from Norman Vine.
index bbf176769159b49cc6caad6cbf7e5be053c37ab6..118d75fef22a1964937f2af2d79b1d478e8cfc19 100644 (file)
@@ -55,6 +55,8 @@
 
 #define FG_LOCAL_X_Y         81  // max(o->tile_diameter) ** 2
 
+#define FG_SQUARE(X) ((X) * (X))
+
 
 // closest (potentially viewable) tiles, centered on current tile.
 // This is an array of pointers to cache indexes.
@@ -216,14 +218,16 @@ int fgTileMgrUpdate( void ) {
 
 
 // Calculate shortest distance from point to line
-static double point_line_dist( fgPoint3d *tc, fgPoint3d *vp, MAT3vec d) {
+static double point_line_dist_squared( fgPoint3d *tc, fgPoint3d *vp, 
+                                      MAT3vec d )
+{
     MAT3vec p, p0;
     double dist;
 
     p[0] = tc->x; p[1] = tc->y; p[2] = tc->z;
     p0[0] = vp->x; p0[1] = vp->y; p0[2] = vp->z;
 
-    dist = fgPointLine(p, p0, d);
+    dist = fgPointLineSquared(p, p0, d);
 
     // printf("dist = %.2f\n", dist);
 
@@ -397,12 +401,13 @@ void fgTileMgrRender( void ) {
        // calculate distance from vertical tangent line at
        // current position to center of tile.
        
-       /* printf("distance = %.2f, bounding radius = %.2f\n", 
-              point_line_dist(&(t->offset), &(v->view_pos), v->local_up),
-              t->bounding_radius); */
+       /* printf("distance squared = %.2f, bounding radius = %.2f\n", 
+              point_line_dist_squared(&(t->offset), &(v->view_pos), 
+              v->local_up), t->bounding_radius); */
 
-       dist = point_line_dist(&(t->center), &(v->abs_view_pos), v->local_up);
-       if ( dist < t->bounding_radius ) {
+       dist = point_line_dist_squared( &(t->center), &(v->abs_view_pos), 
+                                       v->local_up );
+       if ( dist < FG_SQUARE(t->bounding_radius) ) {
 
            // traverse fragment list for tile
            current = t->fragment_list.begin();
@@ -411,14 +416,14 @@ void fgTileMgrRender( void ) {
            while ( current != last ) {
                frag_ptr = &(*current);
                current++;
-               /* printf("distance = %.2f, bounding radius = %.2f\n", 
-                      point_line_dist( &(frag_ptr->center), 
+               /* printf("distance squared = %.2f, bounding radius = %.2f\n", 
+                      point_line_dist_squared( &(frag_ptr->center), 
                                        &(v->abs_view_pos), v->local_up),
                       frag_ptr->bounding_radius); */
 
-               dist = point_line_dist( &(frag_ptr->center), 
+               dist = point_line_dist_squared( &(frag_ptr->center), 
                                        &(v->abs_view_pos), v->local_up);
-               if ( dist <= frag_ptr->bounding_radius ) {
+               if ( dist <= FG_SQUARE(frag_ptr->bounding_radius) ) {
                    if ( frag_ptr->intersect( &(v->abs_view_pos), 
                                              &earth_center, 0, &result ) ) {
                        // compute geocentric coordinates of tile center
@@ -559,6 +564,12 @@ void fgTileMgrRender( void ) {
 
 
 // $Log$
+// Revision 1.27  1998/07/24 21:42:09  curt
+// material.cxx: whups, double method declaration with no definition.
+// obj.cxx: tweaks to avoid errors in SGI's CC.
+// tile.cxx: optimizations by Norman Vine.
+// tilemgr.cxx: optimizations by Norman Vine.
+//
 // Revision 1.26  1998/07/20 12:51:26  curt
 // Added far clip plane to fragment clipping calculations and tie this to
 // weather->visibility.  This way you can increase framerates by increasing