00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CAELUM__SKYDOME_H
00022 #define CAELUM__SKYDOME_H
00023
00024 #include "CaelumPrerequisites.h"
00025 #include "CameraBoundElement.h"
00026
00027 namespace Caelum
00028 {
00031 class CAELUM_EXPORT SkyDome : public CameraBoundElement
00032 {
00033 private:
00036 Ogre::SceneNode *mNode;
00037
00040 static const Ogre::String SPHERIC_DOME_NAME;
00041
00044 static const Ogre::String SKY_DOME_MATERIAL_NAME;
00045
00047 Ogre::MaterialPtr mMaterial;
00048
00050 Ogre::Entity* mEntity;
00051
00053 bool mShadersEnabled;
00054
00056 bool mHazeEnabled;
00057
00058 public:
00063 SkyDome (Ogre::SceneManager *sceneMgr, Ogre::SceneNode *caelumRootNode);
00064
00067 virtual ~SkyDome ();
00068
00072 void setSunDirection (const Ogre::Vector3& dir);
00073
00075 void setHazeColour (const Ogre::ColourValue& hazeColour);
00076
00078 void setSkyGradientsImage (const Ogre::String& gradients);
00079
00081 void setAtmosphereDepthImage (const Ogre::String& gradients);
00082
00086 void setHazeEnabled (bool value);
00087
00089 bool getHazeEnabled () const;
00090
00091 void setQueryFlags (uint flags) { mEntity->setQueryFlags (flags); }
00092 uint getQueryFlags () const { return mEntity->getQueryFlags (); }
00093 void setVisibilityFlags (uint flags) { mEntity->setVisibilityFlags (flags); }
00094 uint getVisibilityFlags () const { return mEntity->getVisibilityFlags (); }
00095
00096 public:
00098 virtual void notifyCameraChanged (Ogre::Camera *cam);
00099
00100 protected:
00102 virtual void setFarRadius (Ogre::Real radius);
00103 };
00104 }
00105
00106 #endif //CAELUM__SKYDOME_H