Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 23 additions & 10 deletions worldeditor/src/screens/scenecomposer/objectcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -696,12 +696,12 @@ void CreateObject::redo() {
}
}

m_controller->clear(false);
m_controller->selectActors(m_objects);

for(auto it : scenes) {
emit m_controller->sceneUpdated(it);
}

m_controller->clear(false);
m_controller->selectActors(m_objects);
}

DuplicateObjects::DuplicateObjects(ObjectController *ctrl, const QString &name, QUndoCommand *group) :
Expand Down Expand Up @@ -729,7 +729,6 @@ void DuplicateObjects::undo() {
m_controller->selectActors(m_selected);

emit m_controller->sceneUpdated(scene);

}
void DuplicateObjects::redo() {
Scene *scene = nullptr;
Expand All @@ -756,10 +755,10 @@ void DuplicateObjects::redo() {
}
}

emit m_controller->sceneUpdated(scene);

m_controller->clear(false);
m_controller->selectActors(m_objects);

emit m_controller->sceneUpdated(scene);
}

CreateObjectSerial::CreateObjectSerial(QList<Object *> &list, ObjectController *ctrl, const QString &name, QUndoCommand *group) :
Expand All @@ -772,11 +771,21 @@ CreateObjectSerial::CreateObjectSerial(QList<Object *> &list, ObjectController *
}
}
void CreateObjectSerial::undo() {
QSet<Scene *> scenes;
for(auto &it : m_controller->selected()) {
Actor *actor = dynamic_cast<Actor *>(it);
if(actor) {
scenes.insert(actor->scene());
}
delete it;
}

m_controller->clear(false);
m_controller->selectActors(m_objects);

for(auto it : scenes) {
emit m_controller->sceneUpdated(it);
}
}
void CreateObjectSerial::redo() {
m_objects.clear();
Expand All @@ -802,10 +811,11 @@ void CreateObjectSerial::redo() {
}
++it;
}
emit m_controller->sceneUpdated(scene);

m_controller->clear(false);
m_controller->selectActors(objects);

emit m_controller->sceneUpdated(scene);
}

DeleteActors::DeleteActors(const QList<Object *> &objects, ObjectController *ctrl, const QString &name, QUndoCommand *group) :
Expand All @@ -817,6 +827,7 @@ DeleteActors::DeleteActors(const QList<Object *> &objects, ObjectController *ctr
}
void DeleteActors::undo() {
QSet<Scene *> scenes;

auto it = m_parents.begin();
auto index = m_indices.begin();
for(auto &ref : m_dump) {
Expand All @@ -833,9 +844,7 @@ void DeleteActors::undo() {
++it;
++index;
}
for(auto it : scenes) {
emit m_controller->sceneUpdated(it);
}

if(!m_objects.empty()) {
auto it = m_objects.begin();
while(it != m_objects.end()) {
Expand All @@ -848,6 +857,10 @@ void DeleteActors::undo() {
m_controller->clear(false);
m_controller->selectActors(m_objects);
}

for(auto it : scenes) {
emit m_controller->sceneUpdated(it);
}
}
void DeleteActors::redo() {
QSet<Scene *> scenes;
Expand Down