#include <GL/glut.h>
#include <XGL/xgl.h>
-#include <string.h>
+#include "Include/compiler.h"
-#include <Aircraft/aircraft.h>
-#include <Debug/fg_debug.h>
+#ifdef FG_MATH_EXCEPTION_CLASH
+# define exception c_exception
+#endif
+
+#ifdef FG_HAVE_STD_INCLUDES
+# include <cmath>
+#else
+# include <math.h>
+#endif
+
+#include <string>
+FG_USING_STD(string);
+
+#include <Aircraft/aircraft.hxx>
+#include <Debug/logstream.hxx>
#include <Include/fg_constants.h>
#include <Main/options.hxx>
#include <Main/views.hxx>
-#include <Math/fg_geodesy.h>
+#include <Math/fg_geodesy.hxx>
#include <Math/interpolater.hxx>
#include <Math/mat3.h>
#include <Math/polar3d.hxx>
// initialize lighting tables
void fgLIGHT::Init( void ) {
- string path, ambient, diffuse, sky;
-
- fgPrintf( FG_EVENT, FG_INFO,
- "Initializing Lighting interpolation tables.\n" );
+ FG_LOG( FG_EVENT, FG_INFO,
+ "Initializing Lighting interpolation tables." );
// build the path name to the ambient lookup table
- path = current_options.get_fg_root();
- ambient = path + "/Lighting/ambient";
- diffuse = path + "/Lighting/diffuse";
- sky = path + "/Lighting/sky";
+ string path = current_options.get_fg_root();
+ string ambient = path + "/Lighting/ambient";
+ string diffuse = path + "/Lighting/diffuse";
+ string sky = path + "/Lighting/sky";
// initialize ambient table
- ambient_tbl = new fgINTERPTABLE((char *)ambient.c_str());
+ ambient_tbl = new fgINTERPTABLE( ambient );
// initialize diffuse table
- diffuse_tbl = new fgINTERPTABLE((char *)diffuse.c_str());
+ diffuse_tbl = new fgINTERPTABLE( diffuse );
// initialize sky table
- sky_tbl = new fgINTERPTABLE((char *)sky.c_str());
+ sky_tbl = new fgINTERPTABLE( sky );
}
// update lighting parameters based on current sun position
void fgLIGHT::Update( void ) {
- fgFLIGHT *f;
+ FGInterface *f;
fgTIME *t;
- fgVIEW *v;
// if the 4th field is 0.0, this specifies a direction ...
GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 };
// base sky color
GLfloat base_fog_color[4] = {0.90, 0.90, 1.00, 1.0};
double deg, ambient, diffuse, sky_brightness;
- f = current_aircraft.flight;
+ f = current_aircraft.fdm_state;
t = &cur_time_params;
- v = ¤t_view;
- fgPrintf( FG_EVENT, FG_INFO, "Updating light parameters.\n" );
+ FG_LOG( FG_EVENT, FG_INFO, "Updating light parameters." );
// calculate lighting parameters based on sun's relative angle to
// local up
deg = sun_angle * 180.0 / FG_PI;
- fgPrintf( FG_EVENT, FG_INFO, " Sun angle = %.2f.\n", deg );
+ FG_LOG( FG_EVENT, FG_INFO, " Sun angle = " << deg );
ambient = ambient_tbl->interpolate( deg );
diffuse = diffuse_tbl->interpolate( deg );
sky_brightness = sky_tbl->interpolate( deg );
- fgPrintf( FG_EVENT, FG_INFO,
- " ambient = %.2f diffuse = %.2f sky = %.2f\n",
- ambient, diffuse, sky_brightness );
+ FG_LOG( FG_EVENT, FG_INFO,
+ " ambient = " << ambient << " diffuse = " << diffuse
+ << " sky = " << sky_brightness );
// sky_brightness = 0.15; // used to force a dark sky (when testing)
// calculate fog color adjusted for sunrise/sunset effects
void fgLIGHT::UpdateAdjFog( void ) {
- fgFLIGHT *f;
- fgVIEW *v;
+ FGInterface *f;
double sun_angle_deg, rotation, param1[3], param2[3];
- f = current_aircraft.flight;
- v = ¤t_view;
+ f = current_aircraft.fdm_state;
- fgPrintf( FG_EVENT, FG_DEBUG, "Updating adjusted fog parameters.\n" );
+ FG_LOG( FG_EVENT, FG_DEBUG, "Updating adjusted fog parameters." );
// set fog color (we'll try to match the sunset color in the
// direction we are looking
// first determine the difference between our view angle and local
// direction to the sun
- rotation = -(sun_rotation + FG_PI) - (FG_Psi - v->view_offset) ;
+ rotation = -(sun_rotation + FG_PI)
+ - (f->get_Psi() - current_view.get_view_offset());
while ( rotation < 0 ) {
rotation += FG_2PI;
}
sun_angle_deg = sun_angle * RAD_TO_DEG;
if ( (sun_angle_deg > 80.0) && (sun_angle_deg < 100.0) ) {
/* 0.0 - 0.6 */
- param1[0] = (10.0 - fabs(90.0 - sun_angle_deg)) / 10.0;
- param1[1] = (10.0 - fabs(90.0 - sun_angle_deg)) / 50.0;
- param1[2] = 0.0;
+ param1[0] = (10.0 - fabs(90.0 - sun_angle_deg)) / 20.0;
+ param1[1] = (10.0 - fabs(90.0 - sun_angle_deg)) / 40.0;
+ param2[2] = -(10.0 - fabs(90.0 - sun_angle)) / 30.0;
} else {
param1[0] = param1[1] = param1[2] = 0.0;
}
// $Log$
+// Revision 1.26 1999/02/05 21:29:20 curt
+// Modifications to incorporate Jon S. Berndts flight model code.
+//
+// Revision 1.25 1999/01/07 20:25:36 curt
+// Portability changes and updates from Bernie Bright.
+//
+// Revision 1.24 1998/12/09 18:50:35 curt
+// Converted "class fgVIEW" to "class FGView" and updated to make data
+// members private and make required accessor functions.
+//
+// Revision 1.23 1998/12/05 15:54:30 curt
+// Renamed class fgFLIGHT to class FGState as per request by JSB.
+//
+// Revision 1.22 1998/12/03 01:18:42 curt
+// Converted fgFLIGHT to a class.
+//
+// Revision 1.21 1998/11/23 21:49:09 curt
+// Borland portability tweaks.
+//
+// Revision 1.20 1998/11/06 21:18:27 curt
+// Converted to new logstream debugging facility. This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.19 1998/10/20 18:41:53 curt
+// Tweaked sunrise/sunset colors.
+//
+// Revision 1.18 1998/10/17 01:34:30 curt
+// C++ ifying ...
+//
// Revision 1.17 1998/08/29 13:11:33 curt
// Bernie Bright writes:
// I've created some new classes to enable pointers-to-functions and