|
@@ -34,6 +34,28 @@ SelectionEditOp::~SelectionEditOp()
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+bool SelectionEditOp::EraseNode(Node *node)
|
|
|
|
|
+{
|
|
|
|
|
+ PODVector<EditNode*>::Iterator itr = editNodes_.Begin();
|
|
|
|
|
+
|
|
|
|
|
+ while (itr != editNodes_.End())
|
|
|
|
|
+ {
|
|
|
|
|
+ if ((*itr)->node_ == node)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (unsigned j = 0; j < (*itr)->components_.Size(); j++)
|
|
|
|
|
+ delete (*itr)->components_[j];
|
|
|
|
|
+
|
|
|
|
|
+ delete *itr;
|
|
|
|
|
+ editNodes_.Erase(itr);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ itr++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return editNodes_.Size() == 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void SelectionEditOp::AddNode(Node* node)
|
|
void SelectionEditOp::AddNode(Node* node)
|
|
|
{
|
|
{
|
|
|
|
|
|
|
@@ -59,7 +81,6 @@ void SelectionEditOp::AddNode(Node* node)
|
|
|
EditComponent* ecomponent = new EditComponent();
|
|
EditComponent* ecomponent = new EditComponent();
|
|
|
ecomponent->component_ = component;
|
|
ecomponent->component_ = component;
|
|
|
ecomponent->nodeBegin_ = ecomponent->nodeEnd_ = node;
|
|
ecomponent->nodeBegin_ = ecomponent->nodeEnd_ = node;
|
|
|
- ecomponent->temporaryBegin_ = ecomponent->temporaryEnd_ = component->IsTemporary();
|
|
|
|
|
component->Serializable::Save(ecomponent->stateBegin_);
|
|
component->Serializable::Save(ecomponent->stateBegin_);
|
|
|
ecomponent->stateBegin_.Seek(0);
|
|
ecomponent->stateBegin_.Seek(0);
|
|
|
ecomponent->stateEnd_ = ecomponent->stateBegin_;
|
|
ecomponent->stateEnd_ = ecomponent->stateBegin_;
|
|
@@ -131,9 +152,6 @@ bool SelectionEditOp::Commit()
|
|
|
if (ecomponent->nodeBegin_ != ecomponent->nodeEnd_)
|
|
if (ecomponent->nodeBegin_ != ecomponent->nodeEnd_)
|
|
|
return true;
|
|
return true;
|
|
|
|
|
|
|
|
- if (ecomponent->temporaryBegin_ != ecomponent->temporaryEnd_)
|
|
|
|
|
- return true;
|
|
|
|
|
-
|
|
|
|
|
if (!CompareStates(ecomponent->stateBegin_, ecomponent->stateEnd_))
|
|
if (!CompareStates(ecomponent->stateBegin_, ecomponent->stateEnd_))
|
|
|
return true;
|
|
return true;
|
|
|
|
|
|
|
@@ -162,7 +180,6 @@ void SelectionEditOp::RegisterEdit()
|
|
|
ecomponent->component_->Serializable::Save(ecomponent->stateEnd_);
|
|
ecomponent->component_->Serializable::Save(ecomponent->stateEnd_);
|
|
|
ecomponent->stateEnd_.Seek(0);
|
|
ecomponent->stateEnd_.Seek(0);
|
|
|
ecomponent->nodeEnd_ = ecomponent->component_->GetNode();
|
|
ecomponent->nodeEnd_ = ecomponent->component_->GetNode();
|
|
|
- ecomponent->temporaryEnd_ = ecomponent->component_->IsTemporary();
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -255,14 +272,12 @@ bool SelectionEditOp::Undo()
|
|
|
|
|
|
|
|
ecomponent->stateBegin_.Seek(0);
|
|
ecomponent->stateBegin_.Seek(0);
|
|
|
|
|
|
|
|
- if (component->GetNode() != ecomponent->nodeBegin_ || component->IsTemporary() != ecomponent->temporaryBegin_)
|
|
|
|
|
|
|
+ if (component->GetNode() != ecomponent->nodeBegin_)
|
|
|
{
|
|
{
|
|
|
component->Remove();
|
|
component->Remove();
|
|
|
|
|
|
|
|
bool add = ecomponent->nodeBegin_.NotNull();
|
|
bool add = ecomponent->nodeBegin_.NotNull();
|
|
|
|
|
|
|
|
- component->SetTemporary(ecomponent->temporaryBegin_);
|
|
|
|
|
-
|
|
|
|
|
VariantMap caData;
|
|
VariantMap caData;
|
|
|
caData[SceneEditComponentAddedRemoved::P_SCENE] = scene_;
|
|
caData[SceneEditComponentAddedRemoved::P_SCENE] = scene_;
|
|
|
caData[SceneEditComponentAddedRemoved::P_COMPONENT] = component;
|
|
caData[SceneEditComponentAddedRemoved::P_COMPONENT] = component;
|
|
@@ -374,14 +389,12 @@ bool SelectionEditOp::Redo()
|
|
|
component->SendEvent(E_SCENEEDITSTATECHANGE, eventData);
|
|
component->SendEvent(E_SCENEEDITSTATECHANGE, eventData);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (component->GetNode() != ecomponent->nodeEnd_ || component->IsTemporary() != ecomponent->temporaryEnd_)
|
|
|
|
|
|
|
+ if (component->GetNode() != ecomponent->nodeEnd_)
|
|
|
{
|
|
{
|
|
|
component->Remove();
|
|
component->Remove();
|
|
|
|
|
|
|
|
bool add = ecomponent->nodeEnd_.NotNull();
|
|
bool add = ecomponent->nodeEnd_.NotNull();
|
|
|
|
|
|
|
|
- component->SetTemporary(ecomponent->temporaryEnd_);
|
|
|
|
|
-
|
|
|
|
|
VariantMap caData;
|
|
VariantMap caData;
|
|
|
caData[SceneEditComponentAddedRemoved::P_SCENE] = scene_;
|
|
caData[SceneEditComponentAddedRemoved::P_SCENE] = scene_;
|
|
|
caData[SceneEditComponentAddedRemoved::P_COMPONENT] = component;
|
|
caData[SceneEditComponentAddedRemoved::P_COMPONENT] = component;
|