"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSEngine/Src/Scene/LSESceneManager.h

00001 
00018 #ifndef __LSE_SCENEMANAGER_H__
00019 #define __LSE_SCENEMANAGER_H__
00020 
00021 #include "../LSEEngine.h"
00022 #include "../Camera/LSECamera.h"
00023 #include "../Lights/LSEDirLight.h"
00024 #include "../Lights/LSELightBase.h"
00025 #include "../Models/LSEDrawableModelInstance.h"
00026 #include "../Models/LSEModelInstance.h"
00027 #include "RenderQueue/LSGRenderQueueSet.h"
00028 
00029 namespace lse {
00030 
00031         // == Enumerations.
00035         enum LSE_SCREENS {
00036                 LSE_S_FULL_SCREEN,                                              
00037                 LSE_S_2P_SCREEN_UP,                                             
00038                 LSE_S_2P_SCREEN_DOWN,                                   
00039                 LSE_S_2P_SCREEN_LEFT,                                   
00040                 LSE_S_2P_SCREEN_RIGHT,                                  
00041                 LSE_S_4P_UP_LEFT,                                               
00042                 LSE_S_4P_UP_RIGHT,                                              
00043                 LSE_S_4P_BOTTOM_LEFT,                                   
00044                 LSE_S_4P_BOTTOM_RIGHT,                                  
00046                 LSE_S_TOTAL                                                             
00047         };
00048 
00057         class CSceneManager {
00058         public :
00059                 // == Various constructors.
00060                 LSE_CALLCTOR                                                    CSceneManager();
00061                 LSE_CALLCTOR                                                    ~CSceneManager();
00062 
00063 
00064                 // == Functions.
00072                 CDrawableModelInstancePtr LSE_CALL              CreateDrawableModelInstance( const LSCHAR * _pcFile );
00073 
00077                 LSVOID LSE_CALL                                                 Reset();
00078 
00084                 LSVOID LSE_CALL                                                 Render( LSE_SCREENS _sSection = LSE_S_FULL_SCREEN );
00085 
00093                 LSVOID LSE_CALL                                                 Render( CSharedCameraPtr _cpCam, LSBOOL _bUpdateCamState = true );
00094 
00102                 LSVOID LSE_CALL                                                 SetCamera( CSharedCameraPtr _cpCam, LSE_SCREENS _sScreen = LSE_S_FULL_SCREEN );
00103 
00110                 CDirLightPtr LSE_CALL                                   CreateDirLight();
00111 
00117                 CFloatTexture & LSE_CALL                                GetShadowMapTexture();
00118 
00119 
00120         protected :
00121                 // == Members.
00125                 CVector<CActorPtr, LSUINT32>                    m_vActors;
00126 
00130                 CSharedCameraPtr                                                m_cpCams[LSE_S_TOTAL];
00131 
00135                 CVector<CLightBasePtr>                                  m_vLights;
00136 
00140                 CDrawableModelInstance::CDrawableMeshInstanceArray
00141                                                                                                 m_miaMainMeshList;
00142 
00146                 CRenderQueueSet                                                 m_rqsMainRenderQueueSet;
00147 
00151                 CVector3                                                                m_vFrustumCorners[8];
00152 
00156                 CVector<CDrawableModelInstance::CDrawableMeshInstanceArray, LSUINT32>
00157                                                                                                 m_vLightMeshInstances;
00158 
00162                 CVector<CRenderQueueSet, LSUINT32>              m_vLightRenderQueues;
00163 
00167                 CVectorPoD<CVector3, LSUINT32>                  m_vLightUvDepthFactors;
00168 
00172                 CFloatTexture                                                   m_ftShadowMapTex;
00173                 
00177                 LSBOOL                                                                  m_bShadows;
00178 
00182                 CVector3                                                                m_vCamDir;
00183 
00187                 CVector3                                                                m_vCamPos;
00188 
00192                 CFrustum                                                                m_fFrustum;
00193 
00197                 CMatrix4x4                                                              m_mProj;
00198 
00202                 CMatrix4x4                                                              m_mView;
00203 
00207                 CMatrix4x4                                                              m_mInvView;
00208 
00212                 static CMatrix4x4                                               m_mBias;
00213 
00214 
00215 
00216                 // == Functions.
00222                 LSVOID LSE_CALL                                                 RenderDirLightShadowMapOpaque( LSUINT32 _ui32Index );
00223 
00229                 LSVOID LSE_CALL                                                 CreateDirLightShadowMapMatrix( LSUINT32 _ui32Index );
00230 
00236                 LSVOID LSE_CALL                                                 RenderAmbientPassOpaque( CRenderQueue &_rqSet );
00237 
00243                 LSVOID LSE_CALL                                                 RenderAmbientPassTrans( CRenderQueue &_rqSet );
00244 
00250                 LSVOID LSE_CALL                                                 RenderOpaque( CRenderQueue &_rqSet );
00251 
00257                 LSVOID LSE_CALL                                                 RenderTrans( CRenderQueue &_rqSet );
00258 
00264                 LSBOOL LSE_CALL                                                 CreateMainShadowMapTexture();
00265 
00266         };
00267 
00268 
00269         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00270         // DEFINITIONS
00271         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00272         // == Types.
00276         typedef CSharedPtr<CSceneManager>                               CSceneManagerPtr;
00277 
00278 }       // namespace lse
00279 
00280 #endif  // __LSE_SCENEMANAGER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator