Core/EnttWorld: Add RemoveSystem method

This commit is contained in:
SirLynix 2023-07-27 15:09:15 +02:00
parent 99471e8e65
commit a101f7c71f
4 changed files with 22 additions and 0 deletions

View File

@ -30,6 +30,8 @@ namespace Nz
template<typename T> T& GetSystem() const;
template<typename T> void RemoveSystem();
void Update();
void Update(Time elapsedTime);

View File

@ -71,6 +71,18 @@ namespace Nz
auto& node = static_cast<Node<T>&>(*m_nodes[it->second]);
return node.system;
}
template<typename T>
void EnttSystemGraph::RemoveSystem()
{
auto it = m_systemToNodes.find(entt::type_hash<T>());
if (it == m_systemToNodes.end())
return;
m_nodes.erase(m_nodes.begin() + it->second);
m_systemToNodes.erase(it);
m_systemOrderUpdated = false;
}
}
#include <Nazara/Core/DebugOff.hpp>

View File

@ -30,6 +30,8 @@ namespace Nz
const entt::registry& GetRegistry() const;
template<typename T> T& GetSystem() const;
template<typename T> void RemoveSystem();
void Update(Time elapsedTime) override;
operator entt::registry&();

View File

@ -38,6 +38,12 @@ namespace Nz
return m_systemGraph.GetSystem<T>();
}
template<typename T>
void EnttWorld::RemoveSystem()
{
return m_systemGraph.RemoveSystem<T>();
}
inline EnttWorld::operator entt::registry&()
{
return m_registry;