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

#include <ComponentFacade.hpp>

公開メンバ関数

 ComponentFacade ()
 
 ~ComponentFacade ()
 
template<class T>
ComponentBaseCreate ()
 コンポーネントを作成する
 
void FinalizeComponent ()
 Component派生クラスを全て破棄する
 
void AddDestroy (string _id)
 破棄オブジェクトの登録
 
void AddDestroy (ComponentBase *_com)
 破棄オブジェクトの登録.
 
void Destroy ()
 コンポーネントを破棄する.
 

非公開変数類

IDAssignment idAssignment
 
map< string, ComponentBase * > components
 
map< string, stringdestroyID
 

構築子と解体子

◆ ComponentFacade()

Kisaragi_Lib::ComponentFacade::ComponentFacade ( )
inline
26 {
27 idAssignment.IDHead("Component_");
28 }
IDAssignment idAssignment
Definition ComponentFacade.hpp:20

◆ ~ComponentFacade()

Kisaragi_Lib::ComponentFacade::~ComponentFacade ( )
inline
31 {
33 }
void FinalizeComponent()
Component派生クラスを全て破棄する
Definition ComponentFacade.hpp:69

関数詳解

◆ Create()

template<class T>
ComponentBase * Kisaragi_Lib::ComponentFacade::Create ( )
inline

コンポーネントを作成する

テンプレート引数
Tコンポーネントの型
戻り値
コンポーネントの参照
42 {
43 //ComponentBaseの派生クラスではないなら
44 //TODO 派生クラスを判定外に
45 //if (!(typeid(ComponentBase).before(typeid(T)) || typeid(ComponentBase) == typeid(T)))
46 //{
47 // assert(false);
48 //}
49
50 string tmpID = idAssignment.GetID();
51
52 //既に存在するIDなら
53 assert(components.count(tmpID) == 0);
54
55 //生成
56 components.emplace(tmpID, new T);
57
58 //ID登録
59 components[tmpID]->ID(tmpID);
60
61 components[tmpID]->Start();
62
63 return components[tmpID];
64 }
map< string, ComponentBase * > components
Definition ComponentFacade.hpp:21

参照元 Kisaragi_Lib::ComponentList::AddComponent().

◆ FinalizeComponent()

void Kisaragi_Lib::ComponentFacade::FinalizeComponent ( )
inline

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

70 {
71 for (auto& com : components)
72 {
73 delete com.second;
74 }
75
76 components.clear();
77 }

参照元 ~ComponentFacade().

◆ AddDestroy() [1/2]

void Kisaragi_Lib::ComponentFacade::AddDestroy ( string _id)
inline

破棄オブジェクトの登録

引数
_id破棄オブジェクトのID
84 {
85 //破棄オブジェクトの重複がないようにmapに登録
86 destroyID.emplace(_id, _id);
87 }
map< string, string > destroyID
Definition ComponentFacade.hpp:22

参照元 AddDestroy(), Kisaragi_Lib::ComponentList::AddRemoveComponent(), Kisaragi_Lib::ComponentList::AddRemoveComponent(), Kisaragi_Lib::ComponentList::Destroy().

◆ AddDestroy() [2/2]

void Kisaragi_Lib::ComponentFacade::AddDestroy ( ComponentBase * _com)
inline

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

引数
_obj破棄オブジェクト
94 {
95 AddDestroy(_com->ID());
96 }
void AddDestroy(string _id)
破棄オブジェクトの登録
Definition ComponentFacade.hpp:83

◆ Destroy()

void Kisaragi_Lib::ComponentFacade::Destroy ( )
inline

コンポーネントを破棄する.

102 {
103 for (auto& id : destroyID)
104 {
105 //指定されたIDが存在しないならプログラム終了
106 assert(components.count(id.second) == 1);
107 //ID解放
108 idAssignment.OpenID(id.second);
109 //オブジェクト破棄
110 delete components[id.second];
111 //要素の解放
112 components.erase(id.second);
113 }
114 //破棄対象IDをリセット
115 destroyID.clear();
116 }

参照元 KisaragiFacade::MainRoop().

メンバ詳解

◆ idAssignment

IDAssignment Kisaragi_Lib::ComponentFacade::idAssignment
private

◆ components

map<string, ComponentBase*> Kisaragi_Lib::ComponentFacade::components
private

◆ destroyID

map<string, string> Kisaragi_Lib::ComponentFacade::destroyID
private

参照元 AddDestroy(), Destroy().


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