53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
|
#ifndef ATMOSPHERE_H
|
||
|
#define ATMOSPHERE_H
|
||
|
|
||
|
#ifndef ATMOSPHERE_EXTERN
|
||
|
#define ATMOSPHERE_EXTERN extern
|
||
|
#endif
|
||
|
|
||
|
#include "Color.h"
|
||
|
#include "Point.h"
|
||
|
|
||
|
const int weather_max_name = 64;
|
||
|
class Weather {
|
||
|
public:
|
||
|
Weather();
|
||
|
Weather(const char *n, GLfloat fd, GLfloat fs = 1, Color fc = white,
|
||
|
Color s1 = blue, Color s2 = white,
|
||
|
GLfloat sb = 1,
|
||
|
GLenum ls = GL_LIGHT0, GLenum la = GL_LIGHT1);
|
||
|
~Weather();
|
||
|
|
||
|
Weather operator=(Weather a);
|
||
|
|
||
|
/* The sun position is used to determine how light / dark it is */
|
||
|
void apply(Point sun);
|
||
|
void draw_sky(Point sun);
|
||
|
|
||
|
/* This is how much to blur shadows due to haze or fog */
|
||
|
GLfloat shadow_blur();
|
||
|
|
||
|
char name[weather_max_name];
|
||
|
|
||
|
GLfloat fog_density;
|
||
|
Color fog_color;
|
||
|
/* Fog spread relates the height to the density of the fog -- 1.0
|
||
|
* leads to uniform fog */
|
||
|
GLfloat fog_spread;
|
||
|
|
||
|
Color sky_top;
|
||
|
Color sky_bottom;
|
||
|
|
||
|
GLenum light_sun, light_ambient;
|
||
|
GLfloat sun_brightness;
|
||
|
|
||
|
private:
|
||
|
};
|
||
|
const int nweathers = 4;
|
||
|
extern Weather weathers[nweathers];
|
||
|
const int def_weather_index = 0;
|
||
|
|
||
|
#undef ATMOSPHERE_EXTERN
|
||
|
|
||
|
#endif
|