]> git.mxchange.org Git - flightgear.git/blobdiff - src/Scenery/tileentry.cxx
Tweaks from Julian Foad:
[flightgear.git] / src / Scenery / tileentry.cxx
index 6fb4029215eb975636de472a3558c1e9e7fd8778..e2431a131b1b1c4580f4fcac8ebfbc2487be18be 100644 (file)
@@ -342,6 +342,8 @@ void *fgBillboard( ssgBranch *lightmaps, ssgVertexArray *light_maps, ssgSimpleSt
         leaf->setState( lightmap_state );
         lightmaps->addKid( leaf );
     }
+
+    return NULL;
 }
 
 ssgBranch* FGTileEntry::gen_runway_lights( ssgVertexArray *points,ssgVertexArray *normal,
@@ -776,7 +778,7 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, float vis) {
        double agl;
        if ( current_aircraft.fdm_state ) {
            agl = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-               - scenery.cur_elev;
+               - scenery.get_cur_elev();
        } else {
            agl = 0.0;
        }
@@ -827,7 +829,7 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, float vis) {
             double agl1;
             if ( current_aircraft.fdm_state ) {
                 agl1 = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-                    - scenery.cur_elev;
+                    - scenery.get_cur_elev();
             } else {
                 agl1 = 0.0;
             }
@@ -866,6 +868,36 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, float vis) {
 }
 
 
+// Set up lights rendering call backs
+static int fgLightsPredraw( ssgEntity *e ) {
+#if 0
+#ifdef GL_EXT_point_parameters
+    if (glutExtensionSupported("GL_EXT_point_parameters")) {
+       static float quadratic[3] = {1.0, 0.01, 0.0001};
+       glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, quadratic);
+       glPointParameterfEXT(GL_POINT_SIZE_MIN_EXT, 1.0); 
+       glPointSize(4.0);
+    }
+#endif
+#endif
+    return true;
+}
+
+static int fgLightsPostdraw( ssgEntity *e ) {
+#if 0
+#ifdef GL_EXT_point_parameters
+    if (glutExtensionSupported("GL_EXT_point_parameters")) {
+       static float default_attenuation[3] = {1.0, 0.0, 0.0};
+       glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT,
+                             default_attenuation);
+       glPointSize(1.0);
+    }
+#endif
+#endif
+    return true;
+}
+
+
 ssgLeaf* FGTileEntry::gen_lights( ssgVertexArray *lights, int inc, float bright ) {
     // generate a repeatable random seed
     float *p1 = lights->get( 0 );
@@ -918,6 +950,8 @@ ssgLeaf* FGTileEntry::gen_lights( ssgVertexArray *lights, int inc, float bright
     // assign state
     FGNewMat *newmat = material_lib.find( "LIGHTS" );
     leaf->setState( newmat->get_state() );
+    leaf->setCallback( SSG_CALLBACK_PREDRAW, fgLightsPredraw );
+    leaf->setCallback( SSG_CALLBACK_POSTDRAW, fgLightsPostdraw );
 
     return leaf;
 }
@@ -1259,7 +1293,7 @@ FGTileEntry::load( const SGPath& base, bool is_base )
     terra_transform->addKid( terra_range );
 
     // calculate initial tile offset
-    SetOffset( scenery.center );
+    SetOffset( scenery.get_center() );
     sgCoord sgcoord;
     sgSetCoord( &sgcoord,
                offset.x(), offset.y(), offset.z(),