00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __NESKYDOME_H
00028 #define __NESKYDOME_H
00029
00030
00037 #include "base.h"
00038 #include "sceneentity.h"
00039 #include "material.h"
00040 #include "vertexbuffer.h"
00041 #include "polygonbuffer.h"
00042 #include "nemath.h"
00043
00044
00045 namespace NeoEngine
00046 {
00047
00048
00049
00050 class Quaternion;
00051
00052
00057 class NEOENGINE_API SkyDome : public SceneEntity
00058 {
00059 public:
00060 DefineVisitable()
00061
00062 public:
00063
00067 enum SKYDOMEPLANE
00068 {
00070 FRONT = 0,
00071
00073 BACK = 1,
00074
00076 LEFT = 2,
00077
00079 RIGHT = 3,
00080
00082 UP = 4,
00083
00085 NUMPLANES = 5
00086 };
00087
00088
00089 protected:
00090
00092 MaterialPtr m_apkMaterial[NUMPLANES];
00093
00095 VertexBufferPtr m_apkVertexBuffer[NUMPLANES];
00096
00098 PolygonBufferPtr m_pkPolygonBuffer;
00099
00101 Matrix m_kOrientation;
00102
00103
00104
00105 public:
00106
00107
00110 SkyDome();
00111
00114 virtual ~SkyDome();
00115
00124 void Set( const Quaternion &rkOrientation, float fDistance, float fCurvature, int iSegments = 16, float fTiles = 1.0f );
00125
00131 void SetMaterial( SKYDOMEPLANE ePlane, MaterialPtr &pkMaterial );
00132
00138 virtual bool Render( Frustum *pkFrustum = 0, bool bForce = false );
00139 };
00140
00141
00142 };
00143
00144
00145 #endif