diff --git a/zecsy.hpp b/zecsy.hpp index 7626d6b..1910148 100644 --- a/zecsy.hpp +++ b/zecsy.hpp @@ -97,7 +97,7 @@ namespace zecsy std::unordered_map pools; using archetype_signature = std::vector; - using entity_group = std::vector; + using entity_group = std::set; struct archetype_hash { @@ -186,7 +186,7 @@ namespace zecsy std::vector key; auto& group = archetypes[key]; - group.emplace_back(id); + group.emplace(id); return id; } @@ -199,7 +199,7 @@ namespace zecsy std::vector 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 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 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 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()) {