diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-07-13 06:01:28 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-07-26 10:55:53 +0300 |
commit | b2f2daf21f787260bf43e3efe9e5a1893d63ceea (patch) | |
tree | 166a9462872720ef639582b48593760c8d9fa26d | |
parent | 1a1510a3a0853abafecf22b698bf488305f88dda (diff) |
Fix object "Set Origin" operating on linked library data
Regression in d25747ee751096de2e417a7da1316bf5bf81c25a
-rw-r--r-- | source/blender/editors/object/object_transform.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 62a8b46e904..170ee78a25e 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -1198,32 +1198,33 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) else if (ID_IS_LINKED(ob->data)) { tot_lib_error++; } + else if (ob->type == OB_MESH) { + if (obedit == NULL) { + Mesh *me = ob->data; - if (obedit == NULL && ob->type == OB_MESH) { - Mesh *me = ob->data; - - if (centermode == ORIGIN_TO_CURSOR) { - /* done */ - } - else if (centermode == ORIGIN_TO_CENTER_OF_MASS_SURFACE) { - BKE_mesh_center_of_surface(me, cent); - } - else if (centermode == ORIGIN_TO_CENTER_OF_MASS_VOLUME) { - BKE_mesh_center_of_volume(me, cent); - } - else if (around == V3D_AROUND_CENTER_MEDIAN) { - BKE_mesh_center_median(me, cent); - } - else { - BKE_mesh_center_bounds(me, cent); - } + if (centermode == ORIGIN_TO_CURSOR) { + /* done */ + } + else if (centermode == ORIGIN_TO_CENTER_OF_MASS_SURFACE) { + BKE_mesh_center_of_surface(me, cent); + } + else if (centermode == ORIGIN_TO_CENTER_OF_MASS_VOLUME) { + BKE_mesh_center_of_volume(me, cent); + } + else if (around == V3D_AROUND_CENTER_BOUNDS) { + BKE_mesh_center_bounds(me, cent); + } + else { /* #V3D_AROUND_CENTER_MEDIAN. */ + BKE_mesh_center_median(me, cent); + } - negate_v3_v3(cent_neg, cent); - BKE_mesh_translate(me, cent_neg, 1); + negate_v3_v3(cent_neg, cent); + BKE_mesh_translate(me, cent_neg, 1); - tot_change++; - me->id.tag |= LIB_TAG_DOIT; - do_inverse_offset = true; + tot_change++; + me->id.tag |= LIB_TAG_DOIT; + do_inverse_offset = true; + } } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { Curve *cu = ob->data; |