39#include "RNA_prototypes.hh"
54 if (defgrp_index == -1) {
57 return mesh.deform_verts();
67 return (BKE_defvert_find_weight(&vertex_group[i], index) > 0.0f) != invert;
78 selection[
i] = (found !=
invert);
93 vertex_group, defgrp_index,
invert, memory);
104 vertex_group, defgrp_index,
invert);
106 mesh, selection, wmd.
merge_dist, only_loose_edges);
110 mesh, selection, wmd.
merge_dist, only_loose_edges);
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)
@ MOD_WELD_MODE_CONNECTED
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static void required_data_mask(ModifierData *, CustomData_MeshMasks *r_cddata_masks)
static void panel_draw(const bContext *, Panel *panel)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
void modifier_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const StringRefNull vgroup_prop, const std::optional< StringRefNull > invert_vgroup_prop, const std::optional< StringRefNull > text)
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)
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)
static IndexMask from_predicate(const IndexMask &universe, GrainSize grain_size, IndexMaskMemory &memory, Fn &&predicate)
constexpr int64_t size() const
constexpr IndexRange index_range() const
constexpr bool is_empty() const
CCL_NAMESPACE_BEGIN ccl_device float invert(const float color, const 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)
int RNA_enum_get(PointerRNA *ptr, const char *name)
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)