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