[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24878] trunk/blender/source/blender/ editors: ED_armature_edit_bone_remove wasnt clearing references from other bones, only affects rna api access

Campbell Barton ideasman42 at gmail.com
Wed Nov 25 12:47:53 CET 2009


Revision: 24878
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24878
Author:   campbellbarton
Date:     2009-11-25 12:47:53 +0100 (Wed, 25 Nov 2009)

Log Message:
-----------
ED_armature_edit_bone_remove wasnt clearing references from other bones, only affects rna api access

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/editarmature.c
    trunk/blender/source/blender/editors/include/ED_armature.h

Modified: trunk/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature.c	2009-11-25 11:05:11 UTC (rev 24877)
+++ trunk/blender/source/blender/editors/armature/editarmature.c	2009-11-25 11:47:53 UTC (rev 24878)
@@ -141,7 +141,7 @@
 	}
 }
 
-void ED_armature_edit_bone_remove(bArmature *arm, EditBone *bone)
+static void bone_free(bArmature *arm, EditBone *bone)
 {
 	if(arm->act_edbone==bone)
 		arm->act_edbone= NULL;
@@ -154,6 +154,22 @@
 	BLI_freelinkN(arm->edbo, bone);
 }
 
+void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone)
+{
+	EditBone *curBone;
+
+	/* Find any bones that refer to this bone */
+	for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
+		if (curBone->parent==exBone) {
+			curBone->parent=exBone->parent;
+			curBone->flag &= ~BONE_CONNECTED;
+		}
+	}
+
+	bone_free(arm, exBone);
+}
+
+
 /* converts Bones to EditBone list, used for tools as well */
 EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone)
 {
@@ -305,7 +321,7 @@
 					fBone->parent= eBone->parent;
 			}
 			printf("Warning: removed zero sized bone: %s\n", eBone->name);
-			ED_armature_edit_bone_remove(arm, eBone);
+			bone_free(arm, eBone);
 		}
 	}
 	
@@ -1035,7 +1051,7 @@
 			free_pose_channel(pchan);
 			
 			/* get rid of unneeded bone */
-			ED_armature_edit_bone_remove(arm, curbone);
+			bone_free(arm, curbone);
 			BLI_freelinkN(&ob->pose->chanbase, pchan);
 		}
 	}
@@ -1671,22 +1687,6 @@
 	return NULL;
 }
 
-/* warning, wont clear the active bone */
-static void delete_bone(bArmature *arm, EditBone* exBone)
-{
-	EditBone *curBone;
-	
-	/* Find any bones that refer to this bone */
-	for (curBone=arm->edbo->first; curBone; curBone=curBone->next) {
-		if (curBone->parent==exBone) {
-			curBone->parent=exBone->parent;
-			curBone->flag &= ~BONE_CONNECTED;
-		}
-	}
-
-	ED_armature_edit_bone_remove(arm, exBone);
-}
-
 /* context: editmode armature */
 EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo)
 {
@@ -1783,7 +1783,7 @@
 		if (arm->layer & curBone->layer) {
 			if (curBone->flag & BONE_SELECTED) {
 				if(curBone==arm->act_edbone) arm->act_edbone= NULL;
-				delete_bone(arm, curBone);
+				ED_armature_edit_bone_remove(arm, curBone);
 			}
 		}
 	}
@@ -3102,7 +3102,7 @@
 	/* step 3: delete all bones between and including start and end */
 	for (ebo= end; ebo; ebo= ebone) {
 		ebone= (ebo == start) ? (NULL) : (ebo->parent);
-		ED_armature_edit_bone_remove(arm, ebo);
+		bone_free(arm, ebo);
 	}
 }
 
@@ -5660,7 +5660,7 @@
 		if (parent == root)
 		{
 			if(parent==arm->act_edbone) arm->act_edbone= NULL;
-			delete_bone(arm, parent);
+			ED_armature_edit_bone_remove(arm, parent);
 			parent = NULL;
 		}
 		

Modified: trunk/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_armature.h	2009-11-25 11:05:11 UTC (rev 24877)
+++ trunk/blender/source/blender/editors/include/ED_armature.h	2009-11-25 11:47:53 UTC (rev 24878)
@@ -117,7 +117,7 @@
 
 void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
 struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name);
-void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *bone);
+void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *exBone);
 
 void transform_armature_mirror_update(struct Object *obedit);
 void clear_armature(struct Scene *scene, struct Object *ob, char mode);





More information about the Bf-blender-cvs mailing list