Scene.h
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:2k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. #ifndef _SCENE_H_
  2. #define _SCENE_H_
  3. #include "Stdinc.h"
  4. #include "Singleton.h"
  5. #include "Base.h"
  6. class SceneManager;
  7. #define FADEIN     0
  8. #define FADEOUT    1
  9. class CScene
  10. {
  11.     friend SceneManager;
  12.     class CFade
  13.     {
  14.         public:
  15.             float   m_fTime;
  16.             bool    m_bOn;
  17.             float   m_fColorR, m_fColorG, m_fColorB;
  18.     };
  19.     private:
  20.         std::string     m_strSceneName;
  21.         bool            m_bRunning;
  22.         int             m_iVectorTag;
  23.     protected:
  24.         float           m_fLength;
  25.         float           m_fRunningTime;
  26.         
  27.         CFade           m_fFades[2];
  28.         int             m_iQuality;
  29.     public:
  30.         virtual bool Initialize() { return true; };
  31.         virtual bool Cleanup() { return true; };
  32.         virtual bool Update() { return true; };
  33.         virtual bool Render( int iScreenWidth, int iScreenHeight ) { return true; };
  34.         inline void SetRunningTime( float fTime )
  35.         { m_fRunningTime = fTime; };
  36.         inline std::string GetSceneName()
  37.         { return m_strSceneName; };
  38.         inline void SetSceneName( std::string strName )
  39.         { m_strSceneName = strName; };
  40.         CScene();
  41.         ~CScene();
  42. };
  43. class SceneManager : public Singleton<SceneManager>
  44. {
  45.     private:
  46.         std::vector<CScene*>    m_vScenes;
  47.         std::vector<int>        m_vPlaylist;
  48.         bool            m_bRunning;
  49.         bool            m_bLoop;
  50.         int             m_iCurrentScene;
  51.         float           m_fStartTime;
  52.         float           m_fSceneStart;
  53.         int             m_iWindowWidth;
  54.         int             m_iWindowHeight;
  55.         int             m_iQuality;
  56.         void HandleFades( CScene* pScene, float fRunTime );
  57.     public:
  58.         bool AddScene( CScene* pScene );
  59.         bool ClearScenes();
  60.         void SetResolution( int iWidth, int iHeight );
  61.         bool InitializeScenes();
  62.         bool CleanupScenes();
  63.         bool Start( bool bLoop );
  64.         bool Stop();
  65.         bool UpdateAndRender();
  66.         SceneManager();
  67.         ~SceneManager();
  68. };
  69. #endif