[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