From: Stephen Seo Date: Mon, 14 Mar 2016 02:39:37 +0000 (+0900) Subject: Fixed entity deletion bug X-Git-Tag: 1.0~110 X-Git-Url: https://git.seodisparate.com/inner/further?a=commitdiff_plain;h=de07c8ad1a6cb203c62258bb5f9c543f397e924e;p=EntityComponentMetaSystem Fixed entity deletion bug Fixed bug where deleted entity would retain Components/Tags. --- 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); }