SDXFrameWork 0.09 SDXFrameWork

- Main Page
- Related Pages
- Classes

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 {
27 Time::ResetFPS();
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();
36 Time::CheckFPS();
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
SDX::Director::AddScene
static void AddScene(IScene *追加するシーン)
Sceneを追加する.
Definition: Director.h:62
SDX::Camera::Update
void Update()
追跡方法や速度に応じてカメラ位置の更新.
Definition: Camera.h:138
SDX::System::Update
static bool Update(bool 描画更新フラグ=true)
各種更新処理をまとめて行う.
Definition: System.h:92
SDX::IScene
シーンのインターフェース.
Definition: IScene.h:6
SDX::Camera::Now
static Camera * Now()
アクティブなカメラを取得.
Definition: Camera.h:54
SDX::Director::Run
static void Run()
実行開始.
Definition: Director.h:25
SDX::Director::GetScene
static IScene * GetScene(int インデックス)
上からインデックス番目のシーンを取得.
Definition: Director.h:82
SDX::Time::CheckFPS
static void CheckFPS()
FPS計測を更新.
Definition: Timer.h:68
SDX::Director
シーンを管理するクラス.
Definition: Director.h:11
SDX::Time::ResetFPS
static void ResetFPS()
FPSの計測開始.
Definition: Timer.h:62
SDX::Director::Remove
static void Remove()
消滅したSceneを片付ける.
Definition: Director.h:43