1 #ifndef OPENMW_MWRENDER_FOGMANAGER_H
2 #define OPENMW_MWRENDER_FOGMANAGER_H
3 
4 #include <osg/Vec4f>
5 
6 namespace ESM
7 {
8     struct Cell;
9 }
10 
11 namespace MWRender
12 {
13     class FogManager
14     {
15     public:
16         FogManager();
17 
18         void configure(float viewDistance, const ESM::Cell *cell);
19         void configure(float viewDistance, float fogDepth, float underwaterFog, float dlFactor, float dlOffset, const osg::Vec4f &color);
20 
21         osg::Vec4f getFogColor(bool isUnderwater) const;
22         float getFogStart(bool isUnderwater) const;
23         float getFogEnd(bool isUnderwater) const;
24 
25     private:
26         float mLandFogStart;
27         float mLandFogEnd;
28         float mUnderwaterFogStart;
29         float mUnderwaterFogEnd;
30         osg::Vec4f mFogColor;
31         bool mDistantFog;
32 
33         osg::Vec4f mUnderwaterColor;
34         float mUnderwaterWeight;
35         float mUnderwaterIndoorFog;
36     };
37 }
38 
39 #endif
40