[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19020] branches/blender2.5/blender/source /blender/editors/armature: 2.5
Michael Fox
mfoxdogg at gmail.com
Wed Feb 18 03:13:39 CET 2009
Revision: 19020
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19020
Author: mfoxdogg
Date: 2009-02-18 03:13:36 +0100 (Wed, 18 Feb 2009)
Log Message:
-----------
2.5
*****
added add_primitive_bone, removed operator from previous commit as it was not needed
Modified Paths:
--------------
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
Modified: branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h 2009-02-18 01:50:26 UTC (rev 19019)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h 2009-02-18 02:13:36 UTC (rev 19020)
@@ -32,7 +32,7 @@
struct wmOperatorType;
/* editarmature.c */
-void ARMATURE_OT_bone_add(struct wmOperatorType *ot);
+void ARMATURE_OT_bone_primitive_add(struct wmOperatorType *ot);
void ARMATURE_OT_align_bones(struct wmOperatorType *ot);
void ARMATURE_OT_calculate_roll(struct wmOperatorType *ot);
void ARMATURE_OT_switch_direction(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-02-18 01:50:26 UTC (rev 19019)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c 2009-02-18 02:13:36 UTC (rev 19020)
@@ -108,7 +108,7 @@
void ED_operatortypes_armature(void)
{
/* EDIT ARMATURE */
- WM_operatortype_append(ARMATURE_OT_bone_add);
+ WM_operatortype_append(ARMATURE_OT_bone_primitive_add);
WM_operatortype_append(ARMATURE_OT_align_bones);
WM_operatortype_append(ARMATURE_OT_calculate_roll);
Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c 2009-02-18 01:50:26 UTC (rev 19019)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c 2009-02-18 02:13:36 UTC (rev 19020)
@@ -2981,47 +2981,56 @@
/*op makes a new bone and returns it with its tip selected */
-static int armature_bone_add_exec(bContext *C, wmOperator *op)
+static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op)
{
- Object *ob= CTX_data_edit_object(C);
- bArmature *arm= (bArmature *)ob->data;
- EditBone *bone= MEM_callocN(sizeof(EditBone), "eBone");
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ Object *obedit = CTX_data_edit_object(C);
+ bArmature *arm= (bArmature *)obedit->data;
+ EditBone *bone;
+ float obmat[3][3], curs[3], viewmat[3][3], totmat[3][3], imat[3][3];
char name[32];
-
+
RNA_string_get(op->ptr, "name", name);
+
+ VECCOPY(curs, give_cursor(CTX_data_scene(C),CTX_wm_view3d(C)));
- BLI_strncpy(bone->name, name, 32);
- unique_editbone_name(arm->edbo, bone->name);
+ /* Get inverse point for head and orientation for tail */
+ Mat4Invert(obedit->imat, obedit->obmat);
+ Mat4MulVecfl(obedit->imat, curs);
+
+ if (U.flag & USER_ADD_VIEWALIGNED)
+ Mat3CpyMat4(obmat, rv3d->viewmat);
+ else Mat3One(obmat);
- BLI_addtail(arm->edbo, bone);
+ Mat3CpyMat4(viewmat, obedit->obmat);
+ Mat3MulMat3(totmat, obmat, viewmat);
+ Mat3Inv(imat, totmat);
- bone->flag |= BONE_TIPSEL;
- bone->weight= 1.0f;
- bone->dist= 0.25f;
- bone->xwidth= 0.1f;
- bone->zwidth= 0.1f;
- bone->ease1= 1.0f;
- bone->ease2= 1.0f;
- bone->rad_head= 0.10f;
- bone->rad_tail= 0.05f;
- bone->segments= 1;
- bone->layer= arm->layer;
+ deselectall_armature(obedit, 0, 0);
- armature_sync_selection(arm->edbo);
+ /* Create a bone */
+ bone= add_editbone(obedit, name);
- WM_event_add_notifier(C, NC_OBJECT, ob);
+ VECCOPY(bone->head, curs);
+ if(U.flag & USER_ADD_VIEWALIGNED)
+ VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1
+ else
+ VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
+
+ WM_event_add_notifier(C, NC_OBJECT, obedit);
+
return OPERATOR_FINISHED;
}
-void ARMATURE_OT_bone_add(wmOperatorType *ot)
+void ARMATURE_OT_bone_primitive_add(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Add Bone";
- ot->idname= "ARMATURE_OT_bone_add";
+ ot->idname= "ARMATURE_OT_bone_primitive_add";
/* api callbacks */
- ot->exec = armature_bone_add_exec;
+ ot->exec = armature_bone_primitive_add_exec;
ot->poll = ED_operator_editarmature;
/* flags */
More information about the Bf-blender-cvs
mailing list