[Bf-blender-cvs] [9d677212eef] blender2.8: Transform: fix regression in bound-box calculation

Campbell Barton noreply at git.blender.org
Sun May 13 07:21:10 CEST 2018


Commit: 9d677212eef71c5c5709adfcdff218844c317b8f
Author: Campbell Barton
Date:   Sun May 13 07:17:36 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB9d677212eef71c5c5709adfcdff218844c317b8f

Transform: fix regression in bound-box calculation

Error in multi-object merge.

===================================================================

M	source/blender/editors/transform/transform_generics.c

===================================================================

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);
+	}
 }
 
 /**



More information about the Bf-blender-cvs mailing list