10 #include <sigc++/slot.h> 17 EntityRef::EntityRef(View& v,
const std::string& eid) :
20 if (eid.empty())
return;
22 m_inner = v.getEntity(eid);
25 m_inner->BeingDeleted.connect(sigc::mem_fun(
this, &EntityRef::onEntityDeleted));
28 v.notifyWhenEntitySeen(eid, sigc::mem_fun(
this, &EntityRef::onEntitySeen));
32 EntityRef::EntityRef(Entity* e) :
37 m_inner->BeingDeleted.connect(sigc::mem_fun(
this, &EntityRef::onEntityDeleted));
41 EntityRef::EntityRef(
const EntityRef& ref) :
42 sigc::trackable(), m_inner(ref.m_inner)
46 m_inner->BeingDeleted.connect(sigc::mem_fun(
this, &EntityRef::onEntityDeleted));
50 EntityRef::EntityRef(EntityRef&& ref) noexcept :
51 sigc::trackable(
std::move(ref)), m_inner(ref.m_inner)
56 EntityRef& EntityRef::operator=(
const EntityRef& ref)
58 bool changed = (m_inner != ref.m_inner);
59 auto oldInner = m_inner;
60 m_inner = ref.m_inner;
64 m_inner->BeingDeleted.connect(sigc::mem_fun(
this, &EntityRef::onEntityDeleted));
68 Changed.emit(m_inner, oldInner);
73 void EntityRef::onEntityDeleted()
75 auto oldInner = m_inner;
80 void EntityRef::onEntitySeen(Entity* e)
83 auto oldInner = m_inner;
85 m_inner->BeingDeleted.connect(sigc::mem_fun(
this, &EntityRef::onEntityDeleted));
sigc::signal< void, const std::set< std::string > & > Changed