From 419fb45a3eea68516828fe4541a62f8641cf13ef Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Wed, 13 Feb 2019 13:11:39 -0300 Subject: [PATCH] Disallow polygon2D editing if internal vertices exists, as suggested in #24853 --- editor/plugins/abstract_polygon_2d_editor.cpp | 6 ++++++ editor/plugins/abstract_polygon_2d_editor.h | 2 ++ editor/plugins/polygon_2d_editor_plugin.cpp | 10 ++++++++++ editor/plugins/polygon_2d_editor_plugin.h | 1 + 4 files changed, 19 insertions(+) diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index 41e2062ab2ce..8f6f244e8f5a 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -297,6 +297,12 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref &p_event) if (mb.is_valid()) { + String cant_edit = _why_cant_edit_polygon(); + if (cant_edit != String()) { + EditorNode::get_singleton()->show_warning(cant_edit); + return true; + } + Transform2D xform = canvas_item_editor->get_canvas_transform() * _get_node()->get_global_transform(); Vector2 gpoint = mb->get_position(); diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h index 289c2785b169..f10af4ee6e30 100644 --- a/editor/plugins/abstract_polygon_2d_editor.h +++ b/editor/plugins/abstract_polygon_2d_editor.h @@ -134,6 +134,8 @@ class AbstractPolygon2DEditor : public HBoxContainer { virtual bool _has_resource() const; virtual void _create_resource(); + virtual String _why_cant_edit_polygon() const { return String(); } + public: bool forward_gui_input(const Ref &p_event); void forward_canvas_draw_over_viewport(Control *p_overlay); diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index b879bc99c734..28a17d0beff0 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -52,6 +52,16 @@ Vector2 Polygon2DEditor::_get_offset(int p_idx) const { return node->get_offset(); } +String Polygon2DEditor::_why_cant_edit_polygon() const { + + if (node->get_internal_vertex_count() > 0) { + + return TTR("Polygon 2D has internal vertices, so it can no longer be edited in the viewport."); + } + + return String(); +} + int Polygon2DEditor::_get_polygon_count() const { if (node->get_internal_vertex_count() > 0) { return 0; //do not edit if internal vertices exist diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h index d1849dd09b78..d3277e90f773 100644 --- a/editor/plugins/polygon_2d_editor_plugin.h +++ b/editor/plugins/polygon_2d_editor_plugin.h @@ -152,6 +152,7 @@ class Polygon2DEditor : public AbstractPolygon2DEditor { virtual void _set_node(Node *p_polygon); virtual Vector2 _get_offset(int p_idx) const; + virtual String _why_cant_edit_polygon() const; virtual bool _has_uv() const { return true; }; virtual void _commit_action();