Michele Caini 7 years ago
parent
commit
f12ff3b15e
3 changed files with 17 additions and 5 deletions
  1. 9 1
      src/entt/entity/registry.hpp
  2. 2 2
      src/entt/entity/snapshot.hpp
  3. 6 2
      test/entt/entity/registry.cpp

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

@@ -216,11 +216,19 @@ public:
         return managed<Component>() ? pool<Component>().size() : size_type{};
     }
 
+    /**
+     * @brief Returns the number of entities created so far.
+     * @return Number of entities created so far.
+     */
+    size_type size() const ENTT_NOEXCEPT {
+        return entities.size();
+    }
+
     /**
      * @brief Returns the number of entities still in use.
      * @return Number of entities still in use.
      */
-    size_type size() const ENTT_NOEXCEPT {
+    size_type alive() const ENTT_NOEXCEPT {
         return entities.size() - available;
     }
 

+ 2 - 2
src/entt/entity/snapshot.hpp

@@ -100,7 +100,7 @@ public:
      */
     template<typename Archive>
     const Snapshot & entities(Archive &archive) const {
-        archive(static_cast<Entity>(registry.size()));
+        archive(static_cast<Entity>(registry.alive()));
         registry.each([&archive](const auto entity) { archive(entity); });
         return *this;
     }
@@ -117,7 +117,7 @@ public:
      */
     template<typename Archive>
     const Snapshot & destroyed(Archive &archive) const {
-        auto size = registry.capacity() - registry.size();
+        auto size = registry.size() - registry.alive();
         archive(static_cast<Entity>(size));
         auto curr = seed;
 

+ 6 - 2
test/entt/entity/registry.cpp

@@ -59,6 +59,7 @@ TEST(DefaultRegistry, Functionalities) {
     entt::DefaultRegistry registry;
 
     ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0});
+    ASSERT_EQ(registry.alive(), entt::DefaultRegistry::size_type{0});
     ASSERT_NO_THROW(registry.reserve(42));
     ASSERT_NO_THROW(registry.reserve<int>(8));
     ASSERT_NO_THROW(registry.reserve<char>(8));
@@ -134,6 +135,7 @@ TEST(DefaultRegistry, Functionalities) {
     ASSERT_EQ(static_cast<const entt::DefaultRegistry &>(registry).get<int>(e1), 1);
 
     ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{3});
+    ASSERT_EQ(registry.alive(), entt::DefaultRegistry::size_type{3});
     ASSERT_FALSE(registry.empty());
 
     ASSERT_EQ(registry.version(e2), entt::DefaultRegistry::version_type{0});
@@ -149,12 +151,14 @@ TEST(DefaultRegistry, Functionalities) {
     ASSERT_FALSE(registry.valid(e2));
     ASSERT_FALSE(registry.fast(e2));
 
-    ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{2});
+    ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{3});
+    ASSERT_EQ(registry.alive(), entt::DefaultRegistry::size_type{2});
     ASSERT_FALSE(registry.empty());
 
     ASSERT_NO_THROW(registry.reset());
 
-    ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0});
+    ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{3});
+    ASSERT_EQ(registry.alive(), entt::DefaultRegistry::size_type{0});
     ASSERT_TRUE(registry.empty());
 
     const auto e3 = registry.create();