Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_datatransfer.c
| Show First 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | static void initData(ModifierData *md) | ||||
| dtmd->mix_mode = CDT_MIX_TRANSFER; | dtmd->mix_mode = CDT_MIX_TRANSFER; | ||||
| dtmd->mix_factor = 1.0f; | dtmd->mix_factor = 1.0f; | ||||
| dtmd->defgrp_name[0] = '\0'; | dtmd->defgrp_name[0] = '\0'; | ||||
| dtmd->flags = MOD_DATATRANSFER_OBSRC_TRANSFORM; | dtmd->flags = MOD_DATATRANSFER_OBSRC_TRANSFORM; | ||||
| } | } | ||||
| static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) | static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks) | ||||
| { | { | ||||
| DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | ||||
| CustomDataMask dataMask = 0; | |||||
| if (dtmd->defgrp_name[0]) { | if (dtmd->defgrp_name[0] != '\0') { | ||||
| /* We need vertex groups! */ | /* We need vertex groups! */ | ||||
| dataMask |= CD_MASK_MDEFORMVERT; | r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT; | ||||
| } | } | ||||
| dataMask |= BKE_object_data_transfer_dttypes_to_cdmask(dtmd->data_types); | BKE_object_data_transfer_dttypes_to_cdmask(dtmd->data_types, r_cddata_masks); | ||||
| return dataMask; | |||||
| } | } | ||||
| static bool dependsOnNormals(ModifierData *md) | static bool dependsOnNormals(ModifierData *md) | ||||
| { | { | ||||
| DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | ||||
| int item_types = BKE_object_data_transfer_get_dttypes_item_types(dtmd->data_types); | int item_types = BKE_object_data_transfer_get_dttypes_item_types(dtmd->data_types); | ||||
| if ((item_types & ME_VERT) && (dtmd->vmap_mode & (MREMAP_USE_NORPROJ | MREMAP_USE_NORMAL))) { | if ((item_types & ME_VERT) && (dtmd->vmap_mode & (MREMAP_USE_NORPROJ | MREMAP_USE_NORMAL))) { | ||||
| Show All 19 Lines | static void foreachObjectLink( | ||||
| DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | ||||
| walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP); | walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP); | ||||
| } | } | ||||
| static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | ||||
| { | { | ||||
| DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | DataTransferModifierData *dtmd = (DataTransferModifierData *) md; | ||||
| if (dtmd->ob_source != NULL) { | if (dtmd->ob_source != NULL) { | ||||
| CustomDataMask mask = BKE_object_data_transfer_dttypes_to_cdmask(dtmd->data_types); | CustomData_MeshMasks cddata_masks = {0}; | ||||
| BKE_object_data_transfer_dttypes_to_cdmask(dtmd->data_types, &cddata_masks); | |||||
| DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier"); | DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier"); | ||||
| DEG_add_customdata_mask(ctx->node, dtmd->ob_source, mask); | DEG_add_customdata_mask(ctx->node, dtmd->ob_source, &cddata_masks); | ||||
| if (dtmd->flags & MOD_DATATRANSFER_OBSRC_TRANSFORM) { | if (dtmd->flags & MOD_DATATRANSFER_OBSRC_TRANSFORM) { | ||||
| DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_TRANSFORM, "DataTransfer Modifier"); | DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_TRANSFORM, "DataTransfer Modifier"); | ||||
| DEG_add_modifier_to_transform_relation(ctx->node, "DataTransfer Modifier"); | DEG_add_modifier_to_transform_relation(ctx->node, "DataTransfer Modifier"); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 106 Lines • Show Last 20 Lines | |||||