SpiecsEngine
 
Loading...
Searching...
No Matches

◆ PushSystem()

template<typename T , typename ... Args>
SystemManager & Spices::SystemManager::PushSystem ( Args &&... args)
inline

Push a system to this manager.

Template Parameters
TSpecific system Class.
Returns
Returns the SystemManager.

Definition at line 140 of file SystemManager.h.

141 {
142 std::string systemName = ClassLibrary::GetClassString(typeid(T));
143
144 // push system to map
145 if (m_Identities.has_key(systemName))
146 {
147 std::stringstream ss;
148 ss << systemName << " has been pushed ";
149
150 SPICES_CORE_ERROR(ss.str());
151 }
152
153 m_Identities.push_back(systemName, std::make_shared<T>(systemName, std::forward<Args>(args)...));
154
155 // system init
156 auto ptr = *m_Identities.find_value(systemName);
157 ptr->OnSystemInitialize();
158
159 std::stringstream ss;
160 ss << systemName << " pushed ";
161
162 SPICES_CORE_INFO(ss.str());
163
164 return *m_SystemManager;
165 }
static std::string GetClassString(ClassType t)
Get Class Name as string.
static std::unique_ptr< SystemManager > m_SystemManager
Static SystemManager variable.
static scl::linked_unordered_map< std::string, std::shared_ptr< System > > m_Identities
Static System Map.

References Spices::ClassLibrary::GetClassString().