]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Fixed entity deletion bug
authorStephen Seo <seo.disparate@gmail.com>
Mon, 14 Mar 2016 02:39:37 +0000 (11:39 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 14 Mar 2016 02:39:37 +0000 (11:39 +0900)
Fixed bug where deleted entity would retain Components/Tags.

src/EC/Manager.hpp
src/test/ECTest.cpp

index 534429e288a3e59711d6d25352eeff4d9d3ed855..978de20ade1425af87128bebfef413bf3c275162 100644 (file)
@@ -111,6 +111,9 @@ namespace EC
                     // swap lhs entity with rhs entity
                     std::swap(entities[lhs], entities[rhs]);
 
+                    // clear deleted bitset
+                    std::get<BitsetType>(entities[rhs]).reset();
+
                     // inc/dec pointers
                     ++lhs; --rhs;
                 }
index a881d9770535389864de0208295d3b5a2bdfe179..03e01e9b7e7179e9c9160ccecd45d9f973eb6436 100644 (file)
@@ -109,10 +109,15 @@ TEST(EC, Manager)
 
     manager.addTag<T0>(e2);
 
-    auto updateTagOnly = [] (std::size_t id) {
+    std::size_t count = 0;
+
+    auto updateTagOnly = [&count] (std::size_t id) {
         std::cout << "UpdateTagOnly was run." << std::endl;
+        ++count;
     };
 
     manager.forMatchingSignature<EC::Meta::TypeList<T0> >(updateTagOnly);
+
+    EXPECT_EQ(2, count);
 }