diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-10-10 04:01:05 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-10-10 04:01:05 +0300 |
commit | 44f478bb1a8f74d8d32d5028d5186133f5abc21c (patch) | |
tree | 8fbb07a11c35c4b5ed67cd688886d8ee1c52e708 /source/blender | |
parent | 8c470e26d25eab0133e42c187b09066b69e4f60c (diff) |
Modifier: remove derived-mesh for sculpt crazy-space
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/crazyspace.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/crazyspace.c b/source/blender/blenkernel/intern/crazyspace.c index bfb6fbd897c..354cc4926f1 100644 --- a/source/blender/blenkernel/intern/crazyspace.c +++ b/source/blender/blenkernel/intern/crazyspace.c @@ -316,14 +316,14 @@ int BKE_sculpt_get_first_deform_matrices( Object *ob, float (**deformmats)[3][3], float (**deformcos)[3]) { ModifierData *md; - DerivedMesh *dm; + Mesh *me_eval; int a, numVerts = 0; float (*defmats)[3][3] = NULL, (*deformedVerts)[3] = NULL; MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); const bool has_multires = mmd != NULL && mmd->sculptlvl > 0; int numleft = 0; VirtualModifierData virtualModifierData; - ModifierEvalContext mectx = {depsgraph, ob, 0}; + const ModifierEvalContext mectx = {depsgraph, ob, 0}; if (has_multires) { *deformmats = NULL; @@ -331,7 +331,7 @@ int BKE_sculpt_get_first_deform_matrices( return numleft; } - dm = NULL; + me_eval = NULL; md = modifiers_getVirtualModifierList(ob, &virtualModifierData); for (; md; md = md->next) { @@ -341,8 +341,8 @@ int BKE_sculpt_get_first_deform_matrices( if (mti->type == eModifierTypeType_OnlyDeform) { if (!defmats) { - Mesh *me = (Mesh *)ob->data; - dm = mesh_create_derived(me, NULL); + Mesh *me = ob->data; + me_eval = BKE_mesh_copy_for_eval(me, true); deformedVerts = BKE_mesh_vertexCos_get(me, &numVerts); defmats = MEM_callocN(sizeof(*defmats) * numVerts, "defmats"); @@ -351,7 +351,7 @@ int BKE_sculpt_get_first_deform_matrices( } if (mti->deformMatrices) { - modifier_deformMatrices_DM_deprecated(md, &mectx, dm, deformedVerts, defmats, numVerts); + mti->deformMatrices(md, &mectx, me_eval, deformedVerts, defmats, numVerts); } else break; } @@ -366,8 +366,9 @@ int BKE_sculpt_get_first_deform_matrices( numleft++; } - if (dm) - dm->release(dm); + if (me_eval) { + BKE_id_free(NULL, me_eval); + } *deformmats = defmats; *deformcos = deformedVerts; @@ -389,7 +390,7 @@ void BKE_crazyspace_build_sculpt(struct Depsgraph *depsgraph, Scene *scene, Obje int i, deformed = 0; VirtualModifierData virtualModifierData; ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData); - ModifierEvalContext mectx = {depsgraph, ob, 0}; + const ModifierEvalContext mectx = {depsgraph, ob, 0}; Mesh *me = (Mesh *)ob->data; for (; md; md = md->next) { |