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. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to