Browse Source

regisrtry: decouple container types for groups

Michele Caini 3 years ago
parent
commit
5a1ba5ad7d
1 changed files with 4 additions and 3 deletions
  1. 4 3
      src/entt/entity/registry.hpp

+ 4 - 3
src/entt/entity/registry.hpp

@@ -248,7 +248,8 @@ class basic_registry {
 
 
     // std::shared_ptr because of its type erased allocator which is useful here
     // std::shared_ptr because of its type erased allocator which is useful here
     using pool_container_type = dense_map<id_type, std::shared_ptr<base_type>, identity, std::equal_to<id_type>, typename alloc_traits::template rebind_alloc<std::pair<const id_type, std::shared_ptr<base_type>>>>;
     using pool_container_type = dense_map<id_type, std::shared_ptr<base_type>, identity, std::equal_to<id_type>, typename alloc_traits::template rebind_alloc<std::pair<const id_type, std::shared_ptr<base_type>>>>;
-    using group_container_type = dense_map<id_type, std::shared_ptr<internal::basic_group_handler>, identity, std::equal_to<id_type>, typename alloc_traits::template rebind_alloc<std::pair<const id_type, std::shared_ptr<internal::basic_group_handler>>>>;
+    using owning_group_container_type = dense_map<id_type, std::shared_ptr<internal::basic_group_handler>, identity, std::equal_to<id_type>, typename alloc_traits::template rebind_alloc<std::pair<const id_type, std::shared_ptr<internal::basic_group_handler>>>>;
+    using non_owning_group_container_type = dense_map<id_type, std::shared_ptr<internal::basic_group_handler>, identity, std::equal_to<id_type>, typename alloc_traits::template rebind_alloc<std::pair<const id_type, std::shared_ptr<internal::basic_group_handler>>>>;
 
 
     template<typename Type>
     template<typename Type>
     [[nodiscard]] auto &assure(const id_type id = type_hash<Type>::value()) {
     [[nodiscard]] auto &assure(const id_type id = type_hash<Type>::value()) {
@@ -1384,8 +1385,8 @@ public:
 private:
 private:
     context vars;
     context vars;
     pool_container_type pools;
     pool_container_type pools;
-    group_container_type owning_groups;
-    group_container_type non_owning_groups;
+    owning_group_container_type owning_groups;
+    non_owning_group_container_type non_owning_groups;
     storage_for_type<entity_type> *shortcut;
     storage_for_type<entity_type> *shortcut;
 };
 };