浏览代码

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.
Hugo Locurcio 5 年之前
父节点
当前提交
def2059d67
共有 2 个文件被更改,包括 17 次插入0 次删除
  1. 16 0
      editor/plugins/tile_map_editor_plugin.cpp
  2. 1 0
      editor/plugins/tile_map_editor_plugin.h

+ 16 - 0
editor/plugins/tile_map_editor_plugin.cpp

@@ -194,6 +194,21 @@ void TileMapEditor::_palette_multi_selected(int index, bool selected) {
 	_update_palette();
 	_update_palette();
 }
 }
 
 
+void TileMapEditor::_palette_input(const Ref<InputEvent> &p_event) {
+	const Ref<InputEventMouseButton> 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() {
 void TileMapEditor::_canvas_mouse_enter() {
 	mouse_over = true;
 	mouse_over = true;
 	CanvasItemEditor::get_singleton()->update_viewport();
 	CanvasItemEditor::get_singleton()->update_viewport();
@@ -1913,6 +1928,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) {
 	palette->add_theme_constant_override("vseparation", 8 * EDSCALE);
 	palette->add_theme_constant_override("vseparation", 8 * EDSCALE);
 	palette->connect("item_selected", callable_mp(this, &TileMapEditor::_palette_selected));
 	palette->connect("item_selected", callable_mp(this, &TileMapEditor::_palette_selected));
 	palette->connect("multi_selected", callable_mp(this, &TileMapEditor::_palette_multi_selected));
 	palette->connect("multi_selected", callable_mp(this, &TileMapEditor::_palette_multi_selected));
+	palette->connect("gui_input", callable_mp(this, &TileMapEditor::_palette_input));
 	palette_container->add_child(palette);
 	palette_container->add_child(palette);
 
 
 	// Add message for when no texture is selected.
 	// Add message for when no texture is selected.

+ 1 - 0
editor/plugins/tile_map_editor_plugin.h

@@ -182,6 +182,7 @@ class TileMapEditor : public VBoxContainer {
 	void _menu_option(int p_option);
 	void _menu_option(int p_option);
 	void _palette_selected(int index);
 	void _palette_selected(int index);
 	void _palette_multi_selected(int index, bool selected);
 	void _palette_multi_selected(int index, bool selected);
+	void _palette_input(const Ref<InputEvent> &p_event);
 
 
 	Dictionary _create_cell_dictionary(int tile, bool flip_x, bool flip_y, bool transpose, Vector2 autotile_coord);
 	Dictionary _create_cell_dictionary(int tile, bool flip_x, bool flip_y, bool transpose, Vector2 autotile_coord);
 	void _start_undo(const String &p_action);
 	void _start_undo(const String &p_action);