30#include "RNA_prototypes.hh"
51 const bool do_split_all = do_split_angle && emd->
split_angle < FLT_EPSILON;
52 const bool calc_face_normals = do_split_angle && !do_split_all;
71 BMLoop *l2 = (
e->l) ?
e->l->radial_next :
nullptr;
89 if ((
e->l) && (
e->l->next !=
e->l)) {
142 row = &layout->
row(
true,
IFACE_(
"Edge Angle"));
144 sub = &row->
row(
true);
161 "EdgeSplitModifierData",
163 &RNA_EdgeSplitModifier,
Mesh * BKE_mesh_from_bmesh_for_eval_nomain(BMesh *bm, const CustomData_MeshMasks *cd_mask_extra, const Mesh *me_settings)
BMesh * BKE_mesh_to_bmesh_ex(const Mesh *mesh, const BMeshCreateParams *create_params, const BMeshFromMeshParams *convert_params)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_EnableInEditmode
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define CD_MASK_ORIGINDEX
#define DNA_struct_default_get(struct_name)
@ MOD_EDGESPLIT_FROMANGLE
@ eModifierType_EdgeSplit
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static void panel_draw(const bContext *, Panel *panel)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
static void init_data(ModifierData *md)
Mesh * doEdgeSplit(const Mesh *mesh, EdgeSplitModifierData *emd)
static void panel_register(ARegionType *region_type)
ModifierTypeInfo modifierType_EdgeSplit
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *, Mesh *mesh)
static void panel_draw(const bContext *, Panel *panel)
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)
void BM_mesh_edgesplit(BMesh *bm, const bool use_verts, const bool tag_only, const bool copy_select)
#define BM_elem_flag_test(ele, hflag)
#define BM_elem_flag_enable(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
void BM_mesh_free(BMesh *bm)
BMesh Free Mesh.
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
void debug_randomize_mesh_order(Mesh *mesh)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
struct BMLoop * radial_next
struct CustomData_MeshMasks cd_mask_extra
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)