[Bf-blender-cvs] [05617a068e6] temp-object-multi-mode: TMP

Campbell Barton noreply at git.blender.org
Tue Apr 10 19:11:52 CEST 2018


Commit: 05617a068e61d2ab3d5807ca98fd7802311f06a9
Author: Campbell Barton
Date:   Mon Apr 9 17:36:47 2018 +0200
Branches: temp-object-multi-mode
https://developer.blender.org/rB05617a068e61d2ab3d5807ca98fd7802311f06a9

TMP

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

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

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

diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 2d068a351ab..3eeeab31512 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -8098,7 +8098,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
 	 * For now, we just do these without creating TransData2D for the 2D
 	 * strokes. This may cause issues in future though.
 	 */
-	t->total = 0;
+	th->total = 0;
 	
 	if (gpd == NULL)
 		return;
@@ -8127,11 +8127,11 @@ static void createTransGPencil(bContext *C, TransInfo *t)
 					if (is_prop_edit_connected) {
 						/* connected only - so only if selected */
 						if (gps->flag & GP_STROKE_SELECT)
-							t->total += gps->totpoints;
+							th->total += gps->totpoints;
 					}
 					else {
 						/* everything goes - connection status doesn't matter */
-						t->total += gps->totpoints;
+						th->total += gps->totpoints;
 					}
 				}
 				else {
@@ -8143,7 +8143,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
 						// TODO: 2D vs 3D?
 						for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
 							if (pt->flag & GP_SPOINT_SELECT)
-								t->total++;
+								th->total++;
 						}
 					}
 				}				
@@ -8152,13 +8152,13 @@ static void createTransGPencil(bContext *C, TransInfo *t)
 	}
 	
 	/* Stop trying if nothing selected */
-	if (t->total == 0) {
+	if (th->total == 0) {
 		return;
 	}
 	
 	/* Allocate memory for data */
-	t->data = MEM_callocN(t->total * sizeof(TransData), "TransData(GPencil)");
-	td = t->data;
+	th->data = MEM_callocN(th->total * sizeof(TransData), "TransData(GPencil)");
+	td = th->data;
 	
 	unit_m3(smtx);
 	unit_m3(mtx);
@@ -8339,10 +8339,13 @@ void createTransData(bContext *C, TransInfo *t)
 		createTransTexspace(t);
 	}
 	else if (t->options & CTX_EDGE) {
-		t->ext = NULL;
 		t->flag |= T_EDIT;
+		FOREACH_THAND (t, th) {
+			th->ext = NULL;
+		}
+
 		createTransEdge(t);
-		if (t->data && t->flag & T_PROP_EDIT) {
+		if (t->total_all_handle && t->flag & T_PROP_EDIT) {
 			sort_trans_data(t); // makes selected become first in array
 			set_prop_dist(t, 1);
 			sort_trans_data_dist(t);
@@ -8353,7 +8356,7 @@ void createTransData(bContext *C, TransInfo *t)
 		t->flag |= T_POINTS;
 		createTransGPencil(C, t);
 		
-		if (t->data && (t->flag & T_PROP_EDIT)) {
+		if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 			sort_trans_data(t); // makes selected become first in array
 			set_prop_dist(t, 1);
 			sort_trans_data_dist(t);
@@ -8365,7 +8368,7 @@ void createTransData(bContext *C, TransInfo *t)
 			/* copied from below */
 			createTransMaskingData(C, t);
 
-			if (t->data && (t->flag & T_PROP_EDIT)) {
+			if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 				sort_trans_data(t); // makes selected become first in array
 				set_prop_dist(t, true);
 				sort_trans_data_dist(t);
@@ -8375,9 +8378,9 @@ void createTransData(bContext *C, TransInfo *t)
 			if (!ELEM(t->mode, TFM_SHEAR, TFM_SHRINKFATTEN))
 				createTransPaintCurveVerts(C, t);
 		}
-		else if (t->obedit) {
+		else if (t->flag & T_EDIT) {
 			createTransUVs(C, t);
-			if (t->data && (t->flag & T_PROP_EDIT)) {
+			if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 				sort_trans_data(t); // makes selected become first in array
 				set_prop_dist(t, 1);
 				sort_trans_data_dist(t);
@@ -8388,7 +8391,7 @@ void createTransData(bContext *C, TransInfo *t)
 		t->flag |= T_POINTS | T_2D_EDIT;
 		createTransActionData(C, t);
 
-		if (t->data && (t->flag & T_PROP_EDIT)) {
+		if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 			sort_trans_data(t); // makes selected become first in array
 			//set_prop_dist(t, false); /* don't do that, distance has been set in createTransActionData already */
 			sort_trans_data_dist(t);
@@ -8407,7 +8410,7 @@ void createTransData(bContext *C, TransInfo *t)
 		t->flag |= T_POINTS | T_2D_EDIT;
 		createTransGraphEditData(C, t);
 
-		if (t->data && (t->flag & T_PROP_EDIT)) {
+		if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 			sort_trans_data(t); // makes selected become first in array
 			set_prop_dist(t, false); /* don't do that, distance has been set in createTransGraphEditData already */
 			sort_trans_data_dist(t);
@@ -8416,7 +8419,7 @@ void createTransData(bContext *C, TransInfo *t)
 	else if (t->spacetype == SPACE_NODE) {
 		t->flag |= T_POINTS | T_2D_EDIT;
 		createTransNodeData(C, t);
-		if (t->data && (t->flag & T_PROP_EDIT)) {
+		if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 			sort_trans_data(t); // makes selected become first in array
 			set_prop_dist(t, 1);
 			sort_trans_data_dist(t);
@@ -8430,28 +8433,30 @@ void createTransData(bContext *C, TransInfo *t)
 			/* copied from above */
 			createTransMaskingData(C, t);
 
-			if (t->data && (t->flag & T_PROP_EDIT)) {
+			if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
 				sort_trans_data(t); // makes selected become first in array
 				set_prop_dist(t, true);
 				sort_trans_data_dist(t);
 			}
 		}
 	}
-	else if (t->obedit) {
-		t->ext = NULL;
-		if (t->obedit->type == OB_MESH) {
+	else if (t->flag & T_EDIT) {
+		FOREACH_THAND (t, th) {
+			th->ext = NULL;
+		}
+		if (t->obedit_type == OB_MESH) {
 			createTransEditVerts(t);
 		}
-		else if (ELEM(t->obedit->type, OB_CURVE, OB_SURF)) {
+		else if (ELEM(t->obedit_type, OB_CURVE, OB_SURF)) {
 			createTransCurveVerts(t);
 		}
-		else if (t->obedit->type == OB_LATTICE) {
+		else if (t->obedit_type == OB_LATTICE) {
 			createTransLatticeVerts(t);
 		}
-		else if (t->obedit->type == OB_MBALL) {
+		else if (t->obedit_type == OB_MBALL) {
 			createTransMBallVerts(t);
 		}
-		else if (t->obedit->type == OB_ARMATURE) {
+		else if (t->obedit_type == OB_ARMATURE) {
 			t->flag &= ~T_PROP_EDIT;
 			createTransArmatureVerts(t);
 		}
@@ -8461,10 +8466,10 @@ void createTransData(bContext *C, TransInfo *t)
 
 		t->flag |= T_EDIT | T_POINTS;
 
-		if (t->data && t->flag & T_PROP_EDIT) {
-			if (ELEM(t->obedit->type, OB_CURVE, OB_MESH)) {
+		if (t->total_all_handle && t->flag & T_PROP_EDIT) {
+			if (ELEM(t->obedit_type, OB_CURVE, OB_MESH)) {
 				sort_trans_data(t); // makes selected become first in array
-				if ((t->obedit->type == OB_MESH) && (t->flag & T_PROP_CONNECTED)) {
+				if ((t->obedit_type == OB_MESH) && (t->flag & T_PROP_CONNECTED)) {
 					/* already calculated by editmesh_set_connectivity_distance */
 				}
 				else {
@@ -8483,13 +8488,17 @@ void createTransData(bContext *C, TransInfo *t)
 		if (t->mode == TFM_BONESIZE) {
 			t->flag &= ~(T_EDIT | T_POINTS);
 			t->flag |= T_POSE;
-			t->poseobj = ob;    /* <- tsk tsk, this is going to give issues one day */
+
+			FOREACH_THAND (t, th) {
+				th->poseobj = th->obedit;
+				th->obedit = NULL;
+			}
 		}
 	}
 	else if (ob && (ob->mode & OB_MODE_POSE)) {
 		// XXX this is currently limited to active armature only...
 		// XXX active-layer checking isn't done as that should probably be checked through context instead
-		Object **objects[1];
+		Object *objects[1];
 		objects[0] = ob;
 		uint objects_len = 1;
 		createTransPose(t, objects, objects_len);
@@ -8502,7 +8511,7 @@ void createTransData(bContext *C, TransInfo *t)
 			Base *base_arm = BKE_view_layer_base_find(t->view_layer, ob_armature);
 			if (base_arm) {
 				if (BASE_VISIBLE(base_arm)) {
-					Object **objects[1];
+					Object *objects[1];
 					objects[0] = ob_armature;
 					uint objects_len = 1;
 					createTransPose(t, objects, objects_len);
@@ -8514,7 +8523,7 @@ void createTransData(bContext *C, TransInfo *t)
 		createTransParticleVerts(C, t);
 		t->flag |= T_POINTS;
 
-		if (t->data && t->flag & T_PROP_EDIT) {
+		if (t->total_all_handle && t->flag & T_PROP_EDIT) {
 			sort_trans_data(t); // makes selected become first in array
 			set_prop_dist(t, 1);
 			sort_trans_data_dist(t);
@@ -8530,7 +8539,7 @@ void createTransData(bContext *C, TransInfo *t)
 		createTransObject(C, t);
 		t->flag |= T_OBJECT;
 
-		if (t->data && t->flag & T_PROP_EDIT) {
+		if (t->total_all_handle && t->flag & T_PROP_EDIT) {
 			// selected objects are already first, no need to presort
 			set_prop_dist(t, 1);
 			sort_trans_data_dist(t);
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 707a6eeeae9..6cd7d2f6a9b 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -167,7 +167,7 @@ static void clipMirrorModifier(TransInfo *t)
 					}
 					
 					TransData *td = th->data;
-					for (i = 0; i < t->total; i++, td++) {
+					for (i = 0; i < th->total; i++, td++) {
 						int clip;
 						float loc[3], iloc[3];
 						
@@ -231,11 +231,12 @@ static void clipMirrorModifier(TransInfo *t)
 /* assumes obedit set to mesh object */
 static void editbmesh_apply_to_mirror(TransInfo *t)
 {
-	TransData *td = t->data;
+	FOREACH_THAND (t, th) {
+	TransData *td = th->data;
 	BMVert *eve;
 	int i;
-	
-	for (i = 0; i < t->total; i++, td++) {
+
+	for (i = 0; i < th->total; i++, td++) {
 		if (td->flag & TD_NOACTION)
 			break;
 		if (td->loc == NULL)
@@ -254,6 +255,8 @@ static void editbmesh_apply_to_mirror(TransInfo *t)
 			td->loc[0] = 0;
 		}
 	}
+
+	} // FIXME(indent)
 }
 
 /* for the realtime animation recording feature, handle overlapping data */
@@ -436,12 +439,16 @@ static void recalcData_nla(TransInfo *t)
 	Scene *scene = t->scene;
 	double secf = FPS;
 	int i;
-	
+
+	/* only ever one */
+	BLI_assert(t->thand_len == 1);
+	TransHandle *th = &t->thand[0];
+
 	/* for each strip we've got, perform some additional validation of the values that got set before
 	 * using RNA to set the value (which does some special operations when setting these values to make
 	 * sure that everything works ok)
 	 */
-	for (i = 0; i < t->total; i++, tdn++) {
+	for (i = 0; i < th->total; i++, tdn++) {
 		NlaStrip *strip = tdn->strip;
 		PointerRNA strip_ptr;
 		short pExceeded, nExceeded, iter;
@@ -658,14 +665,18 @@ static void recalcData_image(TransInfo *t)
 	else if (t->options & CTX_PAINT_CURVE) {
 		flushTransPaintCurve(t);
 	}
-	else if (t->obedit && t->obedit->type == OB_MESH) {
+	else if ((t-

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list