96
96
WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, obedit);
99
static void make_prim_radius_prop(wmOperatorType *ot)
103
prop = RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00);
104
RNA_def_property_subtype(prop, PROP_DISTANCE);
108
99
static int add_primitive_plane_exec(bContext *C, wmOperator *op)
114
105
bool was_editmode;
115
106
unsigned int layer;
108
WM_operator_view3d_unit_defaults(C, op);
117
109
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
118
110
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Plane"), &dia, mat, &was_editmode, loc, rot, layer);
119
111
em = BKE_editmesh_from_object(obedit);
121
if (!EDBM_op_call_and_selectf(em, op, "verts.out",
122
"create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
123
1, 1, RNA_float_get(op->ptr, "radius"), mat))
113
if (!EDBM_op_call_and_selectf(
114
em, op, "verts.out", false,
115
"create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
116
1, 1, RNA_float_get(op->ptr, "radius"), mat))
125
118
return OPERATOR_CANCELLED;
138
131
ot->idname = "MESH_OT_primitive_plane_add";
140
133
/* api callbacks */
141
ot->invoke = WM_operator_view3d_distance_invoke;
142
134
ot->exec = add_primitive_plane_exec;
143
135
ot->poll = ED_operator_scene_editable;
146
138
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
148
make_prim_radius_prop(ot);
140
ED_object_add_unit_props(ot);
149
141
ED_object_add_generic_props(ot, true);
158
150
bool was_editmode;
159
151
unsigned int layer;
153
WM_operator_view3d_unit_defaults(C, op);
161
154
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
162
155
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cube"), &dia, mat, &was_editmode, loc, rot, layer);
163
156
em = BKE_editmesh_from_object(obedit);
165
if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_cube matrix=%m4 size=%f",
166
mat, RNA_float_get(op->ptr, "radius") * 2.0f))
158
if (!EDBM_op_call_and_selectf(
159
em, op, "verts.out", false,
160
"create_cube matrix=%m4 size=%f",
161
mat, RNA_float_get(op->ptr, "radius") * 2.0f))
168
163
return OPERATOR_CANCELLED;
182
177
ot->idname = "MESH_OT_primitive_cube_add";
184
179
/* api callbacks */
185
ot->invoke = WM_operator_view3d_distance_invoke;
186
180
ot->exec = add_primitive_cube_exec;
187
181
ot->poll = ED_operator_scene_editable;
190
184
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
192
make_prim_radius_prop(ot);
186
ED_object_add_unit_props(ot);
193
187
ED_object_add_generic_props(ot, true);
212
206
cap_end = RNA_enum_get(op->ptr, "fill_type");
213
207
cap_tri = (cap_end == 2);
209
WM_operator_view3d_unit_defaults(C, op);
215
210
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
216
211
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Circle"), &dia, mat, &was_editmode, loc, rot, layer);
217
212
em = BKE_editmesh_from_object(obedit);
219
if (!EDBM_op_call_and_selectf(em, op, "verts.out",
220
"create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
221
RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
222
cap_end, cap_tri, mat))
214
if (!EDBM_op_call_and_selectf(
215
em, op, "verts.out", false,
216
"create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
217
RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
218
cap_end, cap_tri, mat))
224
220
return OPERATOR_CANCELLED;
248
243
RNA_def_int(ot->srna, "vertices", 32, 3, INT_MAX, "Vertices", "", 3, 500);
249
make_prim_radius_prop(ot);
244
ED_object_add_unit_props(ot);
250
245
RNA_def_enum(ot->srna, "fill_type", fill_type_items, 0, "Fill Type", "");
252
247
ED_object_add_generic_props(ot, true);
264
259
const bool cap_end = (end_fill_type != 0);
265
260
const bool cap_tri = (end_fill_type == 2);
262
WM_operator_view3d_unit_defaults(C, op);
267
263
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
268
264
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cylinder"), &dia, mat, &was_editmode, loc, rot, layer);
269
265
em = BKE_editmesh_from_object(obedit);
271
267
if (!EDBM_op_call_and_selectf(
268
em, op, "verts.out", false,
273
269
"create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
274
270
RNA_int_get(op->ptr, "vertices"),
275
271
RNA_float_get(op->ptr, "radius"),
306
301
RNA_def_int(ot->srna, "vertices", 32, 3, INT_MAX, "Vertices", "", 3, 500);
307
make_prim_radius_prop(ot);
302
ED_object_add_unit_props(ot);
308
303
prop = RNA_def_float(ot->srna, "depth", 2.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00);
309
304
RNA_def_property_subtype(prop, PROP_DISTANCE);
310
305
RNA_def_enum(ot->srna, "end_fill_type", fill_type_items, 1, "Cap Fill Type", "");
324
319
const bool cap_end = (end_fill_type != 0);
325
320
const bool cap_tri = (end_fill_type == 2);
322
WM_operator_view3d_unit_defaults(C, op);
327
323
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
328
324
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cone"), &dia, mat, &was_editmode, loc, rot, layer);
329
325
em = BKE_editmesh_from_object(obedit);
331
327
if (!EDBM_op_call_and_selectf(
328
em, op, "verts.out", false,
333
329
"create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
334
330
RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius1"),
335
331
RNA_float_get(op->ptr, "radius2"), cap_end, cap_tri, RNA_float_get(op->ptr, "depth"), mat))
381
376
bool was_editmode;
382
377
unsigned int layer;
379
WM_operator_view3d_unit_defaults(C, op);
384
380
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
385
381
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Grid"), &dia, mat, &was_editmode, loc, rot, layer);
386
382
em = BKE_editmesh_from_object(obedit);
388
if (!EDBM_op_call_and_selectf(em, op, "verts.out",
389
"create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
390
RNA_int_get(op->ptr, "x_subdivisions"),
391
RNA_int_get(op->ptr, "y_subdivisions"),
392
RNA_float_get(op->ptr, "radius"), mat))
384
if (!EDBM_op_call_and_selectf(
385
em, op, "verts.out", false,
386
"create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
387
RNA_int_get(op->ptr, "x_subdivisions"),
388
RNA_int_get(op->ptr, "y_subdivisions"),
389
RNA_float_get(op->ptr, "radius"), mat))
394
391
return OPERATOR_CANCELLED;
418
414
RNA_def_int(ot->srna, "x_subdivisions", 10, 3, INT_MAX, "X Subdivisions", "", 3, 1000);
419
415
RNA_def_int(ot->srna, "y_subdivisions", 10, 3, INT_MAX, "Y Subdivisions", "", 3, 1000);
420
make_prim_radius_prop(ot);
416
ED_object_add_unit_props(ot);
422
418
ED_object_add_generic_props(ot, true);
432
428
unsigned int layer;
433
429
bool was_editmode;
431
WM_operator_view3d_unit_defaults(C, op);
435
432
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, &is_view_aligned);
436
433
if (!is_view_aligned)
437
434
rot[0] += (float)M_PI / 2.0f;
445
442
em = BKE_editmesh_from_object(obedit);
447
if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_monkey matrix=%m4", mat)) {
444
if (!EDBM_op_call_and_selectf(
445
em, op, "verts.out", false,
446
"create_monkey matrix=%m4", mat))
448
448
return OPERATOR_CANCELLED;
461
461
ot->idname = "MESH_OT_primitive_monkey_add";
463
463
/* api callbacks */
464
ot->invoke = WM_operator_view3d_distance_invoke;
465
464
ot->exec = add_primitive_monkey_exec;
466
465
ot->poll = ED_operator_scene_editable;
469
make_prim_radius_prop(ot);
468
ED_object_add_unit_props(ot);
470
469
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
472
471
ED_object_add_generic_props(ot, true);
481
480
bool was_editmode;
482
481
unsigned int layer;
483
WM_operator_view3d_unit_defaults(C, op);
484
484
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
485
485
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Sphere"), &dia, mat, &was_editmode, loc, rot, layer);
486
486
em = BKE_editmesh_from_object(obedit);
488
if (!EDBM_op_call_and_selectf(em, op, "verts.out",
489
"create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
490
RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
491
RNA_float_get(op->ptr, "size"), mat))
488
if (!EDBM_op_call_and_selectf(
489
em, op, "verts.out", false,
490
"create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
491
RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
492
RNA_float_get(op->ptr, "size"), mat))
493
494
return OPERATOR_CANCELLED;
533
533
bool was_editmode;
534
534
unsigned int layer;
536
WM_operator_view3d_unit_defaults(C, op);
536
537
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL);
537
538
obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Icosphere"), &dia, mat, &was_editmode, loc, rot, layer);
538
539
em = BKE_editmesh_from_object(obedit);
540
541
if (!EDBM_op_call_and_selectf(
542
em, op, "verts.out", false,
542
543
"create_icosphere subdivisions=%i diameter=%f matrix=%m4",
543
544
RNA_int_get(op->ptr, "subdivisions"),
544
545
RNA_float_get(op->ptr, "size"), mat))