Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/curve/editcurve_add.c
| Show First 20 Lines • Show All 509 Lines • ▼ Show 20 Lines | static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf) | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| ViewLayer *view_layer = CTX_data_view_layer(C); | ViewLayer *view_layer = CTX_data_view_layer(C); | ||||
| Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); | Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); | ||||
| ListBase *editnurb; | ListBase *editnurb; | ||||
| Nurb *nu; | Nurb *nu; | ||||
| bool newob = false; | bool newob = false; | ||||
| bool enter_editmode; | bool enter_editmode; | ||||
| ushort local_view_bits; | ushort local_view_bits; | ||||
| float dia; | |||||
| float loc[3], rot[3]; | float loc[3], rot[3]; | ||||
| float mat[4][4]; | float mat[4][4]; | ||||
| WM_operator_view3d_unit_defaults(C, op); | WM_operator_view3d_unit_defaults(C, op); | ||||
| if (!ED_object_add_generic_get_opts( | if (!ED_object_add_generic_get_opts( | ||||
| C, op, 'Z', loc, rot, NULL, &enter_editmode, &local_view_bits, NULL)) { | C, op, 'Z', loc, rot, NULL, &enter_editmode, &local_view_bits, NULL)) { | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| Show All 23 Lines | if (obedit == NULL || obedit->type != OB_SURF) { | ||||
| obedit = ED_object_add_type(C, OB_SURF, name, loc, rot, true, local_view_bits); | obedit = ED_object_add_type(C, OB_SURF, name, loc, rot, true, local_view_bits); | ||||
| newob = true; | newob = true; | ||||
| } | } | ||||
| else { | else { | ||||
| DEG_id_tag_update(&obedit->id, ID_RECALC_GEOMETRY); | DEG_id_tag_update(&obedit->id, ID_RECALC_GEOMETRY); | ||||
| } | } | ||||
| } | } | ||||
| ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); | float radius = RNA_float_get(op->ptr, "radius"); | ||||
| dia = RNA_float_get(op->ptr, "radius"); | float scale[3]; | ||||
| mul_mat3_m4_fl(mat, dia); | copy_v3_fl(scale, radius); | ||||
| ED_object_new_primitive_matrix(C, obedit, loc, rot, scale, mat); | |||||
| nu = ED_curve_add_nurbs_primitive(C, obedit, mat, type, newob); | nu = ED_curve_add_nurbs_primitive(C, obedit, mat, type, newob); | ||||
| editnurb = object_editcurve_get(obedit); | editnurb = object_editcurve_get(obedit); | ||||
| BLI_addtail(editnurb, nu); | BLI_addtail(editnurb, nu); | ||||
| /* userdef */ | /* userdef */ | ||||
| if (newob && !enter_editmode) { | if (newob && !enter_editmode) { | ||||
| ED_object_editmode_exit_ex(bmain, scene, obedit, EM_FREEDATA); | ED_object_editmode_exit_ex(bmain, scene, obedit, EM_FREEDATA); | ||||
| ▲ Show 20 Lines • Show All 272 Lines • Show Last 20 Lines | |||||