diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index 6e440f734..a1c58d219 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -440,10 +440,12 @@ public: const auto other = create(); for(auto pos = pools.size(); pos; --pos) { - auto &cpool = std::get<0>(pools[pos-1]); + auto &tup = pools[pos-1]; + auto &cpool = std::get<0>(tup); if(cpool && cpool->has(entity)) { cpool->clone(other, entity); + std::get<1>(tup).publish(*this, other); } } diff --git a/test/entt/entity/registry.cpp b/test/entt/entity/registry.cpp index 0efdc75d7..779924e47 100644 --- a/test/entt/entity/registry.cpp +++ b/test/entt/entity/registry.cpp @@ -719,6 +719,11 @@ TEST(DefaultRegistry, ComponentSignals) { ASSERT_EQ(listener.counter, 1); ASSERT_EQ(listener.last, e1); + + e1 = registry.clone(e0); + + ASSERT_EQ(listener.counter, 2); + ASSERT_EQ(listener.last, e1); } TEST(DefaultRegistry, TagSignals) {