paysages3d/src/definition/AtmosphereDefinition.h

74 lines
1.5 KiB
C
Raw Normal View History

2013-11-15 23:27:40 +00:00
#ifndef ATMOSPHEREDEFINITION_H
#define ATMOSPHEREDEFINITION_H
#include "definition_global.h"
#include "BaseDefinition.h"
2013-12-26 16:30:22 +00:00
#include "Vector3.h"
2013-11-15 23:27:40 +00:00
#include "Color.h"
namespace paysages {
namespace definition {
2014-03-01 00:34:34 +00:00
class DEFINITIONSHARED_EXPORT AtmosphereDefinition : public BaseDefinition
2013-11-15 23:27:40 +00:00
{
2013-12-26 16:30:22 +00:00
public:
typedef struct
{
Vector3 location;
double radius;
Color col;
} Star;
2013-11-15 23:27:40 +00:00
public:
typedef enum
{
2013-12-15 13:28:46 +00:00
ATMOSPHERE_MODEL_DISABLED = 0,
ATMOSPHERE_MODEL_BRUNETON = 1
2013-11-15 23:27:40 +00:00
} AtmosphereModel;
typedef enum
{
ATMOSPHERE_PRESET_CLEAR_DAY = 0,
ATMOSPHERE_PRESET_CLEAR_SUNSET = 1,
ATMOSPHERE_PRESET_HAZY_MORNING = 2,
ATMOSPHERE_PRESET_FOGGY = 3,
ATMOSPHERE_PRESET_STORMY = 4
} AtmospherePreset;
public:
AtmosphereDefinition(BaseDefinition* parent);
virtual ~AtmosphereDefinition();
virtual void save(PackStream* stream) const override;
virtual void load(PackStream* stream) override;
virtual void copy(BaseDefinition* destination) const override;
virtual void validate() override;
void applyPreset(AtmospherePreset preset);
2013-12-26 16:30:22 +00:00
void generateStars(int count);
2013-11-15 23:27:40 +00:00
public:
AtmosphereModel model;
int hour;
int minute;
double humidity;
Color sun_color;
double sun_radius;
double dome_lighting;
2013-12-26 15:55:37 +00:00
double moon_radius;
double moon_theta;
double moon_phi;
2013-11-15 23:27:40 +00:00
double _daytime;
2013-12-26 16:30:22 +00:00
std::vector<Star> stars;
2013-11-15 23:27:40 +00:00
};
}
}
#endif // ATMOSPHEREDEFINITION_H