From 057fdf4224e0e07a6020cabd4d2a1ca4f307f0a5 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Mon, 1 Jul 2024 10:02:06 -0400 Subject: [PATCH] Fix: Sculpt: Dynamic topology restore from undo doesn't work We don't push individual nodes for undo, checking for an undo node wasn't correct. --- source/blender/editors/sculpt_paint/sculpt.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.cc b/source/blender/editors/sculpt_paint/sculpt.cc index 8cbbab85c04..fa7995a0624 100644 --- a/source/blender/editors/sculpt_paint/sculpt.cc +++ b/source/blender/editors/sculpt_paint/sculpt.cc @@ -1460,14 +1460,16 @@ static void restore_position(Object &object, const Span nodes) break; } case PBVH_BMESH: { - for (PBVHNode *node : nodes) { - if (undo::get_node(node, undo::Type::Position)) { + threading::parallel_for(nodes.index_range(), 1, [&](const IndexRange range) { + for (PBVHNode *node : nodes.slice(range)) { for (BMVert *vert : BKE_pbvh_bmesh_node_unique_verts(node)) { - copy_v3_v3(vert->co, BM_log_original_vert_co(ss.bm_log, vert)); + if (const float *orig_co = BM_log_find_original_vert_co(ss.bm_log, vert)) { + copy_v3_v3(vert->co, orig_co); + } } BKE_pbvh_node_mark_positions_update(node); } - } + }); break; } case PBVH_GRIDS: {