Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7c28a53

Browse files
Fix the Spline node to maintain stable segment IDs (#3321)
Stable segment ids in the spline node
1 parent 1b9a492 commit 7c28a53

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

‎node-graph/gcore/src/vector/vector_nodes.rs‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -821,16 +821,17 @@ async fn vec2_to_point(_: impl Ctx, vec2: DVec2) -> Table<Vector> {
821821
async fn points_to_polyline(_: impl Ctx, mut points: Table<Vector>, #[default(true)] closed: bool) -> Table<Vector> {
822822
for row in points.iter_mut() {
823823
let mut segment_domain = SegmentDomain::new();
824+
let mut next_id = SegmentId::ZERO;
824825

825826
let points_count = row.element.point_domain.ids().len();
826827

827828
if points_count > 2 {
828829
(0..points_count - 1).for_each(|i| {
829-
segment_domain.push(SegmentId::generate(), i, i + 1, BezierHandles::Linear, StrokeId::generate());
830+
segment_domain.push(next_id.next_id(), i, i + 1, BezierHandles::Linear, StrokeId::generate());
830831
});
831832

832833
if closed {
833-
segment_domain.push(SegmentId::generate(), points_count - 1, 0, BezierHandles::Linear, StrokeId::generate());
834+
segment_domain.push(next_id.next_id(), points_count - 1, 0, BezierHandles::Linear, StrokeId::generate());
834835

835836
row.element
836837
.region_domain
@@ -1394,6 +1395,7 @@ async fn spline(_: impl Ctx, content: Table<Vector>) -> Table<Vector> {
13941395
}
13951396

13961397
let mut segment_domain = SegmentDomain::default();
1398+
let mut next_id = SegmentId::ZERO;
13971399
for (manipulator_groups, closed) in row.element.stroke_manipulator_groups() {
13981400
let positions = manipulator_groups.iter().map(|manipulators| manipulators.anchor).collect::<Vec<_>>();
13991401
let closed = closed && positions.len() > 2;
@@ -1418,7 +1420,7 @@ async fn spline(_: impl Ctx, content: Table<Vector>) -> Table<Vector> {
14181420
let handle_end = positions[next_index] * 2. - first_handles[next_index];
14191421
let handles = BezierHandles::Cubic { handle_start, handle_end };
14201422

1421-
segment_domain.push(SegmentId::generate(), start_index, end_index, handles, stroke_id);
1423+
segment_domain.push(next_id.next_id(), start_index, end_index, handles, stroke_id);
14221424
}
14231425
}
14241426

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /