32#include "RNA_prototypes.hh"
118#define DT_TYPES_AFFECT_MESH \
119 (DT_TYPE_BWEIGHT_VERT | DT_TYPE_BWEIGHT_EDGE | DT_TYPE_CREASE | DT_TYPE_SHARP_EDGE | \
120 DT_TYPE_LNOR | DT_TYPE_SHARP_FACE)
125 Mesh *result = me_mod;
140 &space_transform_data :
143 if (space_transform) {
153 if (((result == mesh) || (me_positions.
data() == result_positions.
data()) ||
154 (me_edges.
data() == result_edges.
data())) &&
188 result->runtime->is_original_bmesh =
false;
230 uiItemO(layout,
IFACE_(
"Generate Data Layers"), ICON_NONE,
"OBJECT_OT_datalayout_transfer");
337 "layers_vcol_vert_select_src",
339 IFACE_(
"Layer Selection"),
343 "layers_vcol_vert_select_dst",
363 "layers_vcol_loop_select_src",
365 IFACE_(
"Layer Selection"),
369 "layers_vcol_loop_select_dst",
472#undef DT_TYPES_AFFECT_MESH
477 "DataTransferModifierData",
479 &RNA_DataTransferModifier,
483 ICON_MOD_DATA_TRANSFER,
CustomData interface, see also DNA_customdata_types.h.
@ CDT_MIX_REPLACE_BELOW_THRESHOLD
@ CDT_MIX_REPLACE_ABOVE_THRESHOLD
bool BKE_object_data_transfer_ex(struct Depsgraph *depsgraph, struct Object *ob_src, struct Object *ob_dst, struct Mesh *me_dst, int data_types, bool use_create, int map_vert_mode, int map_edge_mode, int map_loop_mode, int map_face_mode, struct SpaceTransform *space_transform, bool auto_transform, float max_distance, float ray_radius, float islands_handling_precision, const int fromlayers_select[DT_MULTILAYER_INDEX_MAX], const int tolayers_select[DT_MULTILAYER_INDEX_MAX], int mix_mode, float mix_factor, const char *vgroup_name, bool invert_vgroup, struct ReportList *reports)
@ DT_MULTILAYER_INDEX_MAX
void BKE_object_data_transfer_dttypes_to_cdmask(int dtdata_types, struct CustomData_MeshMasks *r_data_masks)
ID * BKE_id_copy_ex(Main *bmain, const ID *id, ID **new_id_p, int flag)
@ MREMAP_MODE_VERT_NEAREST
@ MREMAP_MODE_LOOP_NEAREST_POLYNOR
@ MREMAP_MODE_EDGE_NEAREST
@ MREMAP_MODE_POLY_NEAREST
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsMesh
void(*)(void *user_data, Object *ob, ID **idpoin, int cb_flag) IDWalkFunc
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
bool BKE_reports_contain(ReportList *reports, eReportType level)
char * BKE_reports_string(ReportList *reports, eReportType level)
void BKE_reports_free(ReportList *reports)
void BKE_reports_init(ReportList *reports, int flag)
#define BLI_SPACE_TRANSFORM_SETUP(data, local, target)
void DEG_add_depends_on_transform_relation(DepsNodeHandle *node_handle, const char *description)
void DEG_add_customdata_mask(DepsNodeHandle *handle, Object *object, const CustomData_MeshMasks *masks)
void DEG_add_object_relation(DepsNodeHandle *node_handle, Object *object, eDepsObjectComponentType component, const char *description)
#define CD_MASK_MDEFORMVERT
struct DataTransferModifierData DataTransferModifierData
@ eModifierType_DataTransfer
@ MOD_DATATRANSFER_OBSRC_TRANSFORM
@ MOD_DATATRANSFER_MAP_MAXDIST
@ MOD_DATATRANSFER_INVERT_VGROUP
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static void edge_panel_draw_header(const bContext *, Panel *panel)
static void face_corner_panel_draw_header(const bContext *, Panel *panel)
static void vertex_panel_draw_header(const bContext *, Panel *panel)
static void panel_register(ARegionType *region_type)
#define DT_TYPES_AFFECT_MESH
static void vertex_panel_draw(const bContext *, Panel *panel)
static void face_corner_panel_draw(const bContext *, Panel *panel)
static void face_corner_vcol_panel_draw(const bContext *, Panel *panel)
static void vertex_vgroup_panel_draw(const bContext *, Panel *panel)
static void face_corner_uv_panel_draw(const bContext *, Panel *panel)
static void face_panel_draw_header(const bContext *, Panel *panel)
static void vert_vcol_panel_draw(const bContext *, Panel *panel)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me_mod)
static void advanced_panel_draw(const bContext *, Panel *panel)
static void face_panel_draw(const bContext *, Panel *panel)
static void panel_draw(const bContext *, Panel *panel)
static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
ModifierTypeInfo modifierType_DataTransfer
static void edge_panel_draw(const bContext *, Panel *panel)
static void update_depsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
PanelType * modifier_subpanel_register(ARegionType *region_type, const char *name, const char *label, PanelDrawFn draw_header, PanelDrawFn draw, PanelType *parent)
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)
void uiLayoutSetActive(uiLayout *layout, bool active)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutRowWithHeading(uiLayout *layout, bool align, const char *heading)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
constexpr const T * data() const
void MEM_freeN(void *vmemh)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
struct Object * ob_source