From ac0d37dcefe0435c89cb14ca3b3201af74e2257a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 17 Feb 2022 00:21:00 +0100 Subject: [PATCH] Add a property hint for the Line2D Round Precision property This prevents choosing extremely high values which cause performance issues for no visual benefit. (cherry picked from commit 6b52aa67b8d66fa690764cd0a40772f198250ce4) --- doc/classes/Line2D.xml | 3 ++- scene/2d/line_2d.cpp | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml index e4e1c681c913..1a60aecab4f8 100644 --- a/doc/classes/Line2D.xml +++ b/doc/classes/Line2D.xml @@ -80,7 +80,8 @@ The points that form the lines. The line is drawn between every point set in this array. Points are interpreted as local vectors. - The smoothness of the rounded joints and caps. This is only used if a cap or joint is set as round. + The smoothness of the rounded joints and caps. Higher values result in smoother corners, but are more demanding to render and update. This is only used if a cap or joint is set as round. + [b]Note:[/b] The default value is tuned for lines with the default [member width]. For thin lines, this value should be reduced to a number between [code]2[/code] and [code]4[/code] to improve performance. The direction difference in radians between vector points. This value is only used if [member joint_mode] is set to [constant LINE_JOINT_SHARP]. diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp index 69dec3afc92a..1535b679124c 100644 --- a/scene/2d/line_2d.cpp +++ b/scene/2d/line_2d.cpp @@ -255,10 +255,7 @@ float Line2D::get_sharp_limit() const { } void Line2D::set_round_precision(int p_precision) { - if (p_precision < 1) { - p_precision = 1; - } - _round_precision = p_precision; + _round_precision = MAX(1, p_precision); update(); } @@ -418,7 +415,7 @@ void Line2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "end_cap_mode", PROPERTY_HINT_ENUM, "None,Box,Round"), "set_end_cap_mode", "get_end_cap_mode"); ADD_GROUP("Border", ""); ADD_PROPERTY(PropertyInfo(Variant::REAL, "sharp_limit"), "set_sharp_limit", "get_sharp_limit"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "round_precision"), "set_round_precision", "get_round_precision"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "round_precision", PROPERTY_HINT_RANGE, "1,32,1"), "set_round_precision", "get_round_precision"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased"), "set_antialiased", "get_antialiased"); BIND_ENUM_CONSTANT(LINE_JOINT_SHARP);