added (incomplete) WeatherManager, created by World
parent
83753dc384
commit
c1fb5ce769
@ -0,0 +1,99 @@
|
||||
#ifndef GAME_MWWORLD_WEATHER_H
|
||||
#define GAME_MWWORLD_WEATHER_H
|
||||
|
||||
#include <OgreString.h>
|
||||
#include <OgreColourValue.h>
|
||||
|
||||
namespace MWRender
|
||||
{
|
||||
class RenderingManager;
|
||||
}
|
||||
|
||||
namespace MWWorld
|
||||
{
|
||||
/// Defines a single weather setting
|
||||
struct Weather
|
||||
{
|
||||
Ogre::String mCloudTexture;
|
||||
|
||||
// Sky (atmosphere) colors
|
||||
Ogre::ColourValue mSkySunriseColor;
|
||||
Ogre::ColourValue mSkyDayColor;
|
||||
Ogre::ColourValue mSkySunsetColor;
|
||||
Ogre::ColourValue mSkyNightColor;
|
||||
|
||||
// Fog colors
|
||||
Ogre::ColourValue mFogSunriseColor;
|
||||
Ogre::ColourValue mFogDayColor;
|
||||
Ogre::ColourValue mFogSunsetColor;
|
||||
Ogre::ColourValue mFogNightColor;
|
||||
|
||||
// Ambient lighting colors
|
||||
Ogre::ColourValue mAmbientSunriseColor;
|
||||
Ogre::ColourValue mAmbientDayColor;
|
||||
Ogre::ColourValue mAmbientSunsetColor;
|
||||
Ogre::ColourValue mAmbientNightColor;
|
||||
|
||||
// Sun (directional) lighting colors
|
||||
Ogre::ColourValue mSunSunriseColor;
|
||||
Ogre::ColourValue mSunDayColor;
|
||||
Ogre::ColourValue mSunSunsetColor;
|
||||
Ogre::ColourValue mSunNightColor;
|
||||
|
||||
// Fog depth/density
|
||||
float mLandFogDayDepth;
|
||||
float mLandFogNightDepth;
|
||||
|
||||
// Color modulation for the sun itself during sunset (not completely sure)
|
||||
Ogre::ColourValue mSunDiscSunsetColour;
|
||||
|
||||
// Duration of weather transition
|
||||
// the INI value is 0.015, so I suppose this is measured in Morrowind-days? (0.015 days = 36 minutes in Morrowind)
|
||||
float mTransitionDelta;
|
||||
|
||||
// No idea what this one is used for?
|
||||
float mWindSpeed;
|
||||
|
||||
// Cloud animation speed multiplier
|
||||
float mCloudSpeed;
|
||||
|
||||
// Multiplier for clouds transparency?
|
||||
float mCloudsMaximumPercent;
|
||||
|
||||
// Value between 0 and 1, defines the strength of the sun glare effect
|
||||
float mGlareView;
|
||||
|
||||
// Sound effect
|
||||
// This is used for Blight, Ashstorm and Blizzard (Bloodmoon)
|
||||
Ogre::String mAmbientLoopSoundID;
|
||||
};
|
||||
|
||||
///
|
||||
/// Interface for weather settings
|
||||
///
|
||||
class WeatherManager
|
||||
{
|
||||
public:
|
||||
WeatherManager(MWRender::RenderingManager*);
|
||||
|
||||
/**
|
||||
* Change the weather setting
|
||||
* @param weather
|
||||
* new weather setting to use
|
||||
* @param instant
|
||||
* if true, the weather changes instantly. if false, it slowly starts transitioning.
|
||||
*/
|
||||
void setWeather(const Weather& weather, bool instant=false);
|
||||
|
||||
/**
|
||||
* Per-frame update
|
||||
* @param duration
|
||||
*/
|
||||
void update(float duration);
|
||||
|
||||
private:
|
||||
MWRender::RenderingManager* mRendering;
|
||||
};
|
||||
}
|
||||
|
||||
#endif // GAME_MWWORLD_WEATHER_H
|
Loading…
Reference in New Issue