[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18973] branches/blender2.5/blender/source /blender/editors/armature/editarmature.c: 2.5

Michael Fox mfoxdogg at gmail.com
Sun Feb 15 00:21:40 CET 2009


Revision: 18973
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18973
Author:   mfoxdogg
Date:     2009-02-15 00:21:39 +0100 (Sun, 15 Feb 2009)

Log Message:
-----------
  2.5
*******
- made the armature selection ops use the new editbone/pchan context loops and a little house cleaning

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c

Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-02-14 21:31:34 UTC (rev 18972)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-02-14 23:21:39 UTC (rev 18973)
@@ -3514,20 +3514,14 @@
 
 static int armature_selection_invert_exec(bContext *C, wmOperator *op)
 {
-	Object *obedit = CTX_data_edit_object(C);
-	bArmature *arm= obedit->data;
-	EditBone *ebone;
-	
 	/*	Set the flags */
-	for (ebone=arm->edbo->first;ebone;ebone=ebone->next) {
+	CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) {
 		/* select bone */
-		if(arm->layer & ebone->layer && (ebone->flag & BONE_HIDDEN_A)==0) {
-			ebone->flag ^= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
-			ebone->flag &= ~BONE_ACTIVE;
-		}
-	}	
-	
-	/* undo? */
+		ebone->flag ^= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+		ebone->flag &= ~BONE_ACTIVE;
+	}
+	CTX_DATA_END;	
+
 	WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
 	
 	return OPERATOR_FINISHED;
@@ -3550,9 +3544,6 @@
 }
 static int armature_de_select_all_exec(bContext *C, wmOperator *op)
 {
-	Object *obedit = CTX_data_edit_object(C);
-	bArmature *arm= obedit->data;
-	EditBone *ebone;
 	int	sel=1;
 
 	/*	Determine if there are any selected bones
@@ -3560,22 +3551,20 @@
 	if (CTX_DATA_COUNT(C, selected_bones) > 0)	sel=0;
 	
 	/*	Set the flags */
-	for (ebone=arm->edbo->first;ebone;ebone=ebone->next) {
+	CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) {
 		if (sel==1) {
 			/* select bone */
-			if(arm->layer & ebone->layer && (ebone->flag & BONE_HIDDEN_A)==0) {
-				ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
-				if(ebone->parent)
-					ebone->parent->flag |= (BONE_TIPSEL);
-			}
+			ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
+			if(ebone->parent)
+				ebone->parent->flag |= (BONE_TIPSEL);
 		}
 		else {
 			/* deselect bone */
 			ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL | BONE_ACTIVE);
 		}
-	}	
-	
-	/* undo? */
+	}
+	CTX_DATA_END;	
+
 	WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
 	
 	return OPERATOR_FINISHED;
@@ -4426,13 +4415,12 @@
 	bPoseChannel *pchan;
 	
 	/*	Set the flags */
-	for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
-		if ((pchan->bone->layer & arm->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) {
-				pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
-				pchan->bone->flag &= ~BONE_ACTIVE;
-		}
+	CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+		pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
+		pchan->bone->flag &= ~BONE_ACTIVE;
 	}	
-
+	CTX_DATA_END;
+	
 	WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
 	
 	return OPERATOR_FINISHED;
@@ -4455,9 +4443,6 @@
 }
 static int pose_de_select_all_exec(bContext *C, wmOperator *op)
 {
-	Object *ob= CTX_data_active_object(C);
-	bArmature *arm= ob->data;
-	bPoseChannel *pchan;
 	int	sel=1;
 
 	/*	Determine if there are any selected bones
@@ -4465,12 +4450,12 @@
 	if (CTX_DATA_COUNT(C, selected_pchans) > 0)	sel=0;
 	
 	/*	Set the flags */
-	for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
-		if ((pchan->bone->layer & arm->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) {
-				if (sel==0) pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL|BONE_ACTIVE);
-				else pchan->bone->flag |= BONE_SELECTED;
-		}
-	}	
+	CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) {
+		/* select pchan */
+		if (sel==0) pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL|BONE_ACTIVE);
+		else pchan->bone->flag |= BONE_SELECTED;
+	}
+	CTX_DATA_END;	
 
 	WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
 	





More information about the Bf-blender-cvs mailing list