diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-06-30 13:41:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-30 13:41:45 +0200 |
commit | 82604195b4c2c80777f7ecaa547194c6a208e8cf (patch) | |
tree | 4aaab645c6f9458cd78f0625435b1276e92a581e | |
parent | 96d3270c344c7fe9a463b87006b0c56004128f6d (diff) | |
parent | d29b1b791774f0aa72a1230087c884b83e65d780 (diff) |
Merge pull request #30062 from zaksnet/fix-referencerect-node
Adds ReferenceRect an option to be visible inside the game
-rw-r--r-- | doc/classes/ReferenceRect.xml | 7 | ||||
-rw-r--r-- | scene/gui/reference_rect.cpp | 21 | ||||
-rw-r--r-- | scene/gui/reference_rect.h | 6 |
3 files changed, 28 insertions, 6 deletions
diff --git a/doc/classes/ReferenceRect.xml b/doc/classes/ReferenceRect.xml index f6025fe2f9..3b5481a7a1 100644 --- a/doc/classes/ReferenceRect.xml +++ b/doc/classes/ReferenceRect.xml @@ -4,7 +4,7 @@ Reference frame for GUI. </brief_description> <description> - Reference frame for GUI. It's just like an empty control, except an outline border [member border_color] is displayed while editing around its size at all times. + A rectangle box that displays only a [member border_color] border color around its rectangle. [ReferenceRect] has no fill [Color]. </description> <tutorials> </tutorials> @@ -12,7 +12,10 @@ </methods> <members> <member name="border_color" type="Color" setter="set_border_color" getter="get_border_color"> - Determines the border [Color] of the [ReferenceRect]. + Sets the border [Color] of the [ReferenceRect]. + </member> + <member name="editor_only" type="bool" setter="set_editor_only" getter="get_editor_only"> + If set to [code]true[/code], the [ReferenceRect] will only be visible while in editor. Otherwise, [ReferenceRect] will be visible in game. </member> </members> <constants> diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp index 553e133946..052c8ccd05 100644 --- a/scene/gui/reference_rect.cpp +++ b/scene/gui/reference_rect.cpp @@ -38,26 +38,41 @@ void ReferenceRect::_notification(int p_what) { if (!is_inside_tree()) return; - if (Engine::get_singleton()->is_editor_hint()) + if (Engine::get_singleton()->is_editor_hint() || !editor_only) draw_rect(Rect2(Point2(), get_size()), border_color, false); } } -void ReferenceRect::set_border_color(const Color &color) { - border_color = color; +void ReferenceRect::set_border_color(const Color &p_color) { + border_color = p_color; + update(); } Color ReferenceRect::get_border_color() const { return border_color; } +void ReferenceRect::set_editor_only(const bool &p_enabled) { + editor_only = p_enabled; + update(); +} + +bool ReferenceRect::get_editor_only() const { + return editor_only; +} + void ReferenceRect::_bind_methods() { ClassDB::bind_method(D_METHOD("get_border_color"), &ReferenceRect::get_border_color); ClassDB::bind_method(D_METHOD("set_border_color", "color"), &ReferenceRect::set_border_color); + ClassDB::bind_method(D_METHOD("get_editor_only"), &ReferenceRect::get_editor_only); + ClassDB::bind_method(D_METHOD("set_editor_only", "enabled"), &ReferenceRect::set_editor_only); + ADD_PROPERTY(PropertyInfo(Variant::COLOR, "border_color"), "set_border_color", "get_border_color"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "get_editor_only"); } ReferenceRect::ReferenceRect() { border_color = Color(1, 0, 0); + editor_only = true; } diff --git a/scene/gui/reference_rect.h b/scene/gui/reference_rect.h index de3ccaeeca..7a88333cf2 100644 --- a/scene/gui/reference_rect.h +++ b/scene/gui/reference_rect.h @@ -37,6 +37,7 @@ class ReferenceRect : public Control { GDCLASS(ReferenceRect, Control); Color border_color; + bool editor_only; protected: void _notification(int p_what); @@ -45,8 +46,11 @@ protected: public: ReferenceRect(); - void set_border_color(const Color &color); + void set_border_color(const Color &p_color); Color get_border_color() const; + + void set_editor_only(const bool &p_enabled); + bool get_editor_only() const; }; #endif // REFERENCE_RECT_H |