[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21874] branches/blender2.5/blender: 2. 5 - Restored most of the remaining Armature/Pose Operators

Joshua Leung aligorith at gmail.com
Sat Jul 25 07:11:31 CEST 2009


Revision: 21874
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21874
Author:   aligorith
Date:     2009-07-25 07:11:28 +0200 (Sat, 25 Jul 2009)

Log Message:
-----------
2.5 - Restored most of the remaining Armature/Pose Operators

* Armature:
- added: fill, merge, separate
- renamed: duplicate, align

* Pose:
- added: apply pose

* Armature Edit menu has been converted to use operators/layout now

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
    branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
    branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c

Modified: branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-07-25 04:52:44 UTC (rev 21873)
+++ branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-07-25 05:11:28 UTC (rev 21874)
@@ -199,7 +199,7 @@
 
 		col = layout.column(align=True)
 		col.itemO("armature.bone_primitive_add", text="Add")
-		col.itemO("armature.duplicate_selected", text="Duplicate")
+		col.itemO("armature.duplicate", text="Duplicate")
 		col.itemO("armature.delete", text="Delete")
 		
 		layout.itemL(text="Modeling:")

Modified: branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h	2009-07-25 04:52:44 UTC (rev 21873)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h	2009-07-25 05:11:28 UTC (rev 21874)
@@ -34,7 +34,7 @@
 /* editarmature.c operators */
 void ARMATURE_OT_bone_primitive_add(struct wmOperatorType *ot);
 
-void ARMATURE_OT_bones_align(struct wmOperatorType *ot);
+void ARMATURE_OT_align(struct wmOperatorType *ot);
 void ARMATURE_OT_calculate_roll(struct wmOperatorType *ot);
 void ARMATURE_OT_switch_direction(struct wmOperatorType *ot);
 
@@ -51,10 +51,14 @@
 void ARMATURE_OT_select_linked(struct wmOperatorType *ot);
 
 void ARMATURE_OT_delete(struct wmOperatorType *ot);
-void ARMATURE_OT_duplicate_selected(struct wmOperatorType *ot);
+void ARMATURE_OT_duplicate(struct wmOperatorType *ot);
 void ARMATURE_OT_extrude(struct wmOperatorType *ot);
 void ARMATURE_OT_click_extrude(struct wmOperatorType *ot);
+void ARMATURE_OT_fill(struct wmOperatorType *ot);
+void ARMATURE_OT_merge(struct wmOperatorType *ot);
 
+void ARMATURE_OT_separate(struct wmOperatorType *ot);
+
 void ARMATURE_OT_autoside_names(struct wmOperatorType *ot);
 void ARMATURE_OT_flip_names(struct wmOperatorType *ot);
 
@@ -63,6 +67,8 @@
 void POSE_OT_hide(struct wmOperatorType *ot);
 void POSE_OT_reveal(struct wmOperatorType *ot);
 
+void POSE_OT_apply(struct wmOperatorType *ot);
+
 void POSE_OT_rot_clear(struct wmOperatorType *ot);
 void POSE_OT_loc_clear(struct wmOperatorType *ot);
 void POSE_OT_scale_clear(struct wmOperatorType *ot);

Modified: branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c	2009-07-25 04:52:44 UTC (rev 21873)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c	2009-07-25 05:11:28 UTC (rev 21874)
@@ -110,7 +110,7 @@
 	/* EDIT ARMATURE */
 	WM_operatortype_append(ARMATURE_OT_bone_primitive_add);
 	
-	WM_operatortype_append(ARMATURE_OT_bones_align);
+	WM_operatortype_append(ARMATURE_OT_align);
 	WM_operatortype_append(ARMATURE_OT_calculate_roll);
 	WM_operatortype_append(ARMATURE_OT_switch_direction);
 	WM_operatortype_append(ARMATURE_OT_subdivs);
@@ -126,10 +126,14 @@
 	WM_operatortype_append(ARMATURE_OT_select_linked);
 
 	WM_operatortype_append(ARMATURE_OT_delete);
-	WM_operatortype_append(ARMATURE_OT_duplicate_selected);
+	WM_operatortype_append(ARMATURE_OT_duplicate);
 	WM_operatortype_append(ARMATURE_OT_extrude);
 	WM_operatortype_append(ARMATURE_OT_click_extrude);
+	WM_operatortype_append(ARMATURE_OT_fill);
+	WM_operatortype_append(ARMATURE_OT_merge);
 	
+	WM_operatortype_append(ARMATURE_OT_separate);
+	
 	WM_operatortype_append(ARMATURE_OT_autoside_names);
 	WM_operatortype_append(ARMATURE_OT_flip_names);
 
@@ -146,6 +150,8 @@
 	WM_operatortype_append(POSE_OT_hide);
 	WM_operatortype_append(POSE_OT_reveal);
 	
+	WM_operatortype_append(POSE_OT_apply);
+	
 	WM_operatortype_append(POSE_OT_rot_clear);
 	WM_operatortype_append(POSE_OT_loc_clear);
 	WM_operatortype_append(POSE_OT_scale_clear);
@@ -173,7 +179,6 @@
 	WM_operatortype_append(POSE_OT_autoside_names);
 	WM_operatortype_append(POSE_OT_flip_names);
 	
-	
 	/* POSELIB */
 	WM_operatortype_append(POSELIB_OT_browse_interactive);
 	
@@ -195,7 +200,7 @@
 	
 	/* only set in editmode armature, by space_view3d listener */
 //	WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "ARMATURE_OT_bones_align", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_align", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_calculate_roll", NKEY, KM_PRESS, KM_CTRL, 0);
 	
 	WM_keymap_add_item(keymap, "ARMATURE_OT_switch_direction", FKEY, KM_PRESS, KM_ALT, 0);
@@ -225,13 +230,18 @@
 		RNA_boolean_set(kmi->ptr, "extend", 1);
 
 	WM_keymap_add_item(keymap, "ARMATURE_OT_select_linked", LKEY, KM_PRESS, 0, 0);
+	
 	WM_keymap_add_item(keymap, "ARMATURE_OT_delete", XKEY, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_selected", DKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, 0, 0);
 	kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, KM_SHIFT, 0);
 		RNA_boolean_set(kmi->ptr, "forked", 1);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
 	
+	WM_keymap_add_item(keymap, "ARMATURE_OT_separate", PKEY, KM_PRESS, /*KM_CTRL|KM_ALT*/0, 0);
+	
 	/* Armature -> Etch-A-Ton ------------------------ */
 	WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", SELECTMOUSE, KM_PRESS, 0, 0);
@@ -246,6 +256,9 @@
 	kmi= WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0);
 		RNA_boolean_set(kmi->ptr, "unselected", 1);
 	WM_keymap_add_item(keymap, "POSE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0);
+	
+	WM_keymap_add_item(keymap, "POSE_OT_apply", AKEY, KM_PRESS, KM_CTRL, 0);
+	
 	/*clear pose*/
 	WM_keymap_add_item(keymap, "POSE_OT_rot_clear", RKEY, KM_PRESS, KM_ALT, 0);
 	WM_keymap_add_item(keymap, "POSE_OT_loc_clear", GKEY, KM_PRESS, KM_ALT, 0);

Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-07-25 04:52:44 UTC (rev 21873)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-07-25 05:11:28 UTC (rev 21874)
@@ -100,9 +100,6 @@
 /* ************* XXX *************** */
 static int okee() {return 0;}
 static int pupmenu() {return 0;}
-static void waitcursor() {};
-static void error() {};
-static void error_libdata() {}
 static void BIF_undo_push() {}
 static void adduplicate() {}
 /* ************* XXX *************** */
@@ -430,25 +427,7 @@
 		ED_armature_edit_free(ob);
 }
 
-/* helper for apply_armature_pose2bones - fixes parenting of objects that are bone-parented to armature */
-static void applyarmature_fix_boneparents (Scene *scene, Object *armob)
-{
-	Object workob, *ob;
-	
-	/* go through all objects in database */
-	for (ob= G.main->object.first; ob; ob= ob->id.next) {
-		/* if parent is bone in this armature, apply corrections */
-		if ((ob->parent == armob) && (ob->partype == PARBONE)) {
-			/* apply current transform from parent (not yet destroyed), 
-			 * then calculate new parent inverse matrix
-			 */
-			ED_object_apply_obmat(ob);
-			
-			what_does_parent(scene, ob, &workob);
-			Mat4Invert(ob->parentinv, workob.obmat);
-		}
-	}
-}
+/* ---------------------- */
 
 static EditBone *editbone_name_exists (ListBase *edbo, char *name)
 {
@@ -490,28 +469,52 @@
 	}
 }
 
+/* helper for apply_armature_pose2bones - fixes parenting of objects that are bone-parented to armature */
+static void applyarmature_fix_boneparents (Scene *scene, Object *armob)
+{
+	Object workob, *ob;
+	
+	/* go through all objects in database */
+	for (ob= G.main->object.first; ob; ob= ob->id.next) {
+		/* if parent is bone in this armature, apply corrections */
+		if ((ob->parent == armob) && (ob->partype == PARBONE)) {
+			/* apply current transform from parent (not yet destroyed), 
+			 * then calculate new parent inverse matrix
+			 */
+			ED_object_apply_obmat(ob);
+			
+			what_does_parent(scene, ob, &workob);
+			Mat4Invert(ob->parentinv, workob.obmat);
+		}
+	}
+}
+
 /* set the current pose as the restpose */
-void apply_armature_pose2bones(Scene *scene, Object *obedit)
+static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op)
 {
-	bArmature *arm= obedit->data;
+	Scene *scene= CTX_data_scene(C);
+	Object *ob= CTX_data_active_object(C); // must be active object, not edit-object
+	bArmature *arm= get_armature(ob);
 	bPose *pose;
 	bPoseChannel *pchan;
 	EditBone *curbone;
 	
 	/* don't check if editmode (should be done by caller) */
-	if (object_data_is_libdata(obedit)) {
-		error_libdata();
-		return;
+	if (ob->type!=OB_ARMATURE)
+		return OPERATOR_CANCELLED;
+	if (object_data_is_libdata(ob)) {
+		BKE_report(op->reports, RPT_ERROR, "Cannot apply pose to lib-linked armature."); //error_libdata();
+		return OPERATOR_CANCELLED;
 	}
 	
 	/* helpful warnings... */
 	// TODO: add warnings to be careful about actions, applying deforms first, etc.
 	
 	/* Get editbones of active armature to alter */
-	ED_armature_to_edit(obedit);	
+	ED_armature_to_edit(ob);	
 	
 	/* get pose of active object and move it out of posemode */
-	pose= obedit->pose;
+	pose= ob->pose;
 	
 	for (pchan=pose->chanbase.first; pchan; pchan=pchan->next) {
 		curbone= editbone_name_exists(arm->edbo, pchan->name);
@@ -530,7 +533,7 @@
 			
 			/* obtain new auto y-rotation */
 			VecSubf(delta, curbone->tail, curbone->head);
-			vec_roll_to_mat3(delta, 0.0, premat);
+			vec_roll_to_mat3(delta, 0.0f, premat);
 			Mat3Inv(imat, premat);
 			
 			/* get pchan 'visual' matrix */
@@ -545,27 +548,47 @@
 		}
 		
 		/* clear transform values for pchan */
-		pchan->loc[0]= pchan->loc[1]= pchan->loc[2]= 0;
-		pchan->quat[1]= pchan->quat[2]= pchan->quat[3]= 0;
-		pchan->quat[0]= pchan->size[0]= pchan->size[1]= pchan->size[2]= 1;
+		pchan->loc[0]= pchan->loc[1]= pchan->loc[2]= 0.0f;
+		pchan->eul[0]= pchan->eul[1]= pchan->eul[2]= 0.0f;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list