feat(wip): implementing edit history and un-re-do

This commit is contained in:
Sara Gerretsen 2025-11-20 23:33:46 +01:00
parent b875c2089b
commit e2926f7c3f
6 changed files with 90 additions and 3 deletions

View file

@ -7,6 +7,7 @@
#include "scene/3d/node_3d.h"
#include "scene/gui/file_dialog.h"
#include "scene/resources/packed_scene.h"
#include "terrain_editor/edit_history.h"
#include "terrain_editor/macros.h"
#include "terrain_editor/point_primitive_node.h"
#include "terrain_editor/terrain_primitive.h"
@ -110,15 +111,24 @@ void TerrainMeshEditor::_notification(int what) {
void TerrainMeshEditor::unhandled_input(Ref<InputEvent> const &event) {
Ref<InputEventKey> key{ event };
if (key.is_valid() && key->get_key_label() == Key::S && key->get_modifiers_mask() == (KeyModifierMask::SHIFT | KeyModifierMask::CTRL)) {
get_viewport()->set_input_as_handled();
this->file_dialog->set_file_mode(FileDialog::FILE_MODE_SAVE_FILE);
this->file_dialog->set_ok_button_text("Save");
this->file_dialog->popup_file_dialog();
} else if (key.is_valid() && key->get_key_label() == Key::S && key->get_modifiers_mask() == KeyModifierMask::CTRL) {
get_viewport()->set_input_as_handled();
save_data();
} else if (key.is_valid() && key->get_key_label() == Key::O && key->get_modifiers_mask() == KeyModifierMask::CTRL) {
get_viewport()->set_input_as_handled();
this->file_dialog->set_file_mode(FileDialog::FILE_MODE_OPEN_FILE);
this->file_dialog->set_ok_button_text("Open");
this->file_dialog->popup_file_dialog();
} else if (key.is_valid() && key->get_key_label() == Key::Z && key->get_modifiers_mask() == KeyModifierMask::CTRL) {
get_viewport()->set_input_as_handled();
EditHistory::get_singleton()->undo();
} else if (key.is_valid() && key->get_key_label() == Key::Z && key->get_modifiers_mask() == (KeyModifierMask::CTRL | KeyModifierMask::SHIFT)) {
get_viewport()->set_input_as_handled();
EditHistory::get_singleton()->redo();
}
}