22 m_backup.reset(m_component->
Clone());
28 std::weak_ptr<GameObject> m_obj;
30 std::unique_ptr<Component> m_backup;
34 virtual void Execute()
override
36 if (!m_obj.expired() && m_destructor) {
41 virtual void Undo()
override
43 if (m_backup && !m_obj.expired() && m_factory)
45 Component* created = m_factory(m_obj);
48 created->CopyFrom(m_backup.get());
58 std::weak_ptr<GameObject>
object,
61 : m_obj(object), m_factory(factory), m_destructor(destructor) { }
63 std::weak_ptr<GameObject> m_obj;
67 virtual void Execute()
override
69 EE_CORE_TRACE(
"AddComponentCommand");
70 if (!m_obj.expired() && m_factory)
76 virtual void Undo()
override
78 if (!m_obj.expired() && m_destructor)
AddComponentCommand(std::weak_ptr< GameObject > object, GameObjectComponentFactory factory, GameObjectComponentDestructor destructor)
virtual Component * Clone()=0
virtual GameObjectComponentDestructor GetDestructor() const =0
virtual GameObjectComponentFactory GetFactory() const =0
RemoveComponentCommand(Component *comp)
std::function< Component *(std::weak_ptr< GameObject >)> GameObjectComponentFactory
std::function< void(std::weak_ptr< GameObject >)> GameObjectComponentDestructor