diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-05-13 08:17:36 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-05-13 08:20:35 +0300 |
commit | 9d677212eef71c5c5709adfcdff218844c317b8f (patch) | |
tree | f427127413c290eb1e8c742bda97f5498c5a0a6a /source/blender/editors/transform | |
parent | 59c6487e9314dd43003af1a018fc092b041e7e10 (diff) |
Transform: fix regression in bound-box calculation
Error in multi-object merge.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index b7170682702..ed146eb3227 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1873,8 +1873,7 @@ void calculateCenterMedian(TransInfo *t, float r_center[3]) int total = 0; FOREACH_TRANS_DATA_CONTAINER (t, tc) { - int i; - for (i = 0; i < tc->data_len; i++) { + for (int i = 0; i < tc->data_len; i++) { if (tc->data[i].flag & TD_SELECTED) { if (!(tc->data[i].flag & TD_NOCENTER)) { if (tc->use_local_mat) { @@ -1898,34 +1897,29 @@ void calculateCenterMedian(TransInfo *t, float r_center[3]) void calculateCenterBound(TransInfo *t, float r_center[3]) { - float max[3]; - float min[3]; - int i; - bool is_first = true; + float max[3], min[3]; + bool changed = false; + INIT_MINMAX(min, max); FOREACH_TRANS_DATA_CONTAINER (t, tc) { - for (i = 0; i < tc->data_len; i++) { - if (is_first == false) { - if (tc->data[i].flag & TD_SELECTED) { - if (!(tc->data[i].flag & TD_NOCENTER)) { - if (tc->use_local_mat) { - float v[3]; - mul_v3_m4v3(v, tc->mat, tc->data[i].center); - minmax_v3v3_v3(min, max, v); - } - else { - minmax_v3v3_v3(min, max, tc->data[i].center); - } + for (int i = 0; i < tc->data_len; i++) { + if (tc->data[i].flag & TD_SELECTED) { + if (!(tc->data[i].flag & TD_NOCENTER)) { + if (tc->use_local_mat) { + float v[3]; + mul_v3_m4v3(v, tc->mat, tc->data[i].center); + minmax_v3v3_v3(min, max, v); + } + else { + minmax_v3v3_v3(min, max, tc->data[i].center); } + changed = true; } } - else { - copy_v3_v3(max, tc->data[i].center); - copy_v3_v3(min, tc->data[i].center); - is_first = false; - } } } - mid_v3_v3v3(r_center, min, max); + if (changed) { + mid_v3_v3v3(r_center, min, max); + } } /** |