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

#include <ComponentList.hpp>

公開メンバ関数

template<class T>
void AddComponent (GameObj::GameObjBase *_obj)
 コンポーネントを追加
 
template<class T>
T & GetComponent ()
 コンポーネントを取得する
 
template<class T>
T & TryGetComponent ()
 コンポーネントを取得する
 
void AddRemoveComponent (ComponentBase *_com)
 
void AddRemoveComponent (string _id)
 
void RemoveComponent ()
 コンポーネント除去.
 
void Destroy ()
 

非公開変数類

map< string, ComponentBase * > components
 
vector< stringremovesComID
 

関数詳解

◆ AddComponent()

template<class T>
void Kisaragi_Lib::ComponentList::AddComponent ( GameObj::GameObjBase * _obj)
inline

コンポーネントを追加

テンプレート引数
T追加したいコンポーネントの型
34 {
35 //component派生クラスではないなら.
36 //TODO 派生クラス判定
37 //assert(typeid(ComponentBase).before(typeid(T)));
38
39 //Componentを受け取る
40 ComponentBase* tmp = GetComponentFacade().Create<T>();
41
42 //生成失敗
43 assert(tmp != nullptr);
44
45 tmp->GameObj(_obj);
46
47 components.emplace(tmp->ID(), tmp);
48 }
ComponentBase * Create()
コンポーネントを作成する
Definition ComponentFacade.hpp:41
map< string, ComponentBase * > components
Definition ComponentList.hpp:24
ComponentFacade & GetComponentFacade()
Definition ComponentFacade.cpp:5

◆ GetComponent()

template<class T>
T & Kisaragi_Lib::ComponentList::GetComponent ( )
inline

コンポーネントを取得する

テンプレート引数
T捜索するコンポーネントの型
戻り値
成功時 : 発見したコンポーネントのポインタ

失敗時 : プログラム終了

60 {
61 //TODO 派生クラス以外をはじく
62 //component派生クラスではないなら.
63 //assert(typeid(ComponentBase).before(typeid(T)));
64
65 for (auto& c : components)
66 {
67 if (typeid(*c.second).name() == typeid(T).name())
68 {
69 return *((T*)c.second->GetThisComponent());
70 }
71 }
72 //ない場合の処理
73
74 //せっとしてないよー.
75 assert(false);
76 }

◆ TryGetComponent()

template<class T>
T & Kisaragi_Lib::ComponentList::TryGetComponent ( )
inline

コンポーネントを取得する

テンプレート引数
T捜索するコンポーネントの型
戻り値
成功時 : 発見したコンポーネントのポインタ

失敗時 : 何も返さない

88 {
89 //component派生クラスではないなら.
90 assert(typeid(ComponentBase).before(typeid(T)));
91
92 for (auto& c : components)
93 {
94 if (typeid(*c.second).name() == typeid(T).name())
95 {
96 return *((T*)c.second->GetThisComponent());
97 }
98 }
99
100 //失敗したら何も返さないよ~
101 }

◆ AddRemoveComponent() [1/2]

void Kisaragi_Lib::ComponentList::AddRemoveComponent ( ComponentBase * _com)
6 {
8 removesComID.push_back(_com->ID());
9 }
void AddDestroy(string _id)
破棄オブジェクトの登録
Definition ComponentFacade.hpp:83
vector< string > removesComID
Definition ComponentList.hpp:25

◆ AddRemoveComponent() [2/2]

void Kisaragi_Lib::ComponentList::AddRemoveComponent ( string _id)
12 {
14 removesComID.push_back(_id);
15 }

◆ RemoveComponent()

void Kisaragi_Lib::ComponentList::RemoveComponent ( )

コンポーネント除去.

R|[lg.

21 {
22 for (auto& _id : removesComID)
23 {
24 components.erase(_id);
25 }
26 }

◆ Destroy()

void Kisaragi_Lib::ComponentList::Destroy ( )
29 {
30 vector<string>tmpID;
31
32 for (auto& c : components)
33 {
34 //componentID擾
35 tmpID.push_back(c.first);
36 }
37
38 for (auto& _id : tmpID)
39 {
40 //ComponentFacadeɔjIDlj.
42 }
43
44 }

メンバ詳解

◆ components

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

◆ removesComID

vector<string> Kisaragi_Lib::ComponentList::removesComID
private

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