Fix #116239: Propagate to Shapes overwrites all vertices with mirroring
Since 4d0dbab5b1, `EDBM_verts_mirror_cache` is used to find mirror
verts (but this was initialized with `use_select` being `true`, so the
cache was only set up for selected verts). `EDBM_verts_mirror_get`
behaves in a way that if you then query a vert that does not have a true
mirror, it would always return the vert with index zero in this case (so
basically would look like the index zero vert is the mirror for verts
not covered in the cache). Now if that zero index vert happened to be
selected, verts would not be skipped and the whole mesh would be
overwritten.
To solve this, we need to initialize the `EDBM_verts_mirror_cache` with
`use_select` being `false` -- this way all verts are covered and we
always get back the true mirror (checking selection on that one is fine
then and everything behaves as expected).
Pull Request: https://projects.blender.org/blender/blender/pulls/116329
This commit is contained in:
committed by
Philipp Oeser
parent
ae684ef81f
commit
820a0f7240
@@ -3760,7 +3760,7 @@ static int edbm_shape_propagate_to_all_exec(bContext *C, wmOperator *op)
|
||||
if (use_symmetry) {
|
||||
const bool use_topology = (mesh->editflag & ME_EDIT_MIRROR_TOPO) != 0;
|
||||
|
||||
EDBM_verts_mirror_cache_begin(em, 0, false, true, false, use_topology);
|
||||
EDBM_verts_mirror_cache_begin(em, 0, false, false, false, use_topology);
|
||||
}
|
||||
|
||||
if (shape_propagate(em, use_symmetry)) {
|
||||
|
||||
Reference in New Issue
Block a user