forked from bartvdbraak/blender
Fix T47737: Lattice crashes w/ smooth modifier
Add flag for modifiers that support lattice
This commit is contained in:
parent
cade8e25c6
commit
7a8bd2eaea
@ -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. */
|
||||
|
@ -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;
|
||||
|
@ -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))))
|
||||
{
|
||||
|
@ -207,6 +207,7 @@ ModifierTypeInfo modifierType_Armature = {
|
||||
/* structSize */ sizeof(ArmatureModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -498,6 +498,7 @@ ModifierTypeInfo modifierType_Cast = {
|
||||
/* structSize */ sizeof(CastModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -164,6 +164,7 @@ ModifierTypeInfo modifierType_Curve = {
|
||||
/* structSize */ sizeof(CurveModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -417,6 +417,7 @@ ModifierTypeInfo modifierType_Hook = {
|
||||
/* structSize */ sizeof(HookModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
/* deformVerts */ deformVerts,
|
||||
|
@ -156,6 +156,7 @@ ModifierTypeInfo modifierType_Lattice = {
|
||||
/* structSize */ sizeof(LatticeModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
/* deformVerts */ deformVerts,
|
||||
|
@ -299,6 +299,7 @@ ModifierTypeInfo modifierType_MeshCache = {
|
||||
/* structSize */ sizeof(MeshCacheModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -520,6 +520,7 @@ ModifierTypeInfo modifierType_MeshDeform = {
|
||||
/* structSize */ sizeof(MeshDeformModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -194,6 +194,7 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsMesh |
|
||||
eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_EnableInEditmode,
|
||||
|
||||
|
@ -366,6 +366,7 @@ ModifierTypeInfo modifierType_SimpleDeform = {
|
||||
|
||||
/* flags */ eModifierTypeFlag_AcceptsMesh |
|
||||
eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_EnableInEditmode,
|
||||
|
||||
|
@ -65,6 +65,7 @@ ModifierTypeInfo modifierType_Softbody = {
|
||||
/* structSize */ sizeof(SoftbodyModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_RequiresOriginalData |
|
||||
eModifierTypeFlag_Single,
|
||||
|
||||
|
@ -374,6 +374,7 @@ ModifierTypeInfo modifierType_Warp = {
|
||||
/* structSize */ sizeof(WarpModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
/* deformVerts */ deformVerts,
|
||||
|
@ -384,6 +384,7 @@ ModifierTypeInfo modifierType_Wave = {
|
||||
/* structSize */ sizeof(WaveModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
/* deformVerts */ deformVerts,
|
||||
|
Loading…
Reference in New Issue
Block a user