50 static_assert(std::is_base_of<Component, T>::value,
"T must derive from Component");
55 if (m_Components.find(typeID) != m_Components.end()) {
56 return std::static_pointer_cast<T>(m_Components[typeID]);
60 auto component = std::make_shared<T>(std::forward<Args>(args)...);
61 m_Components[typeID] = component;
64 component->Initialize();