42#include "RNA_prototypes.hh"
59 if (defgrp_index == -1) {
67 return {vertex_group, mesh.verts_num};
75 return IndexMask::from_predicate(
77 return (BKE_defvert_find_weight(&vertex_group[i], index) > 0.0f) != invert;
88 selection[i] = (found !=
invert);
103 vertex_group, defgrp_index,
invert, memory);
114 vertex_group, defgrp_index,
invert);
116 mesh, selection, wmd.
merge_dist, only_loose_edges);
120 mesh, selection, wmd.
merge_dist, only_loose_edges);
CustomData interface, see also DNA_customdata_types.h.
const void * CustomData_get_layer(const CustomData *data, eCustomDataType type)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_EnableInEditmode
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
#define BLI_assert_unreachable()
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define CD_MASK_MDEFORMVERT
#define DNA_struct_default_get(struct_name)
struct WeldModifierData WeldModifierData
@ MOD_WELD_MODE_CONNECTED
Read Guarded memory(de)allocation.
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
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_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const char *vgroup_prop, const char *invert_vgroup_prop, const char *text)
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static IndexMask selected_indices_from_vertex_group(Span< MDeformVert > vertex_group, const int index, const bool invert, IndexMaskMemory &memory)
ModifierTypeInfo modifierType_Weld
static Span< MDeformVert > get_vertex_group(const Mesh &mesh, const int defgrp_index)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *, Mesh *mesh)
static void panel_draw(const bContext *, Panel *panel)
static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
static std::optional< Mesh * > calculate_weld(const Mesh &mesh, const WeldModifierData &wmd)
static Array< bool > selection_array_from_vertex_group(Span< MDeformVert > vertex_group, const int index, const bool invert)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
constexpr int64_t size() const
constexpr IndexRange index_range() const
constexpr bool is_empty() const
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
std::optional< Mesh * > mesh_merge_by_distance_connected(const Mesh &mesh, Span< bool > selection, float merge_distance, bool only_loose_edges)
std::optional< Mesh * > mesh_merge_by_distance_all(const Mesh &mesh, const IndexMask &selection, float merge_distance)
GPU_SHADER_INTERFACE_INFO(overlay_edit_curve_handle_iface, "vert").flat(Type pos vertex_in(1, Type::UINT, "data") .vertex_out(overlay_edit_curve_handle_iface) .geometry_layout(PrimitiveIn Frequency::GEOMETRY storage_buf(1, Qualifier::READ, "uint", "data[]", Frequency::GEOMETRY) .push_constant(Type Frequency::GEOMETRY selection[]
int RNA_enum_get(PointerRNA *ptr, const char *name)