106 status.item(
IFACE_(
"Confirm"), ICON_EVENT_RETURN, ICON_MOUSE_LMB);
107 status.item(
IFACE_(
"Cancel"), ICON_EVENT_ESC, ICON_MOUSE_RMB);
127 uint objects_used_len = 0;
136 for (
uint ob_index = 0; ob_index < objects.
size(); ob_index++) {
137 Object *obedit = objects[ob_index];
138 float scale =
mat4_to_scale(obedit->object_to_world().ptr());
142 opdata->
ob_store[objects_used_len].
ob = obedit;
152 opdata->
shift =
false;
216 params.calc_looptris =
false;
217 params.calc_normals =
false;
218 params.is_destructive =
true;
233 bool changed =
false;
257 if (use_individual) {
261 "inset_individual faces=%hf use_even_offset=%b use_relative_offset=%b "
262 "use_interpolate=%b thickness=%f depth=%f",
275 "inset_region faces=%hf use_boundary=%b use_even_offset=%b use_relative_offset=%b "
276 "use_interpolate=%b thickness=%f depth=%f use_outset=%b use_edge_rail=%b",
294 if (use_select_inset) {
310 params.calc_looptris =
true;
311 params.calc_normals =
false;
312 params.is_destructive =
true;
357 mlen[0] = opdata->
mcenter[0] -
event->mval[0];
358 mlen[1] = opdata->
mcenter[1] -
event->mval[1];
379 amounts[0] =
max_ff(amounts[0], 0.0f);
398 bool handled =
false;
399 switch (event->
type) {
410 mdiff[0] = opdata->
mcenter[0] -
event->mval[0];
411 mdiff[1] = opdata->
mcenter[1] -
event->mval[1];
433 amount =
max_ff(amount, 0.0f);
468 opdata->
shift =
true;
473 opdata->
shift =
false;
482 mlen[0] = opdata->
mcenter[0] -
event->mval[0];
483 mlen[1] = opdata->
mcenter[1] -
event->mval[1];
557 amounts[0] =
max_ff(amounts[0], 0.0f);
577 ot->name =
"Inset Faces";
578 ot->idname =
"MESH_OT_inset";
579 ot->description =
"Inset new faces into selected faces";
592 RNA_def_boolean(
ot->srna,
"use_boundary",
true,
"Boundary",
"Inset face boundaries");
597 "Scale the offset to give more even thickness");
599 "use_relative_offset",
602 "Scale the offset by surrounding geometry");
604 ot->srna,
"use_edge_rail",
false,
"Edge Rail",
"Inset the region along existing edges");
607 ot->srna,
"thickness", 0.0f, 0.0f, 1e12f,
"Thickness",
"", 0.0f, 10.0f);
612 ot->srna,
"depth", 0.0f, -1e12f, 1e12f,
"Depth",
"", -10.0f, 10.0f);
615 RNA_def_boolean(
ot->srna,
"use_outset",
false,
"Outset",
"Outset rather than inset");
617 ot->srna,
"use_select_inset",
false,
"Select Outer",
"Select the new inset faces");
618 RNA_def_boolean(
ot->srna,
"use_individual",
false,
"Individual",
"Individual face inset");
620 ot->srna,
"use_interpolate",
true,
"Interpolate",
"Blend face data across the inset");
622 prop =
RNA_def_boolean(
ot->srna,
"release_confirm",
false,
"Confirm on Release",
"");
ScrArea * CTX_wm_area(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
blender::Vector< Object * > BKE_view_layer_array_from_objects_in_edit_mode_unique_data(const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
size_t BKE_unit_value_as_string(char *str, int str_maxncpy, double value, int prec, int type, const UnitSettings &settings, bool pad)
MINLINE float max_ff(float a, float b)
float mat4_to_scale(const float mat[4][4])
MINLINE float len_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
#define SNPRINTF_UTF8(dst, format,...)
Object is a sort of wrapper for general info.
@ V3D_AROUND_CENTER_MEDIAN
void EDBM_flag_disable_all(BMEditMesh *em, char hflag)
void void EDBM_redo_state_restore_and_free(BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
void EDBM_update(Mesh *mesh, const EDBMUpdate_Params *params)
void void void EDBM_redo_state_free(BMBackup *backup) ATTR_NONNULL(1)
BMBackup EDBM_redo_state_store(BMEditMesh *em)
void EDBM_redo_state_restore(BMBackup *backup, BMEditMesh *em, bool recalc_looptris) ATTR_NONNULL(1
void ED_area_status_text(ScrArea *area, const char *str)
void ED_workspace_status_text(bContext *C, const char *str)
bool ED_operator_editmesh(bContext *C)
void ED_region_tag_redraw(ARegion *region)
void * ED_region_draw_cb_activate(ARegionType *art, void(*draw)(const bContext *, ARegion *, void *), void *customdata, int type)
bool ED_region_draw_cb_exit(ARegionType *art, void *handle)
#define REGION_DRAW_POST_PIXEL
void ED_region_draw_mouse_line_cb(const bContext *C, ARegion *region, void *arg_info)
float ED_view3d_pixel_size(const RegionView3D *rv3d, const float co[3])
Read Guarded memory(de)allocation.
void BMO_slot_buffer_hflag_enable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, char hflag, bool do_flush)
BMO_FLAG_BUFFER.
void BMO_slot_buffer_from_enabled_hflag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, char hflag)
void BMO_op_exec(BMesh *bm, BMOperator *op)
BMESH OPSTACK EXEC OP.
static bool edbm_inset_init(bContext *C, wmOperator *op, const bool is_modal)
static wmOperatorStatus edbm_inset_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void edbm_inset_cancel(bContext *C, wmOperator *op)
static void edbm_inset_exit(bContext *C, wmOperator *op)
static wmOperatorStatus edbm_inset_exec(bContext *C, wmOperator *op)
void MESH_OT_inset(wmOperatorType *ot)
static void edbm_inset_update_header(wmOperator *op, bContext *C)
static wmOperatorStatus edbm_inset_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool edbm_inset_calc(wmOperator *op)
bool EDBM_op_init(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const char *fmt,...)
bool EDBM_op_finish(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const bool do_report)
void * MEM_mallocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_float_distance(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
ARegionRuntimeHandle * runtime
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct BMOpSlot slots_in[BMO_OP_MAX_SLOTS]
InsetObjectStore * ob_store
int WM_userdef_event_type_from_keymap_type(int kmitype)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)