| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include <Atomic/IO/Log.h>
- #include <Atomic/Scene/Node.h>
- #include <Atomic/Scene/Component.h>
- #include "SceneEditOps.h"
- #include "SceneEditor3DEvents.h"
- namespace AtomicEditor
- {
- NodeEditOp::NodeEditOp(Node* node)
- {
- node_ = node;
- // parent at the time of the operation
- parent_ = node->GetParent();
- }
- NodeAddedRemovedOp::NodeAddedRemovedOp(Node* node, bool added) : NodeEditOp(node),
- added_(added)
- {
- type_ = SCENEEDIT_NODE_ADDED_REMOVED;
- }
- bool NodeAddedRemovedOp::Undo()
- {
- return true;
- }
- bool NodeAddedRemovedOp::Redo()
- {
- return true;
- }
- SerializableEditOp::SerializableEditOp(Serializable* serializable, const VectorBuffer& beginState, const VectorBuffer& endState) : SceneEditOp(),
- serializable_(serializable),
- beginState_(beginState),
- endState_(endState)
- {
- type_ = SCENEEDIT_SERIALIZABLE_EDIT;
- if (!beginState_.GetSize())
- {
- LOGERRORF("Zero size beginState");
- }
- if (!endState_.GetSize())
- {
- LOGERRORF("Zero size endState");
- }
- }
- bool SerializableEditOp::Undo()
- {
- if (!serializable_->Serializable::Load(beginState_))
- {
- LOGERRORF("Error loading beginState");
- }
- beginState_.Seek(0);
- VariantMap eventData;
- eventData[SceneEditSerializableUndoRedo::P_SERIALIZABLE] = serializable_;
- eventData[SceneEditSerializableUndoRedo::P_UNDO] = true;
- eventData[SceneEditSerializableUndoRedo::P_STATE] = beginState_;
- serializable_->SendEvent(E_SCENEEDITSERIALIZABLEUNDOREDO, eventData);
- return true;
- }
- bool SerializableEditOp::Redo()
- {
- if (!serializable_->Serializable::Load(endState_))
- {
- LOGERRORF("Error loading endState");
- }
- endState_.Seek(0);
- VariantMap eventData;
- eventData[SceneEditSerializableUndoRedo::P_SERIALIZABLE] = serializable_;
- eventData[SceneEditSerializableUndoRedo::P_UNDO] = false;
- eventData[SceneEditSerializableUndoRedo::P_STATE] = endState_;
- serializable_->SendEvent(E_SCENEEDITSERIALIZABLEUNDOREDO, eventData);
- return true;
- }
- }
|