diff --git a/src/EC/Manager.hpp b/src/EC/Manager.hpp index 534429e..978de20 100644 --- a/src/EC/Manager.hpp +++ b/src/EC/Manager.hpp @@ -111,6 +111,9 @@ namespace EC // swap lhs entity with rhs entity std::swap(entities[lhs], entities[rhs]); + // clear deleted bitset + std::get(entities[rhs]).reset(); + // inc/dec pointers ++lhs; --rhs; } diff --git a/src/test/ECTest.cpp b/src/test/ECTest.cpp index a881d97..03e01e9 100644 --- a/src/test/ECTest.cpp +++ b/src/test/ECTest.cpp @@ -109,10 +109,15 @@ TEST(EC, Manager) manager.addTag(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 >(updateTagOnly); + + EXPECT_EQ(2, count); }