[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29371] trunk/blender/source/blender/ editors: enable adding objects in background mode by not using the context to get the object added .

Campbell Barton ideasman42 at gmail.com
Wed Jun 9 21:20:06 CEST 2010


Revision: 29371
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29371
Author:   campbellbarton
Date:     2010-06-09 21:20:05 +0200 (Wed, 09 Jun 2010)

Log Message:
-----------
enable adding objects in background mode by not using the context to get the object added.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/curve/editcurve.c
    trunk/blender/source/blender/editors/include/ED_object.h
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/object/object_add.c

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2010-06-09 19:12:03 UTC (rev 29370)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2010-06-09 19:20:05 UTC (rev 29371)
@@ -5283,7 +5283,7 @@
 	}
 	else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
 	
-	ED_object_new_primitive_matrix(C, loc, rot, mat);
+	ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
 	
 	nu= add_nurbs_primitive(C, mat, type, newob);
 	editnurb= curve_get_editcurve(obedit);

Modified: trunk/blender/source/blender/editors/include/ED_object.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_object.h	2010-06-09 19:12:03 UTC (rev 29370)
+++ trunk/blender/source/blender/editors/include/ED_object.h	2010-06-09 19:20:05 UTC (rev 29371)
@@ -84,7 +84,7 @@
 void ED_object_location_from_view(struct bContext *C, float *loc);
 void ED_object_rotation_from_view(struct bContext *C, float *rot);
 void ED_object_base_init_transform(struct bContext *C, struct Base *base, float *loc, float *rot);
-float ED_object_new_primitive_matrix(struct bContext *C, float *loc, float *rot, float primmat[][4]);
+float ED_object_new_primitive_matrix(struct bContext *C, struct Object *editob, float *loc, float *rot, float primmat[][4]);
 
 void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode);
 int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c	2010-06-09 19:12:03 UTC (rev 29370)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c	2010-06-09 19:20:05 UTC (rev 29371)
@@ -1269,6 +1269,7 @@
 	Object *obedit= CTX_data_edit_object(C);
 	int newob = 0;
 	float mat[4][4];
+	int scale;
 
 	if(obedit==NULL || obedit->type!=OB_MESH) {
 		obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE, layer);
@@ -1279,9 +1280,11 @@
 	}
 	else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
 
-	dia *= ED_object_new_primitive_matrix(C, loc, rot, mat);
-	depth *= ED_object_new_primitive_matrix(C, loc, rot, mat);
+	scale= ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
 
+	dia *= scale;
+	depth *= scale;
+
 	make_prim(obedit, type, mat, tot, seg, subdiv, dia, depth, ext, fill);
 
 	DAG_id_flush_update(obedit->data, OB_RECALC_DATA);

Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c	2010-06-09 19:12:03 UTC (rev 29370)
+++ trunk/blender/source/blender/editors/object/object_add.c	2010-06-09 19:20:05 UTC (rev 29371)
@@ -137,9 +137,8 @@
 
 /* uses context to figure out transform for primitive */
 /* returns standard diameter */
-float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float primmat[][4])
+float ED_object_new_primitive_matrix(bContext *C, Object *obedit, float *loc, float *rot, float primmat[][4])
 {
-	Object *obedit= CTX_data_edit_object(C);
 	View3D *v3d =CTX_wm_view3d(C);
 	float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3];
 	
@@ -155,8 +154,8 @@
 	copy_m4_m3(primmat, imat);
 	
 	/* center */
-	VECCOPY(primmat[3], loc);
-	VECSUB(primmat[3], primmat[3], obedit->obmat[3]);
+	copy_v3_v3(primmat[3], loc);
+	sub_v3_v3v3(primmat[3], primmat[3], obedit->obmat[3]);
 	invert_m3_m3(imat, mat);
 	mul_m3_v3(imat, primmat[3]);
 	
@@ -366,7 +365,7 @@
 
 		((Curve*)ob->data)->flag |= CU_PATH|CU_3D;
 		ED_object_enter_editmode(C, 0);
-		ED_object_new_primitive_matrix(C, loc, rot, mat);
+		ED_object_new_primitive_matrix(C, ob, loc, rot, mat);
 		BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_PATH, 1));
 
 		if(!enter_editmode)
@@ -498,7 +497,7 @@
 	}
 	else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
 	
-	ED_object_new_primitive_matrix(C, loc, rot, mat);
+	ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
 	
 	nu= add_nurbs_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob);
 	editnurb= curve_get_editcurve(obedit);
@@ -563,7 +562,7 @@
 	}
 	else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
 	
-	ED_object_new_primitive_matrix(C, loc, rot, mat);
+	ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
 	
 	elem= (MetaElem*)add_metaball_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob);
 	mball= (MetaBall*)obedit->data;





More information about the Bf-blender-cvs mailing list