Fix (unreported, related to T58210) LaplacianDeform binding state incorrectly reporte...
authorBastien Montagne <montagne29@wanadoo.fr>
Wed, 5 Dec 2018 17:37:29 +0000 (18:37 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Wed, 5 Dec 2018 19:54:02 +0000 (20:54 +0100)
LaplacianDeform binding handling is a catastrophee in CoW context,
because half of the binding (the laplacian solver cache thingy) is not
saved, and can be re-generated on the fly from stored vcos.

This means that binding is not only done when hitting 'bind' button, but
also at file load, and when some things change.

And this utterly breaks with CoW design, not sure how to fix, will add a
task about that.

But this also means that NULL laplacian solver cache pointer is not a
good check to know whether it is binded or not, only stored vcos are
relevant for that (and the binding flag, of course).

source/blender/makesrna/intern/rna_modifier.c

index 5e69f8a32f3bbbd517e895bfae49422558098b0f..fb70d3b86a03725535e04525b290ebb3bbfbd80a 100644 (file)
@@ -781,7 +781,7 @@ static void rna_OceanModifier_ocean_chop_set(PointerRNA *ptr, float value)
 static bool rna_LaplacianDeformModifier_is_bind_get(PointerRNA *ptr)
 {
        LaplacianDeformModifierData *lmd = (LaplacianDeformModifierData *)ptr->data;
-       return ((lmd->flag & MOD_LAPLACIANDEFORM_BIND) && (lmd->cache_system != NULL));
+       return ((lmd->flag & MOD_LAPLACIANDEFORM_BIND) && (lmd->vertexco != NULL));
 }
 
 /* NOTE: Curve and array modifiers requires curve path to be evaluated,