Cleanup: internal apply modifier code: make it clear we use eval modifier and object.
authorBastien Montagne <montagne29@wanadoo.fr>
Sun, 28 Apr 2019 13:41:30 +0000 (15:41 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 29 Apr 2019 08:03:58 +0000 (10:03 +0200)
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/mesh_convert.c
source/blender/editors/object/object_modifier.c

index f95a824fd946358a0b12d6b1553fdf97ec52a302..5b50ead689aeb96062128acf190c4290f261951b 100644 (file)
@@ -216,8 +216,8 @@ struct Mesh *BKE_mesh_new_from_object(struct Depsgraph *depsgraph,
                                       const bool calc_undeformed);
 struct Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph,
                                                   struct Scene *scene,
-                                                  struct Object *ob,
-                                                  struct ModifierData *md,
+                                                  struct Object *ob_eval,
+                                                  struct ModifierData *md_eval,
                                                   int build_shapekey_layers);
 
 /* Copies a nomain-Mesh into an existing Mesh. */
index 0ef09b3fe74561db30a1fecb3a6fc33d260b4380..0402524e03d2d2ec2d582022f6e650fb26a58682 100644 (file)
@@ -1238,25 +1238,26 @@ static void add_shapekey_layers(Mesh *mesh_dest, Mesh *mesh_src)
 
 Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph,
                                            Scene *scene,
-                                           Object *ob,
-                                           ModifierData *md,
+                                           Object *ob_eval,
+                                           ModifierData *md_eval,
                                            int build_shapekey_layers)
 {
-  Mesh *me = ob->runtime.mesh_orig ? ob->runtime.mesh_orig : ob->data;
-  const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+  Mesh *me = ob_eval->runtime.mesh_orig ? ob_eval->runtime.mesh_orig : ob_eval->data;
+  const ModifierTypeInfo *mti = modifierType_getInfo(md_eval->type);
   Mesh *result;
   KeyBlock *kb;
-  ModifierEvalContext mectx = {depsgraph, ob, 0};
+  ModifierEvalContext mectx = {depsgraph, ob_eval, 0};
 
-  if (!(md->mode & eModifierMode_Realtime)) {
+  if (!(md_eval->mode & eModifierMode_Realtime)) {
     return NULL;
   }
 
-  if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
+  if (mti->isDisabled && mti->isDisabled(scene, md_eval, 0)) {
     return NULL;
   }
 
-  if (build_shapekey_layers && me->key && (kb = BLI_findlink(&me->key->block, ob->shapenr - 1))) {
+  if (build_shapekey_layers && me->key &&
+      (kb = BLI_findlink(&me->key->block, ob_eval->shapenr - 1))) {
     BKE_keyblock_convert_to_mesh(kb, me);
   }
 
@@ -1264,7 +1265,7 @@ Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph,
     int numVerts;
     float(*deformedVerts)[3] = BKE_mesh_vertexCos_get(me, &numVerts);
 
-    mti->deformVerts(md, &mectx, NULL, deformedVerts, numVerts);
+    mti->deformVerts(md_eval, &mectx, NULL, deformedVerts, numVerts);
     BKE_id_copy_ex(NULL, &me->id, (ID **)&result, LIB_ID_COPY_LOCALIZE);
     BKE_mesh_apply_vert_coords(result, deformedVerts);
 
@@ -1282,7 +1283,7 @@ Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph,
       add_shapekey_layers(mesh_temp, me);
     }
 
-    result = mti->applyModifier(md, &mectx, mesh_temp);
+    result = mti->applyModifier(md_eval, &mectx, mesh_temp);
     ASSERT_IS_VALID_MESH(result);
 
     if (mesh_temp != result) {
index bc95360eab984a40e3837be74f4620f05100b39c..231b3e144cac2cb9c0103ef7a7ea648a3239103f 100644 (file)
@@ -578,12 +578,11 @@ int ED_object_modifier_convert(ReportList *UNUSED(reports),
 static Mesh *modifier_apply_create_mesh_for_modifier(Depsgraph *depsgraph,
                                                      Scene *UNUSED(scene),
                                                      Object *object,
-                                                     ModifierData *md,
+                                                     ModifierData *md_eval,
                                                      bool build_shapekey_layers)
 {
   Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
   Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
-  ModifierData *md_eval = modifiers_findByName(object_eval, md->name);
   Mesh *mesh_applied = BKE_mesh_create_derived_for_modifier(
       depsgraph, scene_eval, object_eval, md_eval, build_shapekey_layers);
   return mesh_applied;
@@ -594,11 +593,11 @@ static int modifier_apply_shape(Main *bmain,
                                 Depsgraph *depsgraph,
                                 Scene *scene,
                                 Object *ob,
-                                ModifierData *md)
+                                ModifierData *md_eval)
 {
-  const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+  const ModifierTypeInfo *mti = modifierType_getInfo(md_eval->type);
 
-  if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
+  if (mti->isDisabled && mti->isDisabled(scene, md_eval, 0)) {
     BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
     return 0;
   }
@@ -620,12 +619,12 @@ static int modifier_apply_shape(Main *bmain,
     Key *key = me->key;
     KeyBlock *kb;
 
-    if (!modifier_isSameTopology(md) || mti->type == eModifierTypeType_NonGeometrical) {
+    if (!modifier_isSameTopology(md_eval) || mti->type == eModifierTypeType_NonGeometrical) {
       BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to shapes");
       return 0;
     }
 
-    mesh_applied = modifier_apply_create_mesh_for_modifier(depsgraph, scene, ob, md, false);
+    mesh_applied = modifier_apply_create_mesh_for_modifier(depsgraph, scene, ob, md_eval, false);
     if (!mesh_applied) {
       BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply");
       return 0;
@@ -640,7 +639,7 @@ static int modifier_apply_shape(Main *bmain,
       BKE_keyblock_convert_from_mesh(me, key, kb);
     }
 
-    kb = BKE_keyblock_add(key, md->name);
+    kb = BKE_keyblock_add(key, md_eval->name);
     BKE_mesh_nomain_to_meshkey(mesh_applied, me, kb);
 
     BKE_id_free(NULL, mesh_applied);
@@ -653,11 +652,11 @@ static int modifier_apply_shape(Main *bmain,
 }
 
 static int modifier_apply_obdata(
-    ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md)
+    ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval)
 {
-  const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+  const ModifierTypeInfo *mti = modifierType_getInfo(md_eval->type);
 
-  if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
+  if (mti->isDisabled && mti->isDisabled(scene, md_eval, 0)) {
     BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
     return 0;
   }
@@ -665,7 +664,7 @@ static int modifier_apply_obdata(
   if (ob->type == OB_MESH) {
     Mesh *mesh_applied;
     Mesh *me = ob->data;
-    MultiresModifierData *mmd = find_multires_modifier_before(scene, md);
+    MultiresModifierData *mmd = find_multires_modifier_before(scene, md_eval);
 
     if (me->key && mti->type != eModifierTypeType_NonGeometrical) {
       BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to a mesh with shape keys");
@@ -673,18 +672,18 @@ static int modifier_apply_obdata(
     }
 
     /* Multires: ensure that recent sculpting is applied */
-    if (md->type == eModifierType_Multires) {
+    if (md_eval->type == eModifierType_Multires) {
       multires_force_update(ob);
     }
 
     if (mmd && mmd->totlvl && mti->type == eModifierTypeType_OnlyDeform) {
-      if (!multiresModifier_reshapeFromDeformModifier(depsgraph, mmd, ob, md)) {
+      if (!multiresModifier_reshapeFromDeformModifier(depsgraph, mmd, ob, md_eval)) {
         BKE_report(reports, RPT_ERROR, "Multires modifier returned error, skipping apply");
         return 0;
       }
     }
     else {
-      mesh_applied = modifier_apply_create_mesh_for_modifier(depsgraph, scene, ob, md, true);
+      mesh_applied = modifier_apply_create_mesh_for_modifier(depsgraph, scene, ob, md_eval, true);
       if (!mesh_applied) {
         BKE_report(reports, RPT_ERROR, "Modifier returned error, skipping apply");
         return 0;
@@ -692,7 +691,7 @@ static int modifier_apply_obdata(
 
       BKE_mesh_nomain_to_mesh(mesh_applied, me, ob, &CD_MASK_MESH, true);
 
-      if (md->type == eModifierType_Multires) {
+      if (md_eval->type == eModifierType_Multires) {
         multires_customdata_delete(me);
       }
     }
@@ -716,7 +715,7 @@ static int modifier_apply_obdata(
                "Applied modifier only changed CV points, not tessellated/bevel vertices");
 
     vertexCos = BKE_curve_nurbs_vertexCos_get(&curve_eval->nurb, &numVerts);
-    mti->deformVerts(md, &mectx, NULL, vertexCos, numVerts);
+    mti->deformVerts(md_eval, &mectx, NULL, vertexCos, numVerts);
     BK_curve_nurbs_vertexCos_apply(&curve->nurb, vertexCos);
 
     MEM_freeN(vertexCos);