Просмотр исходного кода

registry: better support for integral entity identifiers (even if not recommended)

Michele Caini 5 лет назад
Родитель
Сommit
556373d331
2 измененных файлов с 4 добавлено и 2 удалено
  1. 1 1
      src/entt/entity/registry.hpp
  2. 3 1
      test/entt/entity/registry.cpp

+ 1 - 1
src/entt/entity/registry.hpp

@@ -578,7 +578,7 @@ public:
      * @param entity A valid entity identifier.
      */
     void destroy(const entity_type entity) {
-        destroy(entity, (to_integral(entity) >> traits_type::entity_shift) + 1);
+        destroy(entity, version_type((to_integral(entity) >> traits_type::entity_shift) + 1));
     }
 
     /**

+ 3 - 1
test/entt/entity/registry.cpp

@@ -464,10 +464,12 @@ TEST(Registry, CreateDestroyCornerCase) {
 }
 
 TEST(Registry, VersionOverflow) {
+    using traits_type = entt::entt_traits<entt::entity>;
+
     entt::registry registry;
     const auto entity = registry.create();
 
-    registry.destroy(entity, entt::entt_traits<entt::entity>::version_mask);
+    registry.destroy(entity, typename traits_type::version_type(traits_type::version_mask));
     registry.destroy(registry.create());
 
     ASSERT_EQ(registry.current(entity), registry.version(entity));