From e836c806e494347ead406b7b52a5e4c57f095bb3 Mon Sep 17 00:00:00 2001 From: Pablo Dobarro Date: Mon, 2 Nov 2020 22:54:19 +0100 Subject: Fix T81842: Cloth brush not creating simulation areas for each tiling symmetry pass The cloth brush fixed simulation areas are created using the initial_location variable in the StrokeCache. This variable was not being updated by tiling symmetry, so all symmetry passes were using the same simulation area location. Reviewed By: sergey Maniphest Tasks: T81842 Differential Revision: https://developer.blender.org/D9421 --- source/blender/editors/sculpt_paint/sculpt.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source/blender/editors/sculpt_paint/sculpt.c') diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index ae0d43bcf5c..56b5a494df0 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -6242,7 +6242,9 @@ static void do_tiled( /* Position of the "prototype" stroke for tiling. */ float orgLoc[3]; + float original_initial_location[3]; copy_v3_v3(orgLoc, cache->location); + copy_v3_v3(original_initial_location, cache->initial_location); for (int dim = 0; dim < 3; dim++) { if ((sd->paint.symmetry_flags & (PAINT_TILE_X << dim)) && step[dim] > 0) { @@ -6273,6 +6275,7 @@ static void do_tiled( for (int dim = 0; dim < 3; dim++) { cache->location[dim] = cur[dim] * step[dim] + orgLoc[dim]; cache->plane_offset[dim] = cur[dim] * step[dim]; + cache->initial_location[dim] = cur[dim] * step[dim] + original_initial_location[dim]; } action(sd, ob, brush, ups); } -- cgit v1.2.3