26#include "RNA_prototypes.hh"
67 const bool use_correct_order_on_merge)
69 int *vert_merge_map =
nullptr;
70 int vert_merge_map_len;
73 mmd, ob,
result, axis, use_correct_order_on_merge, &vert_merge_map, &vert_merge_map_len);
81 if (vert_merge_map_len) {
142 bool has_bisect = (mmd->
flag &
146 col->use_property_split_set(
true);
150 row->
prop(
ptr, prop, 0, 0, toggles_flag,
IFACE_(
"X"), ICON_NONE);
151 row->
prop(
ptr, prop, 1, 0, toggles_flag,
IFACE_(
"Y"), ICON_NONE);
152 row->
prop(
ptr, prop, 2, 0, toggles_flag,
IFACE_(
"Z"), ICON_NONE);
156 row->
prop(
ptr, prop, 0, 0, toggles_flag,
IFACE_(
"X"), ICON_NONE);
157 row->
prop(
ptr, prop, 1, 0, toggles_flag,
IFACE_(
"Y"), ICON_NONE);
158 row->
prop(
ptr, prop, 2, 0, toggles_flag,
IFACE_(
"Z"), ICON_NONE);
163 row->
prop(
ptr, prop, 0, 0, toggles_flag,
IFACE_(
"X"), ICON_NONE);
164 row->
prop(
ptr, prop, 1, 0, toggles_flag,
IFACE_(
"Y"), ICON_NONE);
165 row->
prop(
ptr, prop, 2, 0, toggles_flag,
IFACE_(
"Z"), ICON_NONE);
176 sub = &row->
row(
true);
180 sub = &
col->row(
true);
197 row = &
col->row(
true,
IFACE_(
"Mirror U"));
199 sub = &row->
row(
true);
201 sub = &sub->
row(
true);
208 sub = &row->
row(
true);
210 sub = &sub->
row(
true);
232 "MirrorModifierData",
void BKE_id_free(Main *bmain, void *idv)
Mesh * BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd, Object *ob, const Mesh *mesh, int axis, bool use_correct_order_on_merge, int **r_vert_merge_map, int *r_vert_merge_map_len)
void(*)(void *user_data, Object *ob, ID **idpoin, LibraryForeachIDCallbackFlag cb_flag) IDWalkFunc
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_EnableInEditmode
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_ID_MESH
void DEG_add_depends_on_transform_relation(DepsNodeHandle *node_handle, const char *description)
void DEG_add_object_relation(DepsNodeHandle *node_handle, Object *object, eDepsObjectComponentType component, const char *description)
#define DNA_struct_default_get(struct_name)
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static void panel_draw(const bContext *, Panel *panel)
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
static Mesh * mirror_apply_on_axis(MirrorModifierData *mmd, Object *ob, Mesh *mesh, const int axis, const bool use_correct_order_on_merge)
ModifierTypeInfo modifierType_Mirror
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
static Mesh * mirrorModifier__doMirror(MirrorModifierData *mmd, Object *ob, Mesh *mesh)
static void data_panel_draw(const bContext *, Panel *panel)
PanelType * modifier_subpanel_register(ARegionType *region_type, const char *name, const char *label, PanelDrawFn draw_header, PanelDrawFn draw, PanelType *parent)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_error_message_draw(uiLayout *layout, PointerRNA *ptr)
@ UI_ITEM_R_FORCE_BLANK_DECORATE
static void update_depsgraph(tGraphSliderOp *gso)
void MEM_freeN(void *vmemh)
Mesh * mesh_merge_verts(const Mesh &mesh, MutableSpan< int > vert_dest_map, int vert_dest_map_len, const bool do_mix_data)
static void init_data(ModifierData *md)
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
static void panel_draw(const bContext *C, Panel *panel)
static void panel_register(ARegionType *region_type)
static void update_depsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
struct Object * mirror_ob
uint8_t use_correct_order_on_merge
void use_property_decorate_set(bool is_sep)
void decorator(PointerRNA *ptr, PropertyRNA *prop, int index)
uiLayout & column(bool align)
void active_set(bool active)
uiLayout & row(bool align)
void use_property_split_set(bool value)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)