From de07c8ad1a6cb203c62258bb5f9c543f397e924e Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Mon, 14 Mar 2016 11:39:37 +0900 Subject: [PATCH] Fixed entity deletion bug Fixed bug where deleted entity would retain Components/Tags. --- src/EC/Manager.hpp | 3 +++ src/test/ECTest.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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); }