00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CAELUM__MOON_H
00022 #define CAELUM__MOON_H
00023
00024 #include "CaelumPrerequisites.h"
00025 #include "SkyLight.h"
00026 #include "FastGpuParamRef.h"
00027 #include "PrivatePtr.h"
00028
00029 namespace Caelum
00030 {
00035 class CAELUM_EXPORT Moon:
00036 public BaseSkyLight
00037 {
00038 public:
00040 static const Ogre::String MOON_MATERIAL_NAME;
00041
00043 static const Ogre::String MOON_BACKGROUND_MATERIAL_NAME;
00044
00045 private:
00047 PrivateMaterialPtr mMoonMaterial;
00048
00050 PrivateBillboardSetPtr mMoonBB;
00051
00053 PrivateMaterialPtr mBackMaterial;
00054
00056 PrivateBillboardSetPtr mBackBB;
00057
00059 Ogre::Degree mAngularSize;
00060
00061 struct Params {
00062 void setup(Ogre::GpuProgramParametersSharedPtr fpParams);
00063
00064 Ogre::GpuProgramParametersSharedPtr fpParams;
00065 FastGpuParamRef phase;
00066 } mParams;
00067
00068 public:
00071 Moon (
00072 Ogre::SceneManager *sceneMgr,
00073 Ogre::SceneNode *caelumRootNode,
00074 const Ogre::String& moonTextureName = "moon_disc.dds",
00075 Ogre::Degree angularSize = Ogre::Degree(3.77f));
00076
00077 virtual ~Moon ();
00078
00082 void setMoonTexture (const Ogre::String &textureName);
00083
00087 void setMoonTextureAngularSize(const Ogre::Degree& moonTextureAngularSize);
00088
00092 void setBodyColour (const Ogre::ColourValue &colour);
00093
00095 void setPhase (Ogre::Real phase);
00096
00097 public:
00099 virtual void notifyCameraChanged (Ogre::Camera *cam);
00100
00101 virtual void setQueryFlags (uint flags);
00102 virtual uint getQueryFlags () const;
00103 virtual void setVisibilityFlags (uint flags);
00104 virtual uint getVisibilityFlags () const;
00105 };
00106 }
00107
00108 #endif // CAELUM__MOON_H