From 6bbfed640059289c524db370a2a2afed3ceb7015 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 30 May 2020 12:08:30 +0200 Subject: [PATCH] Implement zooming using Ctrl + Mouse wheel in the TileMap editor This was previously implemented in the GridMap editor. This makes the same feature available in the TileMap editor. (cherry picked from commit def2059d67b5ec1335f8654e80a2bc19b7faa299) --- editor/plugins/tile_map_editor_plugin.cpp | 17 +++++++++++++++++ editor/plugins/tile_map_editor_plugin.h | 1 + 2 files changed, 18 insertions(+) diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 7005d99b5fe..95175639635 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -205,6 +205,21 @@ void TileMapEditor::_palette_multi_selected(int index, bool selected) { _update_palette(); } +void TileMapEditor::_palette_input(const Ref &p_event) { + const Ref mb = p_event; + + // Zoom in/out using Ctrl + mouse wheel. + if (mb.is_valid() && mb->is_pressed() && mb->get_command()) { + if (mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_UP) { + size_slider->set_value(size_slider->get_value() + 0.2); + } + + if (mb->is_pressed() && mb->get_button_index() == BUTTON_WHEEL_DOWN) { + size_slider->set_value(size_slider->get_value() - 0.2); + } + } +} + void TileMapEditor::_canvas_mouse_enter() { mouse_over = true; @@ -1834,6 +1849,7 @@ void TileMapEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_clear_transform"), &TileMapEditor::_clear_transform); ClassDB::bind_method(D_METHOD("_palette_selected"), &TileMapEditor::_palette_selected); ClassDB::bind_method(D_METHOD("_palette_multi_selected"), &TileMapEditor::_palette_multi_selected); + ClassDB::bind_method(D_METHOD("_palette_input"), &TileMapEditor::_palette_input); ClassDB::bind_method(D_METHOD("_fill_points"), &TileMapEditor::_fill_points); ClassDB::bind_method(D_METHOD("_erase_points"), &TileMapEditor::_erase_points); @@ -1996,6 +2012,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { palette->add_constant_override("vseparation", 8 * EDSCALE); palette->connect("item_selected", this, "_palette_selected"); palette->connect("multi_selected", this, "_palette_multi_selected"); + palette->connect("gui_input", this, "_palette_input"); palette_container->add_child(palette); // Add message for when no texture is selected. diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index 5007884cbb9..53691018e29 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -192,6 +192,7 @@ class TileMapEditor : public VBoxContainer { void _menu_option(int p_option); void _palette_selected(int index); void _palette_multi_selected(int index, bool selected); + void _palette_input(const Ref &p_event); Dictionary _create_cell_dictionary(int tile, bool flip_x, bool flip_y, bool transpose, Vector2 autotile_coord); void _start_undo(const String &p_action);