Fix T79517: Data Transfer modifier fails in edit-mode
This commit is contained in:
@@ -204,29 +204,31 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
BKE_reports_init(&reports, RPT_STORE);
|
||||
|
||||
/* Note: no islands precision for now here. */
|
||||
BKE_object_data_transfer_ex(ctx->depsgraph,
|
||||
scene,
|
||||
ob_source,
|
||||
ctx->object,
|
||||
result,
|
||||
dtmd->data_types,
|
||||
false,
|
||||
dtmd->vmap_mode,
|
||||
dtmd->emap_mode,
|
||||
dtmd->lmap_mode,
|
||||
dtmd->pmap_mode,
|
||||
space_transform,
|
||||
false,
|
||||
max_dist,
|
||||
dtmd->map_ray_radius,
|
||||
0.0f,
|
||||
dtmd->layers_select_src,
|
||||
dtmd->layers_select_dst,
|
||||
dtmd->mix_mode,
|
||||
dtmd->mix_factor,
|
||||
dtmd->defgrp_name,
|
||||
invert_vgroup,
|
||||
&reports);
|
||||
if (BKE_object_data_transfer_ex(ctx->depsgraph,
|
||||
scene,
|
||||
ob_source,
|
||||
ctx->object,
|
||||
result,
|
||||
dtmd->data_types,
|
||||
false,
|
||||
dtmd->vmap_mode,
|
||||
dtmd->emap_mode,
|
||||
dtmd->lmap_mode,
|
||||
dtmd->pmap_mode,
|
||||
space_transform,
|
||||
false,
|
||||
max_dist,
|
||||
dtmd->map_ray_radius,
|
||||
0.0f,
|
||||
dtmd->layers_select_src,
|
||||
dtmd->layers_select_dst,
|
||||
dtmd->mix_mode,
|
||||
dtmd->mix_factor,
|
||||
dtmd->defgrp_name,
|
||||
invert_vgroup,
|
||||
&reports)) {
|
||||
result->runtime.is_original = false;
|
||||
}
|
||||
|
||||
if (BKE_reports_contain(&reports, RPT_ERROR)) {
|
||||
const char *report_str = BKE_reports_string(&reports, RPT_ERROR);
|
||||
|
||||
@@ -637,6 +637,8 @@ static Mesh *normalEditModifier_do(NormalEditModifierData *enmd,
|
||||
CustomData_free_layers(pdata, CD_NORMAL, num_polys);
|
||||
MEM_SAFE_FREE(loopnors);
|
||||
|
||||
result->runtime.is_original = false;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -308,6 +308,8 @@ static Mesh *uvprojectModifier_do(UVProjectModifierData *umd,
|
||||
}
|
||||
}
|
||||
|
||||
mesh->runtime.is_original = false;
|
||||
|
||||
/* Mark tessellated CD layers as dirty. */
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_TESSLOOPNORMAL;
|
||||
|
||||
|
||||
@@ -233,6 +233,8 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
/* XXX TODO is this still needed? */
|
||||
// me_eval->dirty |= DM_DIRTY_TESS_CDLAYERS;
|
||||
|
||||
mesh->runtime.is_original = false;
|
||||
|
||||
return mesh;
|
||||
}
|
||||
|
||||
|
||||
@@ -677,6 +677,9 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
|
||||
/* Currently Modifier stack assumes there is no poly normal data passed around... */
|
||||
CustomData_free_layers(pdata, CD_NORMAL, numPolys);
|
||||
|
||||
result->runtime.is_original = false;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -312,6 +312,8 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
MEM_freeN(new_w);
|
||||
MEM_freeN(dw);
|
||||
|
||||
mesh->runtime.is_original = false;
|
||||
|
||||
/* Return the vgroup-modified mesh. */
|
||||
return mesh;
|
||||
}
|
||||
|
||||
@@ -456,6 +456,8 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
MEM_freeN(dw2);
|
||||
MEM_SAFE_FREE(indices);
|
||||
|
||||
mesh->runtime.is_original = false;
|
||||
|
||||
/* Return the vgroup-modified mesh. */
|
||||
return mesh;
|
||||
}
|
||||
|
||||
@@ -637,6 +637,8 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
TIMEIT_END(perf);
|
||||
#endif
|
||||
|
||||
mesh->runtime.is_original = false;
|
||||
|
||||
/* Return the vgroup-modified mesh. */
|
||||
return mesh;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user