From 93c1a7354fe214a8e2dc95b850eff6b65337e6cc Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 12 Apr 2010 00:40:56 +0000 Subject: Fix [#21982] Operator bug: Edit mode Hid the 'Enter Edit Mode' property when adding an object, not necessary anyway. --- source/blender/editors/object/object_add.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 225889cdb59..8ab900f1c9c 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -176,8 +176,10 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) PropertyRNA *prop; RNA_def_boolean(ot->srna, "view_align", 0, "Align to View", "Align the new object to the view."); - if(do_editmode) - RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object."); + if(do_editmode) { + prop= RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object."); + RNA_def_property_flag(prop, PROP_HIDDEN); + } RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); -- cgit v1.2.3 From 7119d5ba70e46f48dcd5159458cbc46445447fad Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 16 Apr 2010 02:14:56 +0000 Subject: Fix [#21492] "Align to view" option from tools panel's operator part doesn't works. Also changed some usage of CTX_wm_region_view3d(C) to ED_view3d_context_rv3d(C) --- source/blender/editors/object/object_add.c | 55 ++++++++++++++---------------- 1 file changed, 25 insertions(+), 30 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 8ab900f1c9c..f490ca19a31 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -108,7 +108,7 @@ void ED_object_location_from_view(bContext *C, float *loc) void ED_object_rotation_from_view(bContext *C, float *rot) { - RegionView3D *rv3d = CTX_wm_region_view3d(C); + RegionView3D *rv3d= ED_view3d_context_rv3d(C); if(rv3d) { rv3d->viewquat[0]= -rv3d->viewquat[0]; @@ -200,23 +200,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) ED_object_location_from_view(C, loc); RNA_float_set_array(op->ptr, "location", loc); } - - if (!RNA_property_is_set(op->ptr, "rotation")) { - int view_align; - float rot[3] = {0.f, 0.f, 0.f}; - - /* view align property is just used to set rotation property */ - if (!RNA_property_is_set(op->ptr, "view_align")) - view_align = U.flag & USER_ADD_VIEWALIGNED; - else - view_align = RNA_boolean_get(op->ptr, "view_align"); - - if (view_align) - ED_object_rotation_from_view(C, rot); - - RNA_float_set_array(op->ptr, "rotation", rot); - } - + if (!RNA_property_is_set(op->ptr, "layer")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); @@ -248,17 +232,28 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) return op->type->exec(C, op); } -void ED_object_add_generic_get_opts(wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) +void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { int a, layer_values[32]; + int view_align; *enter_editmode = FALSE; if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { *enter_editmode = TRUE; } + if (RNA_property_is_set(op->ptr, "view_align")) + view_align = RNA_boolean_get(op->ptr, "view_align"); + else + view_align = U.flag & USER_ADD_VIEWALIGNED; + + if (view_align) + ED_object_rotation_from_view(C, rot); + else + RNA_float_get_array(op->ptr, "rotation", rot); + + RNA_float_get_array(op->ptr, "location", loc); - RNA_float_get_array(op->ptr, "rotation", rot); RNA_boolean_get_array(op->ptr, "layer", layer_values); for(a=0; a<32; a++) @@ -303,7 +298,7 @@ static int object_add_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer); return OPERATOR_FINISHED; @@ -362,7 +357,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) float mat[4][4]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(type==PFIELD_GUIDE) { ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); @@ -437,7 +432,7 @@ static int object_camera_add_exec(bContext *C, wmOperator *op) RNA_boolean_set(op->ptr, "view_align", 1); object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); @@ -493,7 +488,7 @@ static int object_add_curve_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_CURVE) { Curve *cu; @@ -585,7 +580,7 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_SURF) { obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); @@ -650,7 +645,7 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_MBALL) { obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); @@ -720,7 +715,7 @@ static int object_add_text_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; @@ -760,7 +755,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); @@ -815,7 +810,7 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); if(ob && ob->data) @@ -862,7 +857,7 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); if(group) { Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); -- cgit v1.2.3 From 12cf8ac1d6cfc640a4dae4377aa97609ee568f04 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 5 May 2010 15:41:38 +0000 Subject: - split objet group add/link into 2 operators - link now brings up a search box so when there are 100's of groups its less annoying. - utility functions for id-enums so only local objects can be displayed in a search list (used for group_link) - renamed operator properties from typle to scene, group, action etc. --- source/blender/editors/object/object_add.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index f490ca19a31..5410ebf6906 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -850,7 +850,7 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) static int group_instance_add_exec(bContext *C, wmOperator *op) { - Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type")); + Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); int enter_editmode; unsigned int layer; @@ -895,7 +895,7 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); RNA_def_enum_funcs(prop, RNA_group_itemf); ot->prop= prop; ED_object_add_generic_props(ot, FALSE); -- cgit v1.2.3 From a1ada0f21c5f90d80a7e2b89b9f08fa1e756f675 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 24 May 2010 07:14:55 +0000 Subject: - remove OBJECT_OT_curve_add - rename CURVE_OT_primitive_bezier_add --> CURVE_OT_primitive_bezier_curve_add # matches nurbs operator - rename CURVE_OT_primitive_curve_path_add --> CURVE_OT_primitive_nurbs_path_add - fix for warnings from 28923 --- source/blender/editors/object/object_add.c | 91 ------------------------------ 1 file changed, 91 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 5410ebf6906..9b0a5c9ff33 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -467,97 +467,6 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) /* ***************** add primitives *************** */ -static EnumPropertyItem prop_curve_types[] = { - {CU_BEZIER|CU_PRIM_CURVE, "BEZIER_CURVE", ICON_CURVE_BEZCURVE, "Bezier Curve", ""}, - {CU_BEZIER|CU_PRIM_CIRCLE, "BEZIER_CIRCLE", ICON_CURVE_BEZCIRCLE, "Bezier Circle", ""}, - {CU_NURBS|CU_PRIM_CURVE, "NURBS_CURVE", ICON_CURVE_NCURVE, "NURBS Curve", ""}, - {CU_NURBS|CU_PRIM_CIRCLE, "NURBS_CIRCLE", ICON_CURVE_NCIRCLE, "NURBS Circle", ""}, - {CU_NURBS|CU_PRIM_PATH, "PATH", ICON_CURVE_PATH, "Path", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int object_add_curve_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb; - Nurb *nu; - int newob= 0, type= RNA_enum_get(op->ptr, "type"); - int enter_editmode; - unsigned int layer; - float loc[3], rot[3]; - float mat[4][4]; - - object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); - - if(obedit==NULL || obedit->type!=OB_CURVE) { - Curve *cu; - obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); - newob = 1; - - cu= (Curve*)obedit->data; - cu->flag |= CU_DEFORM_FILL; - if(type & CU_PRIM_PATH) - cu->flag |= CU_PATH|CU_3D; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - ED_object_new_primitive_matrix(C, loc, rot, mat); - - nu= add_nurbs_primitive(C, mat, type, newob); - editnurb= curve_get_editcurve(obedit); - BLI_addtail(editnurb, nu); - - /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA); - } - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - - return OPERATOR_FINISHED; -} - -static int object_add_curve_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - Object *obedit= CTX_data_edit_object(C); - uiPopupMenu *pup; - uiLayout *layout; - - object_add_generic_invoke_options(C, op); - - pup= uiPupMenuBegin(C, op->type->name, 0); - layout= uiPupMenuLayout(pup); - if(!obedit || obedit->type == OB_CURVE) - uiItemsEnumO(layout, op->type->idname, "type"); - else - uiItemsEnumO(layout, "OBJECT_OT_surface_add", "type"); - uiPupMenuEnd(C, pup); - - return OPERATOR_CANCELLED; -} - -void OBJECT_OT_curve_add(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Add Curve"; - ot->description = "Add a curve object to the scene"; - ot->idname= "OBJECT_OT_curve_add"; - - /* api callbacks */ - ot->invoke= object_add_curve_invoke; - ot->exec= object_add_curve_exec; - - ot->poll= ED_operator_scene_editable; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - RNA_def_enum(ot->srna, "type", prop_curve_types, 0, "Primitive", ""); - - ED_object_add_generic_props(ot, TRUE); -} - static EnumPropertyItem prop_surface_types[]= { {CU_PRIM_CURVE|CU_NURBS, "NURBS_CURVE", ICON_SURFACE_NCURVE, "NURBS Curve", ""}, {CU_PRIM_CIRCLE|CU_NURBS, "NURBS_CIRCLE", ICON_SURFACE_NCIRCLE, "NURBS Circle", ""}, -- cgit v1.2.3 From b0eee216d4e551fc3c344d73983928e97bd59bb0 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Jun 2010 01:39:34 +0000 Subject: Fix [#22383] 3dView Layer Management (by Mouse) broken --- source/blender/editors/object/object_add.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 9b0a5c9ff33..393fb70c177 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -212,12 +212,13 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) for(a=0; a<32; a++) values[a]= (layer & (1<layact; + layer = (v3d->scenelock)?scene->layact:v3d->layact; + for(a=0; a<32; a++) values[a]= (layer & (1<lay; + layer = scene->layact; for(a=0; a<32; a++) values[a]= (layer & (1< Date: Fri, 4 Jun 2010 16:21:04 +0000 Subject: * Fixed a Typo in Convert menu. --- source/blender/editors/object/object_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 393fb70c177..140a22c3c99 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1055,7 +1055,7 @@ void OBJECT_OT_duplicates_make_real(wmOperatorType *ot) static EnumPropertyItem convert_target_items[]= { {OB_CURVE, "CURVE", ICON_OUTLINER_OB_CURVE, "Curve from Mesh/Text", ""}, - {OB_MESH, "MESH", ICON_OUTLINER_OB_MESH, "Mesh from Curve/Meta/Surf/Mesh", ""}, + {OB_MESH, "MESH", ICON_OUTLINER_OB_MESH, "Mesh from Curve/Meta/Surf/Text", ""}, {0, NULL, 0, NULL, NULL}}; static void curvetomesh(Scene *scene, Object *ob) -- cgit v1.2.3 From 8eaa8a07631f617037b36fbab0b58dfaff95a031 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sun, 6 Jun 2010 15:38:50 +0000 Subject: Removed non working operator options from the 'redo' user interface. This cleans up things like transform and duplicate a lot, which previously exposed lots of options that didn't work with tweaking. --- source/blender/editors/object/object_add.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 140a22c3c99..73fbc8e2795 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1675,6 +1675,8 @@ static int duplicate_exec(bContext *C, wmOperator *op) void OBJECT_OT_duplicate(wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Duplicate"; ot->description = "Duplicate selected objects"; @@ -1689,7 +1691,8 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) /* to give to transform */ RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data."); - RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); + prop= RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN); } /* **************** add named object, for dragdrop ************* */ -- cgit v1.2.3 From f8346b1bcd28822c16fff0f25cfd00ae32ffe486 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Mon, 7 Jun 2010 16:24:24 +0000 Subject: Fix bug #22317 View reamins in camera's view after camera is deleted. The object in the view3d don't get update, so point to the delete camera and make Blender crash when you go into fly mode. --- source/blender/editors/object/object_add.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 73fbc8e2795..e0e0bb06652 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -826,6 +826,8 @@ void ED_base_object_free_and_unlink(Scene *scene, Base *base) static int object_delete_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); int islamp= 0; if(CTX_data_edit_object(C)) @@ -834,14 +836,24 @@ static int object_delete_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; - + else if (base->object->type == OB_CAMERA) { + /* If we don't reset this, Blender crash + * in fly mode because still have the + * old object here!. + * See Bug #22317 + */ + if (v3d && rv3d && rv3d->persp == RV3D_CAMOB && base->object == v3d->camera) { + rv3d->persp= RV3D_PERSP; + v3d->camera= NULL; + } + } /* remove from current scene only */ ED_base_object_free_and_unlink(scene, base); } CTX_DATA_END; if(islamp) reshadeall_displist(scene); /* only frees displist */ - + DAG_scene_sort(scene); DAG_ids_flush_update(0); -- cgit v1.2.3 From e2bc4ca9cee0c66c10efb9cf552c1135f30e7a4b Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Wed, 9 Jun 2010 15:35:10 +0000 Subject: Fix #22317 View reamins in camera's view after camera is deleted (again) The problem was not in the editors, the code in blenkernel have a XXX in the perspective value. Now unlink_object also update the ARegion. --- source/blender/editors/object/object_add.c | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e0e0bb06652..77c373c93e2 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -826,8 +826,6 @@ void ED_base_object_free_and_unlink(Scene *scene, Base *base) static int object_delete_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); int islamp= 0; if(CTX_data_edit_object(C)) @@ -836,17 +834,6 @@ static int object_delete_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; - else if (base->object->type == OB_CAMERA) { - /* If we don't reset this, Blender crash - * in fly mode because still have the - * old object here!. - * See Bug #22317 - */ - if (v3d && rv3d && rv3d->persp == RV3D_CAMOB && base->object == v3d->camera) { - rv3d->persp= RV3D_PERSP; - v3d->camera= NULL; - } - } /* remove from current scene only */ ED_base_object_free_and_unlink(scene, base); } -- cgit v1.2.3 From 6b21085ed5d8bcd827859345105d7b37e1049d4b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 19:20:05 +0000 Subject: enable adding objects in background mode by not using the context to get the object added. --- source/blender/editors/object/object_add.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 77c373c93e2..9f8fe7ba0f2 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -137,9 +137,8 @@ void ED_object_base_init_transform(bContext *C, Base *base, float *loc, float *r /* 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 @@ float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float 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 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) ((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 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) } 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 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) } 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; -- cgit v1.2.3 From 69cb2cc37b769ce6f8639fcfd8e0d16f61e697f2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 15:39:50 +0000 Subject: adding curve and mesh objects through python would create the object without assigning it to any layers. now initialize from the scene (when the value is unset), and throw an error when the value is set to all false. --- source/blender/editors/object/object_add.c | 71 +++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 20 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 9f8fe7ba0f2..e29c23b1f4d 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -232,7 +232,7 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) return op->type->exec(C, op); } -void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) +int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { int a, layer_values[32]; int view_align; @@ -241,7 +241,23 @@ void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, flo if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { *enter_editmode = TRUE; } - + + if(RNA_property_is_set(op->ptr, "layer")) { + RNA_boolean_get_array(op->ptr, "layer", layer_values); + + for(a=0; a<32; a++) { + if(layer_values[a]) + *layer |= (1 << a); + else + *layer &= ~(1 << a); + } + } + else { + /* not set, use the scenes layers */ + Scene *scene = CTX_data_scene(C); + *layer = scene->layact; + } + if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else @@ -254,13 +270,13 @@ void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, flo RNA_float_get_array(op->ptr, "location", loc); - RNA_boolean_get_array(op->ptr, "layer", layer_values); - - for(a=0; a<32; a++) - if(layer_values[a]) - *layer |= (1 << a); - else - *layer &= ~(1 << a); + + if(*layer == 0) { + BKE_report(op->reports, RPT_ERROR, "Property 'layer' has no values set"); + return 0; + } + + return 1; } /* for object add primitive operators */ @@ -298,7 +314,9 @@ static int object_add_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; + ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer); return OPERATOR_FINISHED; @@ -357,7 +375,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) float mat[4][4]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return NULL; if(type==PFIELD_GUIDE) { ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); @@ -391,8 +411,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) /* for object add operator */ static int effector_add_exec(bContext *C, wmOperator *op) { - effector_add_type(C, op, RNA_int_get(op->ptr, "type")); - + if(effector_add_type(C, op, RNA_int_get(op->ptr, "type")) == NULL) + return OPERATOR_CANCELLED; + return OPERATOR_FINISHED; } @@ -432,7 +453,9 @@ static int object_camera_add_exec(bContext *C, wmOperator *op) RNA_boolean_set(op->ptr, "view_align", 1); object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); @@ -489,7 +512,9 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit==NULL || obedit->type!=OB_SURF) { obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); @@ -554,7 +579,9 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit==NULL || obedit->type!=OB_MBALL) { obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); @@ -624,7 +651,8 @@ static int object_add_text_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; @@ -664,7 +692,8 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); @@ -719,7 +748,8 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); if(ob && ob->data) @@ -766,7 +796,8 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(group) { Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); -- cgit v1.2.3 From e10bf2bc09fa035558f3b7bc67a15e3e1d2b3d18 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 22 Jun 2010 21:11:13 +0000 Subject: Fix #22642: NURBS surfaces doesnt display Fix #22587: Invisible Nurbs Suface There was a small bug with determinating if new object should be created and for surfeces new OB_CURVE object had been created (instead of OB_SURF). Removed unused function and enum, which were used by nurbs surface create old oprator --- source/blender/editors/object/object_add.c | 68 ------------------------------ 1 file changed, 68 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e29c23b1f4d..ee0fd2b47e9 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -490,74 +490,6 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) /* ***************** add primitives *************** */ -static EnumPropertyItem prop_surface_types[]= { - {CU_PRIM_CURVE|CU_NURBS, "NURBS_CURVE", ICON_SURFACE_NCURVE, "NURBS Curve", ""}, - {CU_PRIM_CIRCLE|CU_NURBS, "NURBS_CIRCLE", ICON_SURFACE_NCIRCLE, "NURBS Circle", ""}, - {CU_PRIM_PATCH|CU_NURBS, "NURBS_SURFACE", ICON_SURFACE_NSURFACE, "NURBS Surface", ""}, - {CU_PRIM_TUBE|CU_NURBS, "NURBS_TUBE", ICON_SURFACE_NTUBE, "NURBS Tube", ""}, - {CU_PRIM_SPHERE|CU_NURBS, "NURBS_SPHERE", ICON_SURFACE_NSPHERE, "NURBS Sphere", ""}, - {CU_PRIM_DONUT|CU_NURBS, "NURBS_DONUT", ICON_SURFACE_NDONUT, "NURBS Donut", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int object_add_surface_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb; - Nurb *nu; - int newob= 0; - int enter_editmode; - unsigned int layer; - float loc[3], rot[3]; - float mat[4][4]; - - object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - - if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) - return OPERATOR_CANCELLED; - - if(obedit==NULL || obedit->type!=OB_SURF) { - obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); - newob = 1; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - 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); - BLI_addtail(editnurb, nu); - - /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA); - } - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - - return OPERATOR_FINISHED; -} - -void OBJECT_OT_surface_add(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Add Surface"; - ot->description = "Add a surface object to the scene"; - ot->idname= "OBJECT_OT_surface_add"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= object_add_surface_exec; - - ot->poll= ED_operator_scene_editable; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_surface_types, 0, "Primitive", ""); - ED_object_add_generic_props(ot, TRUE); -} - static EnumPropertyItem prop_metaball_types[]= { {MB_BALL, "MBALL_BALL", ICON_META_BALL, "Meta Ball", ""}, {MB_TUBE, "MBALL_TUBE", ICON_META_TUBE, "Meta Tube", ""}, -- cgit v1.2.3 From e86c5cf9ea951c102be1206ca489252166623e38 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 07:45:57 +0000 Subject: Fix [#22564] Object name by object type Restored auto-naming newly created objects by type, for Mesh, Lamp, Meta --- source/blender/editors/object/object_add.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index ee0fd2b47e9..92256d5e613 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -671,6 +671,19 @@ void OBJECT_OT_armature_add(wmOperatorType *ot) ED_object_add_generic_props(ot, TRUE); } +static char *get_lamp_defname(int type) +{ + switch (type) { + case LA_LOCAL: return "Point"; + case LA_SUN: return "Sun"; + case LA_SPOT: return "Spot"; + case LA_HEMI: return "Hemi"; + case LA_AREA: return "Area"; + default: + return "Lamp"; + } +} + static int object_lamp_add_exec(bContext *C, wmOperator *op) { Object *ob; @@ -687,6 +700,9 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) if(ob && ob->data) ((Lamp*)ob->data)->type= type; + rename_id((ID *)ob, get_lamp_defname(type)); + rename_id((ID *)ob->data, get_lamp_defname(type)); + return OPERATOR_FINISHED; } -- cgit v1.2.3 From faf1c9a4bb27dfdd843cc745707d15ab47ce8683 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 03:55:28 +0000 Subject: Bugfix #22685: Screen update slow, animation player ALT-A, files created with 2.4x Modifiers were being mistakenly recalculated at every frame as long as the object had animation, slowing things down due to incorrect depsgraph recalc tags. Renamed OB_RECALC -> OB_RECALC_ALL to reduce future confusion. During this process, I noticed a few dubious usages of OB_RECALC, so it's best to use this commit as a guide of places to check on. Apart from the place responsible for this bug, I haven't changed any OB_RECALC -> OB_RECALC_OB/DATA in case that introduces more unforseen bugs now, making it more difficult to track the problems later (rename + value change can be confusing to identify the genuine typos). --- source/blender/editors/object/object_add.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 92256d5e613..7205c8adf4b 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1067,7 +1067,7 @@ static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) } obn= copy_object(ob); - obn->recalc |= OB_RECALC; + obn->recalc |= OB_RECALC_ALL; basen= MEM_mallocN(sizeof(Base), "duplibase"); *basen= *base; @@ -1150,7 +1150,7 @@ static int convert_exec(bContext *C, wmOperator *op) newob->data= copy_mesh(me); } else { newob = ob; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; } /* make new mesh data from the original copy */ @@ -1211,7 +1211,7 @@ static int convert_exec(bContext *C, wmOperator *op) for(ob1= G.main->object.first; ob1; ob1=ob1->id.next) { if(ob1->data==ob->data) { ob1->type= OB_CURVE; - ob1->recalc |= OB_RECALC; + ob1->recalc |= OB_RECALC_ALL; } } } @@ -1402,7 +1402,7 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag } else { obn= copy_object(ob); - obn->recalc |= OB_RECALC; + obn->recalc |= OB_RECALC_ALL; basen= MEM_mallocN(sizeof(Base), "duplibase"); *basen= *base; -- cgit v1.2.3 From e738c731c2f3d3dca58656715fcaa724e0ed27b5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 16:20:52 +0000 Subject: Fix #21917: add object operator has 30 layers, now the layer property has just 20 and the local view layers are added afterwards. --- source/blender/editors/object/object_add.c | 38 ++++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 7205c8adf4b..757c167c496 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -183,7 +183,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); - prop = RNA_def_boolean_layer_member(ot->srna, "layer", 32, NULL, "Layer", ""); + prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -193,32 +193,28 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) if (!RNA_property_is_set(op->ptr, "enter_editmode")) RNA_boolean_set(op->ptr, "enter_editmode", U.flag & USER_ADD_EDITMODE); - if (!RNA_property_is_set(op->ptr, "location")) { + if(!RNA_property_is_set(op->ptr, "location")) { float loc[3]; ED_object_location_from_view(C, loc); RNA_float_set_array(op->ptr, "location", loc); } - if (!RNA_property_is_set(op->ptr, "layer")) { + if(!RNA_property_is_set(op->ptr, "layer")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); - int a, values[32], layer; + int a, values[20], layer; - if (v3d) { - if (v3d->localvd) { - layer = v3d->layact + v3d->lay; - for(a=0; a<32; a++) - values[a]= (layer & (1<scenelock)?scene->layact:v3d->layact; + if(v3d) { + layer = (v3d->scenelock && !v3d->localvd)? scene->layact: v3d->layact; - for(a=0; a<32; a++) - values[a]= (layer & (1<layact; - for(a=0; a<32; a++) + + for(a=0; a<20; a++) values[a]= (layer & (1<ptr, "layer")) { RNA_boolean_get_array(op->ptr, "layer", layer_values); - for(a=0; a<32; a++) { + for(a=0; a<20; a++) { if(layer_values[a]) *layer |= (1 << a); else @@ -258,6 +255,11 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa *layer = scene->layact; } + /* in local view we additionally add local view layers, + not part of operator properties */ + if(v3d && v3d->localvd) + *layer |= v3d->lay; + if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else -- cgit v1.2.3 From c0ba1671c34683654b691684473bb4f3899604a7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 16:53:17 +0000 Subject: group refcount checking was inconsistent. - if a group has one or more objects in it, it gets a refcount of 1 on load (unchanged from before) - dupli-groups, and materials no longer add/remove a reference. - now groups are only freed when they contain no objects or when manually unlinked. --- source/blender/editors/object/object_add.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 757c167c496..2299207eaa9 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -754,8 +754,7 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) rename_id(&ob->id, group->id.name+2); ob->dup_group= group; ob->transflag |= OB_DUPLIGROUP; - id_us_plus(&group->id); - + id_lib_extern(&group->id); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); -- cgit v1.2.3 From 03e638d1285b2a26902230772ae9261406fd6658 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 22:21:59 +0000 Subject: - make duplis real wasnt redrawing - small caps option for titles (doing manually is quite painful to watch). --- source/blender/editors/object/object_add.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 2299207eaa9..5fa643200f4 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1008,6 +1008,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); return OPERATOR_FINISHED; } -- cgit v1.2.3 From ac1aea71b1bcafb813dfc2133e6e4ed0c1ea633e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 26 Jul 2010 22:33:58 +0000 Subject: bugfix [#22832] ctrl+shift+a on linked in group which is in a group makes outline green --- source/blender/editors/object/object_add.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 5fa643200f4..1f4aff08183 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -973,7 +973,8 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base) if(ob->mat==NULL) ob->totcol= 0; basen= MEM_dupallocN(base); - basen->flag &= ~OB_FROMDUPLI; + basen->flag &= ~(OB_FROMDUPLI|OB_FROMGROUP); + ob->flag= basen->flag; basen->lay= base->lay; BLI_addhead(&scene->base, basen); /* addhead: othwise eternal loop */ basen->object= ob; -- cgit v1.2.3 From db6f1f52a713323cf852a908de64a3ee6f066076 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 27 Jul 2010 04:02:09 +0000 Subject: bugfix [#22027] Group disappears in render after adding a group instance --- source/blender/editors/object/object_add.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 1f4aff08183..e08661b1795 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -756,7 +756,10 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) ob->transflag |= OB_DUPLIGROUP; id_lib_extern(&group->id); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + /* works without this except if you try render right after, see: 22027 */ + DAG_scene_sort(CTX_data_scene(C)); + + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); return OPERATOR_FINISHED; } -- cgit v1.2.3 From e56913fe3961e9ab34b15e5317d83e9110e20857 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 1 Aug 2010 10:36:02 +0000 Subject: fix for un-initialized layer (only bits between 1 and 20 were initialized) --- source/blender/editors/object/object_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e08661b1795..50851b57a65 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -241,7 +241,7 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa if(RNA_property_is_set(op->ptr, "layer")) { RNA_boolean_get_array(op->ptr, "layer", layer_values); - + *layer= 0; for(a=0; a<20; a++) { if(layer_values[a]) *layer |= (1 << a); -- cgit v1.2.3 From 5fa7d1c1b4e7bde1d173caa60af0e273c86b6f0b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 1 Aug 2010 12:47:49 +0000 Subject: 2.5: code changes to reduce the usage of G.main and pass it along or get it from the context instead. --- source/blender/editors/object/object_add.c | 71 +++++++++++++++++------------- 1 file changed, 40 insertions(+), 31 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 50851b57a65..67cae8d4155 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -284,6 +284,7 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa /* for object add primitive operators */ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Object *ob; @@ -300,8 +301,8 @@ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int en /* more editor stuff */ ED_object_base_init_transform(C, BASACT, loc, rot); - DAG_scene_sort(scene); - ED_render_id_flush_update(G.main, ob->data); + DAG_scene_sort(bmain, scene); + ED_render_id_flush_update(bmain, ob->data); if(enter_editmode) ED_object_enter_editmode(C, EM_IGNORE_LAYER); @@ -750,6 +751,8 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; if(group) { + Main *bmain= CTX_data_main(C); + Scene *scene= CTX_data_scene(C); Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, group->id.name+2); ob->dup_group= group; @@ -757,7 +760,7 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) id_lib_extern(&group->id); /* works without this except if you try render right after, see: 22027 */ - DAG_scene_sort(CTX_data_scene(C)); + DAG_scene_sort(bmain, scene); WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); @@ -797,16 +800,17 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) /* remove base from a specific scene */ /* note: now unlinks constraints as well */ -void ED_base_object_free_and_unlink(Scene *scene, Base *base) +void ED_base_object_free_and_unlink(Main *bmain, Scene *scene, Base *base) { BLI_remlink(&scene->base, base); - free_libblock_us(&G.main->object, base->object); + free_libblock_us(&bmain->object, base->object); if(scene->basact==base) scene->basact= NULL; MEM_freeN(base); } static int object_delete_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); int islamp= 0; @@ -817,14 +821,14 @@ static int object_delete_exec(bContext *C, wmOperator *op) if(base->object->type==OB_LAMP) islamp= 1; /* remove from current scene only */ - ED_base_object_free_and_unlink(scene, base); + ED_base_object_free_and_unlink(bmain, scene, base); } CTX_DATA_END; if(islamp) reshadeall_displist(scene); /* only frees displist */ - DAG_scene_sort(scene); - DAG_ids_flush_update(0); + DAG_scene_sort(bmain, scene); + DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); @@ -859,6 +863,7 @@ static void copy_object__forwardModifierLinks(void *userData, Object *ob, /* after copying objects, copied data should get new pointers */ static void copy_object_set_idnew(bContext *C, int dupflag) { + Main *bmain= CTX_data_main(C); Material *ma, *mao; ID *id; int a; @@ -881,7 +886,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) /* materials */ if( dupflag & USER_DUP_MAT) { - mao= G.main->mat.first; + mao= bmain->mat.first; while(mao) { if(mao->id.newid) { @@ -915,7 +920,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) #if 0 // XXX old animation system /* lamps */ if( dupflag & USER_DUP_IPO) { - Lamp *la= G.main->lamp.first; + Lamp *la= bmain->lamp.first; while(la) { if(la->id.newid) { Lamp *lan= (Lamp *)la->id.newid; @@ -931,7 +936,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) } /* ipos */ - ipo= G.main->ipo.first; + ipo= bmain->ipo.first; while(ipo) { if(ipo->id.lib==NULL && ipo->id.newid) { Ipo *ipon= (Ipo *)ipo->id.newid; @@ -1000,6 +1005,7 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base) static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); clear_id_newpoins(); @@ -1009,8 +1015,8 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - DAG_scene_sort(scene); - DAG_ids_flush_update(0); + DAG_scene_sort(bmain, scene); + DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_SCENE, scene); WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); @@ -1089,6 +1095,7 @@ static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) static int convert_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Base *basen=NULL, *basact=NULL, *basedel=NULL; Object *ob, *ob1, *newob, *obact= CTX_data_active_object(C); @@ -1214,7 +1221,7 @@ static int convert_exec(bContext *C, wmOperator *op) if (!keep_original) { /* other users */ if(cu->id.us>1) { - for(ob1= G.main->object.first; ob1; ob1=ob1->id.next) { + for(ob1= bmain->object.first; ob1; ob1=ob1->id.next) { if(ob1->data==ob->data) { ob1->type= OB_CURVE; ob1->recalc |= OB_RECALC_ALL; @@ -1321,7 +1328,7 @@ static int convert_exec(bContext *C, wmOperator *op) /* delete original if needed */ if(basedel) { if(!keep_original) - ED_base_object_free_and_unlink(scene, basedel); + ED_base_object_free_and_unlink(bmain, scene, basedel); basedel = NULL; } @@ -1337,13 +1344,13 @@ static int convert_exec(bContext *C, wmOperator *op) base= base->next; if (ob->type == OB_MBALL) { - ED_base_object_free_and_unlink(scene, tmpbase); + ED_base_object_free_and_unlink(bmain, scene, tmpbase); } } } /* delete object should renew depsgraph */ - DAG_scene_sort(scene); + DAG_scene_sort(bmain, scene); } // XXX ED_object_enter_editmode(C, 0); @@ -1357,7 +1364,7 @@ static int convert_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER|ND_DATA, BASACT->object); } - DAG_scene_sort(scene); + DAG_scene_sort(bmain, scene); WM_event_add_notifier(C, NC_SCENE|NC_OBJECT|ND_DRAW, scene); /* is NC_SCENE needed ? */ return OPERATOR_FINISHED; @@ -1394,7 +1401,7 @@ void OBJECT_OT_convert(wmOperatorType *ot) /* used below, assumes id.new is correct */ /* leaves selection of base/object unaltered */ -static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag) +static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base, int dupflag) { Base *basen= NULL; Material ***matarar; @@ -1417,7 +1424,7 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag if(basen->flag & OB_FROMGROUP) { Group *group; - for(group= G.main->group.first; group; group= group->id.next) { + for(group= bmain->group.first; group; group= group->id.next) { if(object_in_group(ob, group)) add_to_group(group, obn, scene, basen); } @@ -1596,7 +1603,7 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag /* single object duplicate, if dupflag==0, fully linked, else it uses the flags given */ /* leaves selection of base/object unaltered */ -Base *ED_object_add_duplicate(Scene *scene, Base *base, int dupflag) +Base *ED_object_add_duplicate(Main *bmain, Scene *scene, Base *base, int dupflag) { Base *basen; Object *ob; @@ -1604,15 +1611,15 @@ Base *ED_object_add_duplicate(Scene *scene, Base *base, int dupflag) clear_id_newpoins(); clear_sca_new_poins(); /* sensor/contr/act */ - basen= object_add_duplicate_internal(scene, base, dupflag); + basen= object_add_duplicate_internal(bmain, scene, base, dupflag); if (basen == NULL) { return NULL; } ob= basen->object; - DAG_scene_sort(scene); - ED_render_id_flush_update(G.main, ob->data); + DAG_scene_sort(bmain, scene); + ED_render_id_flush_update(bmain, ob->data); return basen; } @@ -1620,6 +1627,7 @@ Base *ED_object_add_duplicate(Scene *scene, Base *base, int dupflag) /* contextual operator dupli */ static int duplicate_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); int linked= RNA_boolean_get(op->ptr, "linked"); int dupflag= (linked)? 0: U.dupflag; @@ -1628,7 +1636,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) clear_sca_new_poins(); /* sensor/contr/act */ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - Base *basen= object_add_duplicate_internal(scene, base, dupflag); + Base *basen= object_add_duplicate_internal(bmain, scene, base, dupflag); /* note that this is safe to do with this context iterator, the list is made in advance */ @@ -1642,14 +1650,14 @@ static int duplicate_exec(bContext *C, wmOperator *op) if(BASACT==base) ED_base_object_activate(C, basen); - ED_render_id_flush_update(G.main, basen->object->data); + ED_render_id_flush_update(bmain, basen->object->data); } CTX_DATA_END; copy_object_set_idnew(C, dupflag); - DAG_scene_sort(scene); - DAG_ids_flush_update(0); + DAG_scene_sort(bmain, scene); + DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); @@ -1697,6 +1705,7 @@ static int add_named_poll(bContext *C) static int add_named_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Base *basen, *base; Object *ob; @@ -1718,7 +1727,7 @@ static int add_named_exec(bContext *C, wmOperator *op) clear_id_newpoins(); clear_sca_new_poins(); /* sensor/contr/act */ - basen= object_add_duplicate_internal(scene, base, dupflag); + basen= object_add_duplicate_internal(bmain, scene, base, dupflag); if (basen == NULL) { MEM_freeN(base); @@ -1732,8 +1741,8 @@ static int add_named_exec(bContext *C, wmOperator *op) copy_object_set_idnew(C, dupflag); - DAG_scene_sort(scene); - DAG_ids_flush_update(0); + DAG_scene_sort(bmain, scene); + DAG_ids_flush_update(bmain, 0); MEM_freeN(base); -- cgit v1.2.3 From 5c75d6fa98f9325ed36708f56503bc2199e6624c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 8 Aug 2010 13:06:31 +0000 Subject: remove unused includes --- source/blender/editors/object/object_add.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 67cae8d4155..aa3b7f9422a 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -49,12 +49,10 @@ #include "BKE_constraint.h" #include "BKE_context.h" #include "BKE_curve.h" -#include "BKE_customdata.h" #include "BKE_depsgraph.h" #include "BKE_DerivedMesh.h" #include "BKE_displist.h" #include "BKE_effect.h" -#include "BKE_global.h" #include "BKE_group.h" #include "BKE_lattice.h" #include "BKE_library.h" @@ -67,9 +65,7 @@ #include "BKE_particle.h" #include "BKE_report.h" #include "BKE_sca.h" -#include "BKE_scene.h" #include "BKE_texture.h" -#include "BKE_utildefines.h" #include "RNA_access.h" #include "RNA_define.h" -- cgit v1.2.3 From 513a907730e28f2c6da6ea7b1c94addd3d581d96 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 18 Aug 2010 07:45:32 +0000 Subject: rna rename Bone and Text changes --- source/blender/editors/object/object_add.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index aa3b7f9422a..e60f9db79f6 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -179,7 +179,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); - prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", ""); + prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -196,7 +196,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) RNA_float_set_array(op->ptr, "location", loc); } - if(!RNA_property_is_set(op->ptr, "layer")) { + if(!RNA_property_is_set(op->ptr, "layers")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); int a, values[20], layer; @@ -214,7 +214,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) values[a]= (layer & (1<ptr, "layer", values); + RNA_boolean_set_array(op->ptr, "layers", values); } } @@ -235,8 +235,8 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa *enter_editmode = TRUE; } - if(RNA_property_is_set(op->ptr, "layer")) { - RNA_boolean_get_array(op->ptr, "layer", layer_values); + if(RNA_property_is_set(op->ptr, "layers")) { + RNA_boolean_get_array(op->ptr, "layers", layer_values); *layer= 0; for(a=0; a<20; a++) { if(layer_values[a]) -- cgit v1.2.3 From 11228cb4031c8e0a324d2ffa4463e2fb272f517c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Aug 2010 00:57:19 +0000 Subject: rna: move metaball.active_element to metaball.elements.active added rna funcs... elem = metaball.elements.new() metaball.elements.remove(elem) --- source/blender/editors/object/object_add.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e60f9db79f6..d3debc84bdd 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -523,9 +523,7 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) 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; - BLI_addtail(mball->editelems, elem); - + /* userdef */ if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA); -- cgit v1.2.3 From f956e94d131c55625a03569a7bb19d36d4aac9d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Aug 2010 05:36:21 +0000 Subject: collection attributes can now be resolved with by rna this now works... bpy.context.scene.path_resolve("objects.active.location") Also added an option to coerce the property into a native pytype. --- source/blender/editors/object/object_add.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index d3debc84bdd..a847296e509 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -501,7 +501,6 @@ static EnumPropertyItem prop_metaball_types[]= { static int object_metaball_add_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - MetaBall *mball; MetaElem *elem; int newob= 0; int enter_editmode; -- cgit v1.2.3 From a0c843ada264ce8c42d8817099b25596c1f05498 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Aug 2010 00:54:03 +0000 Subject: bugfix [#23452] Camera added in python is not correctly rotated --- source/blender/editors/object/object_add.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index a847296e509..4932d485800 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -256,7 +256,9 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa if(v3d && v3d->localvd) *layer |= v3d->lay; - if (RNA_property_is_set(op->ptr, "view_align")) + if(RNA_property_is_set(op->ptr, "rotation")) + view_align = FALSE; + else if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else view_align = U.flag & USER_ADD_VIEWALIGNED; -- cgit v1.2.3 From c412c5d6344bc040253f36e32cfd731d5e37980c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Aug 2010 00:06:10 +0000 Subject: patch [#23316] Fix bug that doesn't show "X:" "Y:" "Z:" for vectors with length patch [#23317] Changed some operators' RNA to accept lengths by Lorenzo Tozzi (oni_niubbo) with the minor change to use XYZ subtype rather then LENGTH. --- source/blender/editors/object/object_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 4932d485800..4df3e0ee1de 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -176,7 +176,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) RNA_def_property_flag(prop, PROP_HIDDEN); } - RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); + RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", ""); -- cgit v1.2.3