Commit: 940e1c0b36810e3c86829db1798984b0c1585b03
Author: Philipp Oeser
Date:   Wed May 18 22:21:46 2016 +1000
Branches: compositor-2016
https://developer.blender.org/rB940e1c0b36810e3c86829db1798984b0c1585b03

Fix T47737: Lattice crashes w/ smooth modifier

Add flag for modifiers that support lattice

===================================================================

M       source/blender/blenkernel/BKE_modifier.h
M       source/blender/blenkernel/intern/lattice.c
M       source/blender/blenkernel/intern/object.c
M       source/blender/modifiers/intern/MOD_armature.c
M       source/blender/modifiers/intern/MOD_cast.c
M       source/blender/modifiers/intern/MOD_curve.c
M       source/blender/modifiers/intern/MOD_hook.c
M       source/blender/modifiers/intern/MOD_lattice.c
M       source/blender/modifiers/intern/MOD_meshcache.c
M       source/blender/modifiers/intern/MOD_meshdeform.c
M       source/blender/modifiers/intern/MOD_shrinkwrap.c
M       source/blender/modifiers/intern/MOD_simpledeform.c
M       source/blender/modifiers/intern/MOD_softbody.c
M       source/blender/modifiers/intern/MOD_warp.c
M       source/blender/modifiers/intern/MOD_wave.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_modifier.h 
b/source/blender/blenkernel/BKE_modifier.h
index 455912a..f6c0890 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -101,7 +101,8 @@ typedef enum {
        eModifierTypeFlag_NoUserAdd = (1 << 8),
 
        /* For modifiers that use CD_PREVIEW_MCOL for preview. */
-       eModifierTypeFlag_UsesPreview = (1 << 9)
+       eModifierTypeFlag_UsesPreview = (1 << 9),
+       eModifierTypeFlag_AcceptsLattice = (1 << 10),
 } ModifierTypeFlag;
 
 /* IMPORTANT! Keep ObjectWalkFunc and IDWalkFunc signatures compatible. */
diff --git a/source/blender/blenkernel/intern/lattice.c 
b/source/blender/blenkernel/intern/lattice.c
index 57c02ec..b350e93 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -1082,6 +1082,7 @@ void BKE_lattice_modifiers_calc(Scene *scene, Object *ob)
 
                md->scene = scene;
                
+               if (!(mti->flags & eModifierTypeFlag_AcceptsLattice)) continue;
                if (!(md->mode & eModifierMode_Realtime)) continue;
                if (editmode && !(md->mode & eModifierMode_Editmode)) continue;
                if (mti->isDisabled && mti->isDisabled(md, 0)) continue;
diff --git a/source/blender/blenkernel/intern/object.c 
b/source/blender/blenkernel/intern/object.c
index 1ba4852..80cdce1 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -244,6 +244,11 @@ bool BKE_object_support_modifier_type_check(Object *ob, 
int modifier_type)
 
        mti = modifierType_getInfo(modifier_type);
 
+
+       if (!(ob->type == OB_LATTICE && (mti->flags & 
eModifierTypeFlag_AcceptsLattice))) {
+               return false;
+       }
+
        if (!((mti->flags & eModifierTypeFlag_AcceptsCVs) ||
              (ob->type == OB_MESH && (mti->flags & 
eModifierTypeFlag_AcceptsMesh))))
        {
diff --git a/source/blender/modifiers/intern/MOD_armature.c 
b/source/blender/modifiers/intern/MOD_armature.c
index 2241a78..567505e 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -207,6 +207,7 @@ ModifierTypeInfo modifierType_Armature = {
        /* structSize */        sizeof(ArmatureModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
 
        /* copyData */          copyData,
diff --git a/source/blender/modifiers/intern/MOD_cast.c 
b/source/blender/modifiers/intern/MOD_cast.c
index 32c3d41..33e5b36 100644
--- a/source/blender/modifiers/intern/MOD_cast.c
+++ b/source/blender/modifiers/intern/MOD_cast.c
@@ -498,6 +498,7 @@ ModifierTypeInfo modifierType_Cast = {
        /* structSize */        sizeof(CastModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
 
        /* copyData */          copyData,
diff --git a/source/blender/modifiers/intern/MOD_curve.c 
b/source/blender/modifiers/intern/MOD_curve.c
index 6e2d746..9bc96e5 100644
--- a/source/blender/modifiers/intern/MOD_curve.c
+++ b/source/blender/modifiers/intern/MOD_curve.c
@@ -164,6 +164,7 @@ ModifierTypeInfo modifierType_Curve = {
        /* structSize */        sizeof(CurveModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
 
        /* copyData */          copyData,
diff --git a/source/blender/modifiers/intern/MOD_hook.c 
b/source/blender/modifiers/intern/MOD_hook.c
index bec0cc0..83c4ca7 100644
--- a/source/blender/modifiers/intern/MOD_hook.c
+++ b/source/blender/modifiers/intern/MOD_hook.c
@@ -417,6 +417,7 @@ ModifierTypeInfo modifierType_Hook = {
        /* structSize */        sizeof(HookModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
        /* copyData */          copyData,
        /* deformVerts */       deformVerts,
diff --git a/source/blender/modifiers/intern/MOD_lattice.c 
b/source/blender/modifiers/intern/MOD_lattice.c
index 0f49ce6..7d4701e 100644
--- a/source/blender/modifiers/intern/MOD_lattice.c
+++ b/source/blender/modifiers/intern/MOD_lattice.c
@@ -156,6 +156,7 @@ ModifierTypeInfo modifierType_Lattice = {
        /* structSize */        sizeof(LatticeModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
        /* copyData */          copyData,
        /* deformVerts */       deformVerts,
diff --git a/source/blender/modifiers/intern/MOD_meshcache.c 
b/source/blender/modifiers/intern/MOD_meshcache.c
index 92926ed..aa3e3eb 100644
--- a/source/blender/modifiers/intern/MOD_meshcache.c
+++ b/source/blender/modifiers/intern/MOD_meshcache.c
@@ -299,6 +299,7 @@ ModifierTypeInfo modifierType_MeshCache = {
        /* structSize */        sizeof(MeshCacheModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
 
        /* copyData */          copyData,
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c 
b/source/blender/modifiers/intern/MOD_meshdeform.c
index e3c94a1..3f34319 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -520,6 +520,7 @@ ModifierTypeInfo modifierType_MeshDeform = {
        /* structSize */        sizeof(MeshDeformModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
 
        /* copyData */          copyData,
diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c 
b/source/blender/modifiers/intern/MOD_shrinkwrap.c
index a9919ca..633311c 100644
--- a/source/blender/modifiers/intern/MOD_shrinkwrap.c
+++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c
@@ -194,6 +194,7 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsMesh |
                                eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode |
                                eModifierTypeFlag_EnableInEditmode,
 
diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c 
b/source/blender/modifiers/intern/MOD_simpledeform.c
index 588b56d..c68f265 100644
--- a/source/blender/modifiers/intern/MOD_simpledeform.c
+++ b/source/blender/modifiers/intern/MOD_simpledeform.c
@@ -366,6 +366,7 @@ ModifierTypeInfo modifierType_SimpleDeform = {
 
        /* flags */             eModifierTypeFlag_AcceptsMesh |
                                eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode |
                                eModifierTypeFlag_EnableInEditmode,
 
diff --git a/source/blender/modifiers/intern/MOD_softbody.c 
b/source/blender/modifiers/intern/MOD_softbody.c
index d958bad..98a1412 100644
--- a/source/blender/modifiers/intern/MOD_softbody.c
+++ b/source/blender/modifiers/intern/MOD_softbody.c
@@ -65,6 +65,7 @@ ModifierTypeInfo modifierType_Softbody = {
        /* structSize */        sizeof(SoftbodyModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_RequiresOriginalData |
                                eModifierTypeFlag_Single,
 
diff --git a/source/blender/modifiers/intern/MOD_warp.c 
b/source/blender/modifiers/intern/MOD_warp.c
index 27d3bac..b38de14 100644
--- a/source/blender/modifiers/intern/MOD_warp.c
+++ b/source/blender/modifiers/intern/MOD_warp.c
@@ -374,6 +374,7 @@ ModifierTypeInfo modifierType_Warp = {
        /* structSize */        sizeof(WarpModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
        /* copyData */          copyData,
        /* deformVerts */       deformVerts,
diff --git a/source/blender/modifiers/intern/MOD_wave.c 
b/source/blender/modifiers/intern/MOD_wave.c
index f13eeb3..683649e 100644
--- a/source/blender/modifiers/intern/MOD_wave.c
+++ b/source/blender/modifiers/intern/MOD_wave.c
@@ -384,6 +384,7 @@ ModifierTypeInfo modifierType_Wave = {
        /* structSize */        sizeof(WaveModifierData),
        /* type */              eModifierTypeType_OnlyDeform,
        /* flags */             eModifierTypeFlag_AcceptsCVs |
+                               eModifierTypeFlag_AcceptsLattice |
                                eModifierTypeFlag_SupportsEditmode,
        /* copyData */          copyData,
        /* deformVerts */       deformVerts,

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to