SDXFrameWork  0.09
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Director.h
1 #pragma once//©SDXFramework http://sourceforge.jp/projects/dxframework/
2 #include <Framework/IScene.h>
3 #include <Utility/Timer.h>
4 #include <Multimedia/Input.h>
5 #include <Framework/Camera.h>
6 
7 namespace SDX
8 {
11 class Director
12 {
13 private:
14  std::vector< std::shared_ptr<IScene> > scenes;
15 
16  Director(){};
17 
18  static Director& Single()
19  {
20  static Director instance;
21  return instance;
22  }
23 public:
25  static void Run()
26  {
28 
29  while( System::Update() )
30  {
31  if( Single().scenes.size() == 0 ) break;
32  Single().scenes.back()->Update();
33  Single().scenes.back()->Draw();
34  //更新処理
35  if( Camera::Now() ) Camera::Now()->Update();
37 
38  Remove();
39  }
40  }
41 
43  static void Remove()
44  {
45  auto it = Single().scenes.begin();
46 
47  while( it != Single().scenes.end() )
48  {
49  if( (*it)->IsEnd() )
50  {
51  it = Single().scenes.erase(it);
52  if(Single().scenes.size() == 0 )break;
53  continue;
54  }
55  it++;
56  }
57  }
58 
62  static void AddScene( IScene* 追加するシーン )
63  {
64  //既に存在する場合移動のみ
65  auto it = Single().scenes.begin();
66  while( it != Single().scenes.end() )
67  {
68  if ((*it).get() == 追加するシーン)
69  {
70  Single().scenes.push_back( (*it) );
71  return;
72  }
73  ++it;
74  }
75  //存在していない場合初期化して追加
76  追加するシーン->Init();
77  Single().scenes.emplace_back(追加するシーン);
78  }
79 
82  static IScene* GetScene(int インデックス)
83  {
84  return Single().scenes[Single().scenes.size() - インデックス - 1].get();
85  }
86 };
87 }
88 
89 
90 
91 
92 
93 
94 
95 
96 
static void AddScene(IScene *追加するシーン)
Sceneを追加する.
Definition: Director.h:62
void Update()
追跡方法や速度に応じてカメラ位置の更新.
Definition: Camera.h:138
static bool Update(bool 描画更新フラグ=true)
各種更新処理をまとめて行う.
Definition: System.h:92
シーンのインターフェース.
Definition: IScene.h:6
static Camera * Now()
アクティブなカメラを取得.
Definition: Camera.h:54
static void Run()
実行開始.
Definition: Director.h:25
static IScene * GetScene(int インデックス)
上からインデックス番目のシーンを取得.
Definition: Director.h:82
static void CheckFPS()
FPS計測を更新.
Definition: Timer.h:68
シーンを管理するクラス.
Definition: Director.h:11
static void ResetFPS()
FPSの計測開始.
Definition: Timer.h:62
static void Remove()
消滅したSceneを片付ける.
Definition: Director.h:43