[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19116] branches/blender2.5/blender/source /blender/editors: 2.5

Ton Roosendaal ton at blender.org
Wed Feb 25 15:50:43 CET 2009


Revision: 19116
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19116
Author:   ton
Date:     2009-02-25 15:50:40 +0100 (Wed, 25 Feb 2009)

Log Message:
-----------
2.5

SHIFT+A add armature didn't add a bone yet. :)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
    branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c

Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-02-25 13:48:39 UTC (rev 19115)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-02-25 14:50:40 UTC (rev 19116)
@@ -2112,7 +2112,8 @@
 	return bone;
 }
 
-static void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, short newob)
+/* v3d and rv3d are allowed to be NULL */
+void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
 {
 	Object *obedit= scene->obedit; // XXX get from context
 	float		obmat[3][3], curs[3], viewmat[3][3], totmat[3][3], imat[3][3];
@@ -2124,7 +2125,7 @@
 	Mat4Invert(obedit->imat, obedit->obmat);
 	Mat4MulVecfl(obedit->imat, curs);
 
-	if ( !(newob) || (U.flag & USER_ADD_VIEWALIGNED) ) 
+	if (rv3d && (U.flag & USER_ADD_VIEWALIGNED))
 		Mat3CpyMat4(obmat, rv3d->viewmat);
 	else Mat3One(obmat);
 	
@@ -2139,52 +2140,14 @@
 
 	VECCOPY(bone->head, curs);
 	
-	if ( !(newob) || (U.flag & USER_ADD_VIEWALIGNED) )
+	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
 	
 }
 
-void add_primitiveArmature(Scene *scene, View3D *v3d, int type)
-{
-	RegionView3D *rv3d= NULL; // XXX get from context
-	Object *obedit= scene->obedit; // XXX get from context
-	short newob=0;
-	
-	if(scene->id.lib) return;
-	
-	G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE);
-//	setcursor_space(SPACE_VIEW3D, CURSOR_STD);
 
-// XXX	check_editmode(OB_ARMATURE);
-	
-	/* If we're not the "obedit", make a new object and enter editmode */
-	if (obedit==NULL) {
-		add_object(scene, OB_ARMATURE);
-		ED_object_base_init_from_view(NULL, BASACT);	// XXX NULL is C
-		obedit= BASACT->object;
-		
-		where_is_object(scene, obedit);
-		
-		ED_armature_to_edit(obedit);
-//		setcursor_space(SPACE_VIEW3D, CURSOR_EDIT);
-		newob=1;
-	}
-	
-	/* no primitive support yet */
-	add_primitive_bone(scene, v3d, rv3d, newob);
-	
-	//armature_sync_selection(arm->edbo); // XXX which armature?
-
-	if ((newob) && !(U.flag & USER_ADD_EDITMODE)) {
-		ED_armature_from_edit(scene, obedit);
-		ED_armature_edit_free(obedit);
-	}
-	
-	BIF_undo_push("Add primitive");
-}
-
 /* previously addvert_armature */
 /* the ctrl-click method */
 static int armature_click_extrude_exec(bContext *C, wmOperator *op)

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-02-25 13:48:39 UTC (rev 19115)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-02-25 14:50:40 UTC (rev 19116)
@@ -37,6 +37,7 @@
 struct wmWindowManager;
 struct ListBase;
 struct View3D;
+struct RegionView3D;
 
 typedef struct EditBone
 {
@@ -102,6 +103,8 @@
 float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]);
 EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, EditBone *ebo); // XXX this is needed for populating the context iterators
 
+void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
+
 void transform_armature_mirror_update(struct Object *obedit);
 void clear_armature(struct Scene *scene, struct Object *ob, char mode);
 void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par);

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-02-25 13:48:39 UTC (rev 19115)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-02-25 14:50:40 UTC (rev 19116)
@@ -582,6 +582,8 @@
 static int object_add_armature_exec(bContext *C, wmOperator *op)
 {
 	Object *obedit= CTX_data_edit_object(C);
+	View3D *v3d= CTX_wm_view3d(C);
+	RegionView3D *rv3d= NULL;
 	int newob= 0;
 	
 	if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) {
@@ -591,10 +593,12 @@
 	}
 	else DAG_object_flush_update(CTX_data_scene(C), obedit, OB_RECALC_DATA);
 	
-	//nu= add_nurbs_primitive(C, RNA_enum_get(op->ptr, "type"), newob);
-	//editnurb= curve_get_editcurve(CTX_data_edit_object(C));
-	//BLI_addtail(editnurb, nu);
+	if(v3d) 
+		rv3d= CTX_wm_region(C)->regiondata;
 	
+	/* v3d and rv3d are allowed to be NULL */
+	add_primitive_bone(CTX_data_scene(C), v3d, rv3d);
+
 	/* userdef */
 	if (newob && (U.flag & USER_ADD_EDITMODE)==0) {
 		ED_object_exit_editmode(C, EM_FREEDATA);





More information about the Bf-blender-cvs mailing list