33 #include "RNA_prototypes.h"
53 const bool do_split_all = do_split_angle && emd->
split_angle < FLT_EPSILON;
54 const bool calc_face_normals = do_split_angle && !do_split_all;
59 .calc_face_normal = calc_face_normals,
60 .calc_vert_normal =
false,
61 .add_key_index =
false,
62 .use_shapekey =
false,
73 if ((l1 =
e->l) && (l2 =
e->l->radial_next) != l1) {
89 if ((
e->l) && (
e->l->next !=
e->l)) {
141 uiItemR(row,
ptr,
"use_edge_angle", 0,
"", ICON_NONE);
144 uiItemR(sub,
ptr,
"split_angle", 0,
"", ICON_NONE);
146 uiItemR(layout,
ptr,
"use_edge_sharp", 0,
IFACE_(
"Sharp Edges"), ICON_NONE);
158 "EdgeSplitModifierData",
160 &RNA_EdgeSplitModifier,
struct BMesh * BKE_mesh_to_bmesh_ex(const struct Mesh *me, const struct BMeshCreateParams *create_params, const struct BMeshFromMeshParams *convert_params)
struct Mesh * BKE_mesh_from_bmesh_for_eval_nomain(struct BMesh *bm, const struct CustomData_MeshMasks *cd_mask_extra, const struct Mesh *me_settings)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_EnableInEditmode
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
void BKE_modifier_copydata_generic(const struct ModifierData *md, struct ModifierData *md_dst, int flag)
@ eModifierTypeType_Constructive
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)
@ eModifierType_EdgeSplit
@ MOD_EDGESPLIT_FROMANGLE
struct EdgeSplitModifierData EdgeSplitModifierData
Object is a sort of wrapper for general info.
Mesh * doEdgeSplit(const Mesh *mesh, EdgeSplitModifierData *emd)
static Mesh * modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
ModifierTypeInfo modifierType_EdgeSplit
static void panel_draw(const bContext *UNUSED(C), Panel *panel)
static void initData(ModifierData *md)
static void panelRegister(ARegionType *region_type)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
uiLayout * uiLayoutRowWithHeading(uiLayout *layout, bool align, const char *heading)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
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)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_free(BMesh *bm)
BMesh Free Mesh.
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ccl_gpu_kernel_postfix ccl_global float int int int int float threshold
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
struct BMLoop * radial_next