[Bf-blender-cvs] [8c1c2b4] master: Use union for EditBone's

Campbell Barton noreply at git.blender.org
Sat Mar 28 15:52:19 CET 2015


Commit: 8c1c2b40a2131dc89e57ece3bc3b06c5a46f91d2
Author: Campbell Barton
Date:   Sat Mar 28 04:34:28 2015 +1100
Branches: master
https://developer.blender.org/rB8c1c2b40a2131dc89e57ece3bc3b06c5a46f91d2

Use union for EditBone's

Avoids complicated casts accessing as int

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

M	source/blender/editors/armature/armature_add.c
M	source/blender/editors/armature/armature_relations.c
M	source/blender/editors/armature/armature_select.c
M	source/blender/editors/armature/armature_utils.c
M	source/blender/editors/include/ED_armature.h
M	source/blender/editors/space_outliner/outliner_tree.c

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

diff --git a/source/blender/editors/armature/armature_add.c b/source/blender/editors/armature/armature_add.c
index 8074182..fb94c55 100644
--- a/source/blender/editors/armature/armature_add.c
+++ b/source/blender/editors/armature/armature_add.c
@@ -283,12 +283,8 @@ static EditBone *get_named_editbone(ListBase *edbo, const char *name)
  * */
 void preEditBoneDuplicate(ListBase *editbones)
 {
-	EditBone *eBone;
-	
 	/* clear temp */
-	for (eBone = editbones->first; eBone; eBone = eBone->next) {
-		eBone->temp = NULL;
-	}
+	ED_armature_ebone_listbase_temp_clear(editbones);
 }
 
 /*
@@ -328,8 +324,8 @@ void updateDuplicateSubtargetObjects(EditBone *dupBone, ListBase *editbones, Obj
 								 * so, update the constraint to point at the 
 								 * duplicate of the old subtarget.
 								 */
-								if (oldtarget->temp) {
-									newtarget = (EditBone *) oldtarget->temp;
+								if (oldtarget->temp.ebone) {
+									newtarget = oldtarget->temp.ebone;
 									BLI_strncpy(ct->subtarget, newtarget->name, sizeof(ct->subtarget));
 								}
 							}
@@ -358,8 +354,8 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, const char *name, ListBase
 	/*	Copy data from old bone to new bone */
 	memcpy(eBone, curBone, sizeof(EditBone));
 	
-	curBone->temp = eBone;
-	eBone->temp = curBone;
+	curBone->temp.ebone = eBone;
+	eBone->temp.ebone = curBone;
 	
 	if (name != NULL) {
 		BLI_strncpy(eBone->name, name, sizeof(eBone->name));
@@ -453,7 +449,7 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *UNUSED(op))
 		if (EBONE_VISIBLE(arm, ebone_iter) &&
 		    (ebone_iter->flag & BONE_SELECTED))
 		{
-			EditBone *ebone = ebone_iter->temp;
+			EditBone *ebone = ebone_iter->temp.ebone;
 
 			if (!ebone_iter->parent) {
 				/* If this bone has no parent,
@@ -461,11 +457,11 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *UNUSED(op))
 				 */
 				ebone->parent = NULL;
 			}
-			else if (ebone_iter->parent->temp) {
+			else if (ebone_iter->parent->temp.ebone) {
 				/* If this bone has a parent that was duplicated,
 				 * Set the duplicate->parent to the curBone->parent->temp
 				 */
-				ebone->parent = (EditBone *)ebone_iter->parent->temp;
+				ebone->parent = ebone_iter->parent->temp.ebone;
 			}
 			else {
 				/* If this bone has a parent that IS not selected,
@@ -483,8 +479,8 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *UNUSED(op))
 	}
 	
 	/* correct the active bone */
-	if (arm->act_edbone && arm->act_edbone->temp) {
-		arm->act_edbone = arm->act_edbone->temp;
+	if (arm->act_edbone && arm->act_edbone->temp.ebone) {
+		arm->act_edbone = arm->act_edbone->temp.ebone;
 	}
 
 	/* Deselect the old bones and select the new ones */
@@ -560,7 +556,7 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 				if (ebone) {
 					if ((ebone->flag & BONE_SELECTED) == 0) {
 						/* simple case, we're selected, the other bone isn't! */
-						ebone_iter->temp = ebone;
+						ebone_iter->temp.ebone = ebone;
 					}
 					else {
 						/* complicated - choose which direction to copy */
@@ -590,7 +586,7 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 								ebone_dst = ebone;
 							}
 
-							ebone_src->temp = ebone_dst;
+							ebone_src->temp.ebone = ebone_dst;
 							ebone_dst->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
 						}
 					}
@@ -604,7 +600,7 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 		if (EBONE_VISIBLE(arm, ebone_iter) &&
 		    (ebone_iter->flag & BONE_SELECTED) &&
 		    /* will be set if the mirror bone already exists (no need to make a new one) */
-		    (ebone_iter->temp == NULL))
+		    (ebone_iter->temp.ebone == NULL))
 		{
 			char name_flip[MAX_VGROUP_NAME];
 
@@ -625,11 +621,11 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 
 	/*	Run though the list and fix the pointers */
 	for (ebone_iter = arm->edbo->first; ebone_iter && ebone_iter != ebone_first_dupe; ebone_iter = ebone_iter->next) {
-		if (ebone_iter->temp) {
+		if (ebone_iter->temp.ebone) {
 			/* copy all flags except for ... */
 			const int flag_copy = ((int)~0) & ~(BONE_SELECTED | BONE_ROOTSEL | BONE_TIPSEL);
 
-			EditBone *ebone = ebone_iter->temp;
+			EditBone *ebone = ebone_iter->temp.ebone;
 
 			/* copy flags incase bone is pre-existing data */
 			ebone->flag = (ebone->flag & ~flag_copy) | (ebone_iter->flag & flag_copy);
@@ -644,8 +640,8 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 			else {
 				/* the parent may have been duplicated, if not lookup the mirror parent */
 				EditBone *ebone_parent =
-				        (ebone_iter->parent->temp ?
-				         ebone_iter->parent->temp : ED_armature_bone_get_mirrored(arm->edbo, ebone_iter->parent));
+				        (ebone_iter->parent->temp.ebone ?
+				         ebone_iter->parent->temp.ebone : ED_armature_bone_get_mirrored(arm->edbo, ebone_iter->parent));
 
 				if (ebone_parent == NULL) {
 					/* If the mirror lookup failed, (but the current bone has a parent)
@@ -680,15 +676,15 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
 
 	/* New bones will be selected, but some of the bones may already exist */
 	for (ebone_iter = arm->edbo->first; ebone_iter && ebone_iter != ebone_first_dupe; ebone_iter = ebone_iter->next) {
-		EditBone *ebone = ebone_iter->temp;
+		EditBone *ebone = ebone_iter->temp.ebone;
 		if (ebone && EBONE_SELECTABLE(arm, ebone)) {
 			ED_armature_ebone_select_set(ebone, true);
 		}
 	}
 
 	/* correct the active bone */
-	if (arm->act_edbone && arm->act_edbone->temp) {
-		arm->act_edbone = arm->act_edbone->temp;
+	if (arm->act_edbone && arm->act_edbone->temp.ebone) {
+		arm->act_edbone = arm->act_edbone->temp.ebone;
 	}
 
 	ED_armature_validate_active(arm);
diff --git a/source/blender/editors/armature/armature_relations.c b/source/blender/editors/armature/armature_relations.c
index 53989dd..4eb2159 100644
--- a/source/blender/editors/armature/armature_relations.c
+++ b/source/blender/editors/armature/armature_relations.c
@@ -548,7 +548,7 @@ static void separate_armature_bones(Object *ob, short sel)
 			for (ebo = arm->edbo->first; ebo; ebo = ebo->next) {
 				if (ebo->parent == curbone) {
 					ebo->parent = NULL;
-					ebo->temp = NULL; /* this is needed to prevent random crashes with in ED_armature_from_edit */
+					ebo->temp.p = NULL; /* this is needed to prevent random crashes with in ED_armature_from_edit */
 					ebo->flag &= ~BONE_CONNECTED;
 				}
 			}
diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c
index 720b9b7..c89c68f 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -55,8 +55,8 @@
 #include "armature_intern.h"
 
 /* utility macros fro storing a temp int in the bone (selection flag) */
-#define EBONE_PREV_FLAG_GET(ebone) ((void)0, (GET_INT_FROM_POINTER((ebone)->temp)))
-#define EBONE_PREV_FLAG_SET(ebone, val) ((ebone)->temp = SET_INT_IN_POINTER(val))
+#define EBONE_PREV_FLAG_GET(ebone) ((void)0, (ebone)->temp.i)
+#define EBONE_PREV_FLAG_SET(ebone, val) ((ebone)->temp.i = val)
 
 /* **************** PoseMode & EditMode Selection Buffer Queries *************************** */
 
@@ -685,7 +685,7 @@ static void armature_select_more_less(Object *ob, bool more)
 				}
 			}
 		}
-		ebone->temp = NULL;
+		ebone->temp.p = NULL;
 	}
 
 	ED_armature_sync_selection(arm->edbo);
diff --git a/source/blender/editors/armature/armature_utils.c b/source/blender/editors/armature/armature_utils.c
index 97f69d8..1835195 100644
--- a/source/blender/editors/armature/armature_utils.c
+++ b/source/blender/editors/armature/armature_utils.c
@@ -488,7 +488,7 @@ static void fix_bonelist_roll(ListBase *bonelist, ListBase *editbonelist)
 		
 		/* Find the associated editbone */
 		for (ebone = editbonelist->first; ebone; ebone = ebone->next)
-			if ((Bone *)ebone->temp == curBone)
+			if (ebone->temp.bone == curBone)
 				break;
 		
 		if (ebone) {
@@ -548,7 +548,7 @@ void ED_armature_from_edit(bArmature *arm)
 	/*	Copy the bones from the editData into the armature */
 	for (eBone = arm->edbo->first; eBone; eBone = eBone->next) {
 		newBone = MEM_callocN(sizeof(Bone), "bone");
-		eBone->temp = newBone;   /* Associate the real Bones with the EditBones */
+		eBone->temp.bone = newBone;   /* Associate the real Bones with the EditBones */
 		
 		BLI_strncpy(newBone->name, eBone->name, sizeof(newBone->name));
 		copy_v3_v3(newBone->arm_head, eBone->head);
@@ -584,9 +584,9 @@ void ED_armature_from_edit(bArmature *arm)
 	/* Fix parenting in a separate pass to ensure ebone->bone connections
 	 * are valid at this point */
 	for (eBone = arm->edbo->first; eBone; eBone = eBone->next) {
-		newBone = (Bone *)eBone->temp;
+		newBone = eBone->temp.bone;
 		if (eBone->parent) {
-			newBone->parent = (Bone *)eBone->parent->temp;
+			newBone->parent = eBone->parent->temp.bone;
 			BLI_addtail(&newBone->parent->childbase, newBone);
 			
 			{
@@ -695,24 +695,24 @@ static void ED_armature_ebone_listbase_copy(ListBase *lb_dst, ListBase *lb_src)
 		if (ebone_dst->prop) {
 			ebone_dst->prop = IDP_CopyProperty(ebone_dst->prop);
 		}
-		ebone_src->temp = ebone_dst;
+		ebone_src->temp.ebone = ebone_dst;
 		BLI_addtail(lb_dst, ebone_dst);
 	}
 
 	/* set pointers */
 	for (ebone_dst = lb_dst->first; ebone_dst; ebone_dst = ebone_dst->next) {
 		if (ebone_dst->parent) {
-			ebone_dst->parent = ebone_dst->parent->temp;
+			ebone_dst->parent = ebone_dst->parent->temp.ebone;
 		}
 	}
 }
 
-static void ED_armature_ebone_listbase_temp_clear(ListBase *lb)
+void ED_armature_ebone_listbase_temp_clear(ListBase *lb)
 {
 	EditBone *ebone;
 	/* be sure they don't hang ever */
 	for (ebone = lb->first; ebone; ebone = ebone->next) {
-		ebone->temp = NULL;
+		ebone->temp.p = NULL;
 	}
 }
 
@@ -733,7 +733,7 @@ static void undoBones_to_editBones(void *uarmv, void *armv, void *UNUSED(data))
 	/* active bone */
 	if (uarm->act_edbone) {
 		ebone = uarm->act_edbone;
-		arm->act_edbone = ebone->temp;
+		arm->act_edbone = ebone->temp.ebone;
 	}
 	else {
 		arm->act_edbone = NULL;
@@ -755,7 +755,7 @@ static void *editBones_to_undoBones

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list