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