From e53cf1428044e9895fbcc880ca634eb45413645a Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 9 May 2018 12:44:22 +0200 Subject: [PATCH] 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. --- source/blender/blenkernel/BKE_modifier.h | 2 ++ source/blender/blenkernel/intern/modifier.c | 13 +++++++++++++ source/blender/modifiers/intern/MOD_array.c | 4 ++-- source/blender/modifiers/intern/MOD_meshdeform.c | 2 +- .../blender/modifiers/intern/MOD_surfacedeform.c | 4 ++-- source/blender/modifiers/intern/MOD_util.c | 15 --------------- source/blender/modifiers/intern/MOD_util.h | 1 - .../modifiers/intern/MOD_weightvgproximity.c | 2 +- 8 files changed, 21 insertions(+), 22 deletions(-) diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index a3c6b84f267..a3684f0971f 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -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 diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 8049c23c439..7aa3aef40ca 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -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; + } +} diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index d5a031af876..532c6675d11 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -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; diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 2865b1d6646..1e6fa0664df 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -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 diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c index 650e02241db..3552cbbfab7 100644 --- a/source/blender/modifiers/intern/MOD_surfacedeform.c +++ b/source/blender/modifiers/intern/MOD_surfacedeform.c @@ -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; } diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c index 8eeb90b86bd..95d75174b0c 100644 --- a/source/blender/modifiers/intern/MOD_util.c +++ b/source/blender/modifiers/intern/MOD_util.c @@ -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); diff --git a/source/blender/modifiers/intern/MOD_util.h b/source/blender/modifiers/intern/MOD_util.h index eba32c3cfde..545ae3264db 100644 --- a/source/blender/modifiers/intern/MOD_util.h +++ b/source/blender/modifiers/intern/MOD_util.h @@ -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); diff --git a/source/blender/modifiers/intern/MOD_weightvgproximity.c b/source/blender/modifiers/intern/MOD_weightvgproximity.c index 8294f457285..94873af54ab 100644 --- a/source/blender/modifiers/intern/MOD_weightvgproximity.c +++ b/source/blender/modifiers/intern/MOD_weightvgproximity.c @@ -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) {