Skip to content

Commit cd71f97

Browse files
fix changed signal emission in Curve::set_point_offset
1 parent b5bdb88 commit cd71f97

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

scene/resources/curve.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void Curve::set_point_count(int p_count) {
5656
notify_property_list_changed();
5757
}
5858

59-
int Curve::_add_point(Vector2 p_position, real_t p_left_tangent, real_t p_right_tangent, TangentMode p_left_mode, TangentMode p_right_mode) {
59+
int Curve::_add_point(Vector2 p_position, real_t p_left_tangent, real_t p_right_tangent, TangentMode p_left_mode, TangentMode p_right_mode, bool p_mark_dirty) {
6060
// Add a point and preserve order.
6161

6262
// Points must remain within the given value and domain ranges.
@@ -99,7 +99,9 @@ int Curve::_add_point(Vector2 p_position, real_t p_left_tangent, real_t p_right_
9999

100100
update_auto_tangents(ret);
101101

102-
mark_dirty();
102+
if (p_mark_dirty) {
103+
mark_dirty();
104+
}
103105

104106
return ret;
105107
}
@@ -221,10 +223,12 @@ Curve::TangentMode Curve::get_point_right_mode(int p_index) const {
221223
return _points[p_index].right_mode;
222224
}
223225

224-
void Curve::_remove_point(int p_index) {
226+
void Curve::_remove_point(int p_index, bool p_mark_dirty) {
225227
ERR_FAIL_UNSIGNED_INDEX((uint32_t)p_index, _points.size());
226228
_points.remove_at(p_index);
227-
mark_dirty();
229+
if (p_mark_dirty) {
230+
mark_dirty();
231+
}
228232
}
229233

230234
void Curve::remove_point(int p_index) {
@@ -252,16 +256,13 @@ void Curve::set_point_value(int p_index, real_t p_position) {
252256
int Curve::set_point_offset(int p_index, real_t p_offset) {
253257
ERR_FAIL_UNSIGNED_INDEX_V((uint32_t)p_index, _points.size(), -1);
254258
Point p = _points[p_index];
255-
_remove_point(p_index);
256-
int i = _add_point(Vector2(p_offset, p.position.y));
257-
_points[i].left_tangent = p.left_tangent;
258-
_points[i].right_tangent = p.right_tangent;
259-
_points[i].left_mode = p.left_mode;
260-
_points[i].right_mode = p.right_mode;
259+
_remove_point(p_index, false);
260+
int i = _add_point(Vector2(p_offset, p.position.y), p.left_tangent, p.right_tangent, p.left_mode, p.right_mode, false);
261261
if (p_index != i) {
262262
update_auto_tangents(p_index);
263263
}
264264
update_auto_tangents(i);
265+
mark_dirty();
265266
return i;
266267
}
267268

scene/resources/curve.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@ class Curve : public Resource {
7676
void set_point_count(int p_count);
7777

7878
int add_point(Vector2 p_position,
79-
real_t left_tangent = 0,
80-
real_t right_tangent = 0,
81-
TangentMode left_mode = TANGENT_FREE,
82-
TangentMode right_mode = TANGENT_FREE);
79+
real_t p_left_tangent = 0,
80+
real_t p_right_tangent = 0,
81+
TangentMode p_left_mode = TANGENT_FREE,
82+
TangentMode p_right_mode = TANGENT_FREE);
8383
int add_point_no_update(Vector2 p_position,
84-
real_t left_tangent = 0,
85-
real_t right_tangent = 0,
86-
TangentMode left_mode = TANGENT_FREE,
87-
TangentMode right_mode = TANGENT_FREE);
84+
real_t p_left_tangent = 0,
85+
real_t p_right_tangent = 0,
86+
TangentMode p_left_mode = TANGENT_FREE,
87+
TangentMode p_right_mode = TANGENT_FREE);
8888
void remove_point(int p_index);
8989
void clear_points();
9090

@@ -126,10 +126,10 @@ class Curve : public Resource {
126126
TangentMode get_point_left_mode(int p_index) const;
127127
TangentMode get_point_right_mode(int p_index) const;
128128

129-
void update_auto_tangents(int i);
129+
void update_auto_tangents(int p_index);
130130

131131
Array get_data() const;
132-
void set_data(Array input);
132+
void set_data(Array p_input);
133133

134134
void bake();
135135
void _bake() const;
@@ -149,11 +149,12 @@ class Curve : public Resource {
149149
private:
150150
void mark_dirty();
151151
int _add_point(Vector2 p_position,
152-
real_t left_tangent = 0,
153-
real_t right_tangent = 0,
154-
TangentMode left_mode = TANGENT_FREE,
155-
TangentMode right_mode = TANGENT_FREE);
156-
void _remove_point(int p_index);
152+
real_t p_left_tangent = 0,
153+
real_t p_right_tangent = 0,
154+
TangentMode p_left_mode = TANGENT_FREE,
155+
TangentMode p_right_mode = TANGENT_FREE,
156+
bool p_mark_dirty = true);
157+
void _remove_point(int p_index, bool p_mark_dirty = true);
157158

158159
LocalVector<Point> _points;
159160
mutable bool _baked_cache_dirty = false;

0 commit comments

Comments
 (0)