00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CAELUM__SUN_H
00022 #define CAELUM__SUN_H
00023
00024 #include "CaelumPrerequisites.h"
00025 #include "CameraBoundElement.h"
00026 #include "SkyLight.h"
00027
00028 namespace Caelum
00029 {
00030 class BaseSkyLight;
00031 class SphereSun;
00032 class SpriteSun;
00033
00034 typedef SpriteSun Sun;
00035
00039 class CAELUM_EXPORT SphereSun : public BaseSkyLight
00040 {
00041 public:
00043 static const Ogre::String SUN_MATERIAL_NAME;
00044
00045 private:
00047 Ogre::Entity *mSunEntity;
00048
00050 Ogre::MaterialPtr mSunMaterial;
00051
00052 public:
00056 SphereSun (Ogre::SceneManager *sceneMgr,
00057 Ogre::SceneNode *caelumRootNode,
00058 const Ogre::String &meshName = "sphere.mesh");
00059
00063 virtual ~SphereSun ();
00064
00068 void setBodyColour (const Ogre::ColourValue &colour);
00069
00070 public:
00072 virtual void notifyCameraChanged (Ogre::Camera *cam);
00073
00074 virtual void setQueryFlags (uint flags) { mSunEntity->setQueryFlags (flags); }
00075 virtual uint getQueryFlags () const { return mSunEntity->getQueryFlags (); }
00076 virtual void setVisibilityFlags (uint flags) { mSunEntity->setVisibilityFlags (flags); }
00077 virtual uint getVisibilityFlags () const { return mSunEntity->getVisibilityFlags (); }
00078 };
00079
00082 class CAELUM_EXPORT SpriteSun : public BaseSkyLight {
00083 public:
00085 static const Ogre::String SUN_MATERIAL_NAME;
00086
00087 protected:
00089 Ogre::BillboardSet* mSunBillboardSet;
00090
00092 Ogre::MaterialPtr mSunMaterial;
00093
00095 Ogre::Degree mSunTextureAngularSize;
00096
00097 public:
00101 SpriteSun (Ogre::SceneManager *sceneMgr,
00102 Ogre::SceneNode *caelumRootNode,
00103 const Ogre::String& sunTextureName = "sun_disc.png",
00104 const Ogre::Degree& sunTextureAngularSize = Ogre::Degree(3.77f));
00105
00109 virtual ~SpriteSun ();
00110
00114 void setSunTexture (const Ogre::String &textureName);
00115
00119 void setSunTextureAngularSize(const Ogre::Degree& sunTextureAngularSize);
00120
00124 void setBodyColour (const Ogre::ColourValue &colour);
00125
00126 public:
00128 virtual void notifyCameraChanged (Ogre::Camera *cam);
00129
00130 virtual void setQueryFlags (uint flags) { mSunBillboardSet->setQueryFlags (flags); }
00131 virtual uint getQueryFlags () const { return mSunBillboardSet->getQueryFlags (); }
00132 virtual void setVisibilityFlags (uint flags) { mSunBillboardSet->setVisibilityFlags (flags); }
00133 virtual uint getVisibilityFlags () const { return mSunBillboardSet->getVisibilityFlags (); }
00134 };
00135 }
00136
00137 #endif // CAELUM__SUN_H