std::set works better for entity groups

This commit is contained in:
NukeBird 2025-02-20 14:36:48 +03:00
parent fbbe04f942
commit 219af9d803

View file

@ -97,7 +97,7 @@ namespace zecsy
std::unordered_map<comp_id, component_pool> pools;
using archetype_signature = std::vector<comp_id>;
using entity_group = std::vector<entity_id>;
using entity_group = std::set<entity_id>;
struct archetype_hash
{
@ -186,7 +186,7 @@ namespace zecsy
std::vector<comp_id> key;
auto& group = archetypes[key];
group.emplace_back(id);
group.emplace(id);
return id;
}
@ -199,7 +199,7 @@ namespace zecsy
std::vector<comp_id> key(comp_set.begin(), comp_set.end());
auto& group = archetypes[key];
group.erase(std::remove(group.begin(), group.end(), e), group.end());
group.erase(e);
if(archetypes[key].empty())
{
@ -279,8 +279,7 @@ namespace zecsy
std::vector<comp_id> old_key(old_set.begin(), old_set.end());
auto& group = archetypes[old_key];
group.erase(std::remove(group.begin(), group.end(), e),
group.end());
group.erase(e);
if(archetypes[old_key].empty())
{
@ -288,7 +287,7 @@ namespace zecsy
}
std::vector<comp_id> new_key(comp_set.begin(), comp_set.end());
archetypes[new_key].emplace_back(e);
archetypes[new_key].emplace(e);
}
}
@ -311,13 +310,12 @@ namespace zecsy
std::sort(old_key.begin(), old_key.end());
auto& old_group = archetypes[old_key];
old_group.erase(std::remove(old_group.begin(), old_group.end(), e),
old_group.end());
old_group.erase(e);
std::vector<comp_id> new_key(comp_set.begin(), comp_set.end());
std::sort(new_key.begin(), new_key.end());
archetypes[new_key].emplace_back(e);
archetypes[new_key].emplace(e);
if(archetypes[old_key].empty())
{