KisaragiLibrary
 
読み取り中…
検索中…
一致する文字列を見つけられません
Kisaragi_Lib::GameObj::GameObjectFacade クラス

#include <GameObj.hpp>

公開メンバ関数

 GameObjectFacade ()
 
 ~GameObjectFacade ()
 
template<class T>
GameObjBaseCreate ()
 
void FinalizeGameObject ()
 GameObjct派生クラスを全て破棄する
 
void AddDestroy (string _id)
 破棄オブジェクトの登録
 
void AddDestroy (GameObjBase *_obj)
 破棄オブジェクトの登録.
 
void Destroy ()
 オブジェクトを破棄する.
 
void MessageRemoveComponent ()
 
void MessageUpdate ()
 
GameObjBaseFindName (string _name)
 
template<class T>
T & GetGameObject ()
 
template<class T>
T & GetGameObject (string _name)
 

非公開メンバ関数

void InitIDAssignment ()
 

非公開変数類

map< string, GameObjBase * > objects
 
IDAssignment idAssignment
 
map< string, stringdestroyID
 

構築子と解体子

◆ GameObjectFacade()

Kisaragi_Lib::GameObj::GameObjectFacade::GameObjectFacade ( )
51 {
53 }
void InitIDAssignment()
Definition GameObj.cpp:128

◆ ~GameObjectFacade()

Kisaragi_Lib::GameObj::GameObjectFacade::~GameObjectFacade ( )
56 {
58 }
void FinalizeGameObject()
GameObjct派生クラスを全て破棄する
Definition GameObj.cpp:63

関数詳解

◆ Create()

template<class T>
GameObjBase * Kisaragi_Lib::GameObj::GameObjectFacade::Create ( )
inline
133 {
134 //TODO GameObjBaseの派生クラスではないなら
135 /*if (!(typeid(GameObjBase).before(typeid(T))))
136 {
137 assert(false);
138 }*/
139
140 string tmpID = idAssignment.GetID();
141
142 //既に存在するIDなら
143 assert(objects.count(tmpID) == 0);
144
145 //生成
146 objects.emplace(tmpID, new T);
147
148 //ID登録
149 objects[tmpID]->ID(tmpID);
150
151 //Startを呼び出す.
152 objects[tmpID]->Start();
153
154 return objects[tmpID];
155 }
map< string, GameObjBase * > objects
Definition GameObj.hpp:232
IDAssignment idAssignment
Definition GameObj.hpp:233

参照元 WinMain().

◆ FinalizeGameObject()

void Kisaragi_Lib::GameObj::GameObjectFacade::FinalizeGameObject ( )

GameObjct派生クラスを全て破棄する

GameObjcthNXSĔj

64 {
65 for (auto& obj : objects)
66 {
67 delete obj.second;
68 }
69
70 objects.clear();
71 }

参照元 ~GameObjectFacade().

◆ AddDestroy() [1/2]

void Kisaragi_Lib::GameObj::GameObjectFacade::AddDestroy ( string _id)

破棄オブジェクトの登録

jIuWFNg̓o^

引数
_id破棄オブジェクトのID
引数
_idjIuWFNgID
78 {
79 //jIuWFNg̏dȂ悤mapɓo^
80 destroyID.emplace(_id, _id);
81 }
map< string, string > destroyID
Definition GameObj.hpp:234

参照元 AddDestroy(), Kisaragi_Lib::GameObj::GameObjBase::Destroy().

◆ AddDestroy() [2/2]

void Kisaragi_Lib::GameObj::GameObjectFacade::AddDestroy ( GameObjBase * _obj)

破棄オブジェクトの登録.

jIuWFNg̓o^.

引数
_obj破棄オブジェクト
引数
_objjIuWFNg
88 {
89 AddDestroy(_obj->ID());
90 }
string ID() const
Definition GameObj.cpp:27
void AddDestroy(string _id)
破棄オブジェクトの登録
Definition GameObj.cpp:77

◆ Destroy()

void Kisaragi_Lib::GameObj::GameObjectFacade::Destroy ( )

オブジェクトを破棄する.

IuWFNgj.

96 {
97 for (auto& id : destroyID)
98 {
99 //w肳ꂽID݂ȂȂvOI
100 assert(objects.count(id.second) == 1);
101 //ID
102 idAssignment.OpenID(id.second);
103 //IuWFNgj
104 delete objects[id.second];
105 //vf̉
106 objects.erase(id.second);
107 }
108 //jΏIDZbg
109 destroyID.clear();
110 }

◆ MessageRemoveComponent()

void Kisaragi_Lib::GameObj::GameObjectFacade::MessageRemoveComponent ( )
113 {
114 for (auto& obj : objects)
115 {
116 obj.second->MessageComponentList("RemoveComponent");
117 }
118 }

参照元 KisaragiFacade::MainRoop().

◆ MessageUpdate()

void Kisaragi_Lib::GameObj::GameObjectFacade::MessageUpdate ( )
121 {
122 for (auto& obj : objects)
123 {
124 obj.second->Update();
125 }
126 }

◆ FindName()

GameObjBase * Kisaragi_Lib::GameObj::GameObjectFacade::FindName ( string _name)
inline
185 {
186 for (auto& obj : objects)
187 {
188 if (obj.second->GetName() == _name)
189 {
190 return obj.second;
191 }
192 }
193 }

◆ GetGameObject() [1/2]

template<class T>
T & Kisaragi_Lib::GameObj::GameObjectFacade::GetGameObject ( )
inline
197 {
198 for (auto& obj : objects)
199 {
200 if (typeid(*obj.second).name() == typeid(T).name())
201 {
202 return *((T*)obj.second);
203 }
204 }
205 }

◆ GetGameObject() [2/2]

template<class T>
T & Kisaragi_Lib::GameObj::GameObjectFacade::GetGameObject ( string _name)
inline
209 {
210 std::vector<GameObjBase*> objs;
211
212 for (auto& obj : objects)
213 {
214 if (typeid(*obj.second).name() == typeid(T).name())
215 {
216 objs.push_back(((T*)obj.second));
217 }
218 }
219
220 for (auto& obj : objs)
221 {
222 if (obj->GetName() == _name)
223 {
224 return *((T*)obj);
225
226 }
227 }
228 }

◆ InitIDAssignment()

void Kisaragi_Lib::GameObj::GameObjectFacade::InitIDAssignment ( )
private
129 {
130 idAssignment.IDHead("GameObj_");
131 }

参照元 GameObjectFacade().

メンバ詳解

◆ objects

map<string,GameObjBase*> Kisaragi_Lib::GameObj::GameObjectFacade::objects
private

◆ idAssignment

IDAssignment Kisaragi_Lib::GameObj::GameObjectFacade::idAssignment
private

◆ destroyID

map<string,string> Kisaragi_Lib::GameObj::GameObjectFacade::destroyID
private

参照元 AddDestroy(), Destroy().


このクラス詳解は次のファイルから抽出されました: