std::set works better for entity groups
This commit is contained in:
parent
fbbe04f942
commit
219af9d803
1 changed files with 7 additions and 9 deletions
16
zecsy.hpp
16
zecsy.hpp
|
@ -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())
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue