Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-05-13 08:17:36 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-05-13 08:20:35 +0300
commit9d677212eef71c5c5709adfcdff218844c317b8f (patch)
treef427127413c290eb1e8c742bda97f5498c5a0a6a /source/blender/editors/transform
parent59c6487e9314dd43003af1a018fc092b041e7e10 (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.c42
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);
+ }
}
/**