00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GROUNDFOG_H
00022 #define GROUNDFOG_H
00023
00024 #include "CaelumPrerequisites.h"
00025 #include "CameraBoundElement.h"
00026
00027 namespace Caelum
00028 {
00045 class CAELUM_EXPORT GroundFog: public CameraBoundElement
00046 {
00047 public:
00048 static const Ogre::String DEFAULT_PASS_NAME;
00049
00052 GroundFog (Ogre::SceneManager *scene,
00053 Ogre::SceneNode *caelumRootNode,
00054 const Ogre::String &domeMaterialName = "CaelumGroundFogDome",
00055 const Ogre::String &domeEntityName = "CaelumGroundFogDome");
00056
00059 virtual ~GroundFog ();
00060
00063 typedef std::set<Ogre::Pass *> PassSet;
00064
00069 PassSet& getPasses();
00070
00075 const PassSet& getPasses () const;
00076
00081 void findFogPassesByName (const Ogre::String& passName = DEFAULT_PASS_NAME);
00082
00084 void setDensity (Ogre::Real density);
00085
00087 Ogre::Real getDensity () const;
00088
00090 void setColour (const Ogre::ColourValue &colour);
00091
00093 const Ogre::ColourValue getColour () const;
00094
00096 void setVerticalDecay (Ogre::Real verticalDecay);
00097
00099 Ogre::Real getVerticalDecay () const;
00100
00104 void setGroundLevel (Ogre::Real GroundLevela);
00105
00108 Ogre::Real getGroundLevel () const;
00109
00113 void forceUpdate ();
00114
00115 private:
00117 Ogre::Real mDensity;
00118
00120 Ogre::Real mVerticalDecay;
00121
00123 Ogre::Real mGroundLevel;
00124
00126 Ogre::ColourValue mFogColour;
00127
00129 PassSet mPasses;
00130
00132 Ogre::MaterialPtr mDomeMaterial;
00133
00135 Ogre::SceneNode *mDomeNode;
00136
00138 Ogre::Entity *mDomeEntity;
00139
00141 Ogre::SceneManager* mScene;
00142
00143
00144 void updateSkyFogging();
00145
00146 protected:
00148 virtual void setFarRadius (Ogre::Real radius);
00149
00150 public:
00152 virtual void notifyCameraChanged (Ogre::Camera *cam);
00153
00154 void setQueryFlags (uint flags) { mDomeEntity->setQueryFlags (flags); }
00155 uint getQueryFlags () const { return mDomeEntity->getQueryFlags (); }
00156 void setVisibilityFlags (uint flags) { mDomeEntity->setVisibilityFlags (flags); }
00157 uint getVisibilityFlags () const { return mDomeEntity->getVisibilityFlags (); }
00158 };
00159 }
00160
00161 #endif //GROUNDFOG_H