diff options
Diffstat (limited to 'scene/resources/curve.cpp')
-rw-r--r-- | scene/resources/curve.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp index d2aabf7d5c..2b54acef75 100644 --- a/scene/resources/curve.cpp +++ b/scene/resources/curve.cpp @@ -527,7 +527,7 @@ bool Curve::_set(const StringName &p_name, const Variant &p_value) { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { Vector2 position = p_value.operator Vector2(); set_point_offset(point_index, position.x); @@ -556,7 +556,7 @@ bool Curve::_get(const StringName &p_name, Variant &r_ret) const { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { r_ret = get_point_position(point_index); return true; @@ -977,7 +977,7 @@ Transform2D Curve2D::_sample_posture(Interval p_interval) const { const Vector2 forward = forward_begin.slerp(forward_end, frac).normalized(); const Vector2 side = Vector2(-forward.y, forward.x); - return Transform2D(side, forward, Vector2(0.0, 0.0)); + return Transform2D(forward, side, Vector2(0.0, 0.0)); } Vector2 Curve2D::sample_baked(real_t p_offset, bool p_cubic) const { @@ -1046,6 +1046,10 @@ real_t Curve2D::get_bake_interval() const { return bake_interval; } +PackedVector2Array Curve2D::get_points() const { + return _get_data()["points"]; +} + Vector2 Curve2D::get_closest_point(const Vector2 &p_to_point) const { // Brute force method. @@ -1255,7 +1259,7 @@ bool Curve2D::_set(const StringName &p_name, const Variant &p_value) { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { set_point_position(point_index, p_value); return true; @@ -1274,7 +1278,7 @@ bool Curve2D::_get(const StringName &p_name, Variant &r_ret) const { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { r_ret = get_point_position(point_index); return true; @@ -2220,7 +2224,7 @@ bool Curve3D::_set(const StringName &p_name, const Variant &p_value) { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { set_point_position(point_index, p_value); return true; @@ -2242,7 +2246,7 @@ bool Curve3D::_get(const StringName &p_name, Variant &r_ret) const { Vector<String> components = String(p_name).split("/", true, 2); if (components.size() >= 2 && components[0].begins_with("point_") && components[0].trim_prefix("point_").is_valid_int()) { int point_index = components[0].trim_prefix("point_").to_int(); - String property = components[1]; + const String &property = components[1]; if (property == "position") { r_ret = get_point_position(point_index); return true; |