From 714953b3ac697f0925c740581880cb71e2f94777 Mon Sep 17 00:00:00 2001 From: Kanabenki <18357657+Kanabenki@users.noreply.github.com> Date: Mon, 8 Apr 2019 11:14:10 +0200 Subject: Add optional position argument for add_point in Line2D --- doc/classes/Line2D.xml | 3 +++ scene/2d/line_2d.cpp | 10 +++++++--- scene/2d/line_2d.h | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml index 7efaf2b55f..8ef36e2725 100644 --- a/doc/classes/Line2D.xml +++ b/doc/classes/Line2D.xml @@ -16,8 +16,11 @@ + + Add a point at the [code]position[/code]. Appends the point at the end of the line. + If [code]at_position[/code] is given, the point is inserted before the point number [code]at_position[/code], moving that point (and every point after) after the inserted point. If [code]at_position[/code] is not given, or is an illegal value ([code]at_position < 0[/code] or [code]at_position >= [method get_point_count][/code]), the point will be appended at the end of the point list. diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp index 73692e0535..ba06b3ebff 100644 --- a/scene/2d/line_2d.cpp +++ b/scene/2d/line_2d.cpp @@ -120,8 +120,12 @@ void Line2D::clear_points() { } } -void Line2D::add_point(Vector2 pos) { - _points.append(pos); +void Line2D::add_point(Vector2 pos, int atpos) { + if (atpos < 0 || _points.size() < atpos) { + _points.append(pos); + } else { + _points.insert(atpos, pos); + } update(); } @@ -318,7 +322,7 @@ void Line2D::_bind_methods() { ClassDB::bind_method(D_METHOD("get_point_count"), &Line2D::get_point_count); - ClassDB::bind_method(D_METHOD("add_point", "position"), &Line2D::add_point); + ClassDB::bind_method(D_METHOD("add_point", "position", "at_position"), &Line2D::add_point, DEFVAL(-1)); ClassDB::bind_method(D_METHOD("remove_point", "i"), &Line2D::remove_point); ClassDB::bind_method(D_METHOD("clear_points"), &Line2D::clear_points); diff --git a/scene/2d/line_2d.h b/scene/2d/line_2d.h index 32befab2d3..8a6f7b2dc5 100644 --- a/scene/2d/line_2d.h +++ b/scene/2d/line_2d.h @@ -72,7 +72,7 @@ public: void clear_points(); - void add_point(Vector2 pos); + void add_point(Vector2 pos, int atpos = -1); void remove_point(int i); void set_width(float width); -- cgit v1.2.3