Cleanup/refactor: Move get_mesh_eval_for_modifier from MOD_util to BKE_modifier.
Because some modifiers' actual code is in BKE... Also renamed to more BKE-valid name BKE_modifier_get_evaluated_mesh_from_object.
This commit is contained in:
parent
1cc7d7d5ec
commit
e53cf14280
|
@ -548,5 +548,7 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(
|
|||
struct ModifierData *md, const struct ModifierEvalContext *ctx,
|
||||
struct BMEditMesh *editData, struct DerivedMesh *dm);
|
||||
|
||||
struct Mesh *BKE_modifier_get_evaluated_mesh_from_object(struct Object *ob, const ModifierApplyFlag flag);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1164,3 +1164,16 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(struct ModifierData *
|
|||
}
|
||||
}
|
||||
|
||||
/** Get evaluated mesh for other object, which is used as an operand for the modifier,
|
||||
* i.e. second operand for boolean modifier.
|
||||
*/
|
||||
Mesh *BKE_modifier_get_evaluated_mesh_from_object(Object *ob, const ModifierApplyFlag flag)
|
||||
{
|
||||
if (flag & MOD_APPLY_RENDER) {
|
||||
/* TODO(sergey): Use proper derived render in the future. */
|
||||
return ob->mesh_evaluated;
|
||||
}
|
||||
else {
|
||||
return ob->mesh_evaluated;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -390,7 +390,7 @@ static Mesh *arrayModifier_doArray(
|
|||
vgroup_start_cap_remap = BKE_object_defgroup_index_map_create(
|
||||
amd->start_cap, ctx->object, &vgroup_start_cap_remap_len);
|
||||
|
||||
start_cap_mesh = get_mesh_eval_for_modifier(amd->start_cap, ctx->flag);
|
||||
start_cap_mesh = BKE_modifier_get_evaluated_mesh_from_object(amd->start_cap, ctx->flag);
|
||||
if (start_cap_mesh) {
|
||||
start_cap_nverts = start_cap_mesh->totvert;
|
||||
start_cap_nedges = start_cap_mesh->totedge;
|
||||
|
@ -402,7 +402,7 @@ static Mesh *arrayModifier_doArray(
|
|||
vgroup_end_cap_remap = BKE_object_defgroup_index_map_create(
|
||||
amd->end_cap, ctx->object, &vgroup_end_cap_remap_len);
|
||||
|
||||
end_cap_mesh = get_mesh_eval_for_modifier(amd->end_cap, ctx->flag);
|
||||
end_cap_mesh = BKE_modifier_get_evaluated_mesh_from_object(amd->end_cap, ctx->flag);
|
||||
if (end_cap_mesh) {
|
||||
end_cap_nverts = end_cap_mesh->totvert;
|
||||
end_cap_nedges = end_cap_mesh->totedge;
|
||||
|
|
|
@ -307,7 +307,7 @@ static void meshdeformModifier_do(
|
|||
free_cagemesh = true;
|
||||
}
|
||||
else {
|
||||
cagemesh = get_mesh_eval_for_modifier(mmd->object, md->mode & eModifierMode_Render ? MOD_APPLY_RENDER : 0);
|
||||
cagemesh = BKE_modifier_get_evaluated_mesh_from_object(ob, md->mode & eModifierMode_Render ? MOD_APPLY_RENDER : 0);
|
||||
}
|
||||
|
||||
/* if we don't have one computed, use derivedmesh from data
|
||||
|
|
|
@ -1051,8 +1051,8 @@ static Mesh *surfacedeform_get_mesh(SurfaceDeformModifierData *smd, bool *r_need
|
|||
*r_needsfree = true;
|
||||
}
|
||||
else {
|
||||
mesh = get_mesh_eval_for_modifier(smd->target,
|
||||
smd->modifier.mode & eModifierMode_Render ? MOD_APPLY_RENDER : 0);
|
||||
mesh = BKE_modifier_get_evaluated_mesh_from_object(
|
||||
smd->target, smd->modifier.mode & eModifierMode_Render ? MOD_APPLY_RENDER : 0);
|
||||
*r_needsfree = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -345,21 +345,6 @@ DerivedMesh *get_dm_for_modifier(Object *ob, ModifierApplyFlag flag)
|
|||
}
|
||||
}
|
||||
|
||||
/* Get evaluated mesh for other object, which is used as an operand for the modifier,
|
||||
* i.e. second operand for boolean modifier.
|
||||
*/
|
||||
Mesh *get_mesh_eval_for_modifier(Object *ob, ModifierApplyFlag flag)
|
||||
{
|
||||
if (flag & MOD_APPLY_RENDER) {
|
||||
/* TODO(sergey): Use proper derived render in the future. */
|
||||
return ob->mesh_evaluated;
|
||||
}
|
||||
else {
|
||||
return ob->mesh_evaluated;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void modifier_get_vgroup(Object *ob, DerivedMesh *dm, const char *name, MDeformVert **dvert, int *defgrp_index)
|
||||
{
|
||||
*defgrp_index = defgroup_name_index(ob, name);
|
||||
|
|
|
@ -58,7 +58,6 @@ struct DerivedMesh *get_dm(struct Object *ob, struct BMEditMesh *em, struct Deri
|
|||
struct Mesh *get_mesh(struct Object *ob, struct BMEditMesh *em, struct Mesh *mesh,
|
||||
float (*vertexCos)[3], bool use_normals, bool use_orco);
|
||||
struct DerivedMesh *get_dm_for_modifier(struct Object *ob, ModifierApplyFlag flag);
|
||||
struct Mesh *get_mesh_eval_for_modifier(struct Object *ob, ModifierApplyFlag flag);
|
||||
|
||||
void modifier_get_vgroup(struct Object *ob, struct DerivedMesh *dm,
|
||||
const char *name, struct MDeformVert **dvert, int *defgrp_index);
|
||||
|
|
|
@ -504,7 +504,7 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes
|
|||
const bool use_trgt_faces = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_FACES) != 0;
|
||||
|
||||
if (use_trgt_verts || use_trgt_edges || use_trgt_faces) {
|
||||
Mesh *target_mesh = get_mesh_eval_for_modifier(obr, ctx->flag);
|
||||
Mesh *target_mesh = BKE_modifier_get_evaluated_mesh_from_object(obr, ctx->flag);
|
||||
|
||||
/* We must check that we do have a valid target_mesh! */
|
||||
if (target_mesh != NULL) {
|
||||
|
|
Loading…
Reference in New Issue