X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FTime%2Flight.hxx;h=75c23ca93c54cfb7d4e834f5356124c0a0178a01;hb=da73dd97d3d0e36b6078728ac39f0b98cae46ff7;hp=fd4c215dc8392927cd5e2d977e26457a5cf90734;hpb=4214cd6c10e8e90577673b4a11b6451248b3c6ee;p=flightgear.git diff --git a/src/Time/light.hxx b/src/Time/light.hxx index fd4c215dc..75c23ca93 100644 --- a/src/Time/light.hxx +++ b/src/Time/light.hxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started April 1998. // -// Copyright (C) 1998 Curtis L. Olson - curt@me.umn.edu +// Copyright (C) 1998 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,7 +16,7 @@ // // 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. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -34,19 +34,11 @@ # include #endif -#ifdef HAVE_WINDOWS_H -# include -#endif - #include -#include SG_GL_H - -#include // plib include - +#include #include #include -#include // Define a structure containing the global lighting parameters @@ -66,17 +58,14 @@ private: */ // in geocentric coordinates - double _sun_lon, _sun_gc_lat; + double _sun_lon, _sun_lat; double _moon_lon, _moon_gc_lat; - // in cartesian coordiantes - Point3D _sunpos, _moonpos; - // (in view coordinates) - sgVec4 _sun_vec, _moon_vec; + SGVec4f _sun_vec, _moon_vec; // inverse (in view coordinates) - sgVec4 _sun_vec_inv, _moon_vec_inv; + SGVec4f _sun_vec_inv, _moon_vec_inv; // the angle between the celestial object and the local horizontal // (in radians) @@ -94,24 +83,38 @@ private: */ // ambient, diffuse and specular component - GLfloat _scene_ambient[4]; - GLfloat _scene_diffuse[4]; - GLfloat _scene_specular[4]; + SGVec4f _scene_ambient; + SGVec4f _scene_diffuse; + SGVec4f _scene_specular; + SGVec4f _scene_chrome; // clear sky, fog and cloud color - GLfloat _sky_color[4]; - GLfloat _fog_color[4]; - GLfloat _cloud_color[4]; + SGVec4f _sun_color; + SGVec4f _sky_color; + SGVec4f _fog_color; + SGVec4f _cloud_color; // clear sky and fog color adjusted for sunset effects - GLfloat _adj_fog_color[4]; - GLfloat _adj_sky_color[4]; + SGVec4f _adj_fog_color; + SGVec4f _adj_sky_color; + + // input parameters affected by the weather system + float _saturation; + float _scattering; + float _overcast; double _dt_total; void update_sky_color (); void update_adj_fog_color (); + void updateSunPos(); + + // properties for chrome light; not a tie because I want to fire + // property listeners when the values change. + SGPropertyNode_ptr _chromeProps[4]; + + SGPropertyNode_ptr _sunAngleRad; public: FGLight (); @@ -126,14 +129,15 @@ public: // Color related functions - inline float *scene_ambient () const { return (float *)_scene_ambient; } - inline float *scene_diffuse () const { return (float *)_scene_diffuse; } - inline float *scene_specular () const { return (float *)_scene_specular; } - - inline float *sky_color () const { return (float *)_sky_color; } - inline float *cloud_color () const { return (float *)_cloud_color; } - inline float *adj_fog_color () const { return (float *)_adj_fog_color; } + inline const SGVec4f& scene_ambient () const { return _scene_ambient; } + inline const SGVec4f& scene_diffuse () const { return _scene_diffuse; } + inline const SGVec4f& scene_specular () const { return _scene_specular; } + inline const SGVec4f& scene_chrome () const { return _scene_chrome; } + inline const SGVec4f& sky_color () const { return _sky_color; } + inline const SGVec4f& cloud_color () const { return _cloud_color; } + inline const SGVec4f& adj_fog_color () const { return _adj_fog_color; } + inline const SGVec4f& adj_sky_color () const { return _adj_sky_color; } // Sun related functions @@ -146,14 +150,11 @@ public: inline double get_sun_lon () const { return _sun_lon; } inline void set_sun_lon (double l) { _sun_lon = l; } - inline double get_sun_gc_lat () const { return _sun_gc_lat; } - inline void set_sun_gc_lat (double l) { _sun_gc_lat = l; } + inline double get_sun_lat () const { return _sun_lat; } + inline void set_sun_lat (double l) { _sun_lat = l; } - inline Point3D get_sunpos () const { return _sunpos; } - inline void set_sunpos (Point3D p) { _sunpos = p; } - - inline float *sun_vec () const { return (float *)_sun_vec; } - inline float *sun_vec_inv () const { return (float *)_sun_vec_inv; } + inline SGVec4f& sun_vec () { return _sun_vec; } + inline SGVec4f& sun_vec_inv () { return _sun_vec_inv; } // Moon related functions @@ -170,11 +171,8 @@ public: inline double get_moon_gc_lat () const { return _moon_gc_lat; } inline void set_moon_gc_lat (double l) { _moon_gc_lat = l; } - inline Point3D get_moonpos () const { return _moonpos; } - inline void set_moonpos (Point3D p) { _moonpos = p; } - - inline float *moon_vec () const { return (float *)_moon_vec; } - inline float *moon_vec_inv () const { return (float *)_moon_vec_inv; } + inline const SGVec4f& moon_vec () const { return _moon_vec; } + inline const SGVec4f& moon_vec_inv () const { return _moon_vec_inv; } }; #endif // _LIGHT_HXX