diff options
author | Bastien Montagne <bastien@blender.org> | 2022-06-07 16:29:01 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-06-07 16:30:05 +0300 |
commit | ccf0d22e92ccd3148326477a3e807261c3e9537c (patch) | |
tree | c6b6e0fa241a85c375c9c4eab38f6db999dd4d22 /source/blender/modifiers | |
parent | b69aad60bda23a53482b2c2ae98715c23a715bc8 (diff) |
Fix T98626: Mesh Deform modifier stops working on a linked collection upon undo.
Regression from rBb66368f3fd9c, we still need to store all data on undo
writes, since overrides are not re-applied after undo/redo.
Diffstat (limited to 'source/blender/modifiers')
4 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c b/source/blender/modifiers/intern/MOD_correctivesmooth.c index 8b6c306dae8..3698f4403a1 100644 --- a/source/blender/modifiers/intern/MOD_correctivesmooth.c +++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c @@ -801,8 +801,9 @@ static void panelRegister(ARegionType *region_type) static void blendWrite(BlendWriter *writer, const ID *id_owner, const ModifierData *md) { CorrectiveSmoothModifierData csmd = *(const CorrectiveSmoothModifierData *)md; + const bool is_undo = BLO_write_is_undo(writer); - if (ID_IS_OVERRIDE_LIBRARY(id_owner)) { + if (ID_IS_OVERRIDE_LIBRARY(id_owner) && !is_undo) { BLI_assert(!ID_IS_LINKED(id_owner)); const bool is_local = (md->flag & eModifierFlag_OverrideLibrary_Local) != 0; if (!is_local) { diff --git a/source/blender/modifiers/intern/MOD_laplaciandeform.c b/source/blender/modifiers/intern/MOD_laplaciandeform.c index 06ded1c4488..a22f4b35e0d 100644 --- a/source/blender/modifiers/intern/MOD_laplaciandeform.c +++ b/source/blender/modifiers/intern/MOD_laplaciandeform.c @@ -846,8 +846,9 @@ static void panelRegister(ARegionType *region_type) static void blendWrite(BlendWriter *writer, const ID *id_owner, const ModifierData *md) { LaplacianDeformModifierData lmd = *(const LaplacianDeformModifierData *)md; + const bool is_undo = BLO_write_is_undo(writer); - if (ID_IS_OVERRIDE_LIBRARY(id_owner)) { + if (ID_IS_OVERRIDE_LIBRARY(id_owner) && !is_undo) { BLI_assert(!ID_IS_LINKED(id_owner)); const bool is_local = (md->flag & eModifierFlag_OverrideLibrary_Local) != 0; if (!is_local) { diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 0cff85d30ec..5dac31ac1df 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -584,8 +584,9 @@ static void panelRegister(ARegionType *region_type) static void blendWrite(BlendWriter *writer, const ID *id_owner, const ModifierData *md) { MeshDeformModifierData mmd = *(const MeshDeformModifierData *)md; + const bool is_undo = BLO_write_is_undo(writer); - if (ID_IS_OVERRIDE_LIBRARY(id_owner)) { + if (ID_IS_OVERRIDE_LIBRARY(id_owner) && !is_undo) { BLI_assert(!ID_IS_LINKED(id_owner)); const bool is_local = (md->flag & eModifierFlag_OverrideLibrary_Local) != 0; if (!is_local) { diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c index 9b0012e3890..20cc9b2392f 100644 --- a/source/blender/modifiers/intern/MOD_surfacedeform.c +++ b/source/blender/modifiers/intern/MOD_surfacedeform.c @@ -1672,8 +1672,9 @@ static void panelRegister(ARegionType *region_type) static void blendWrite(BlendWriter *writer, const ID *id_owner, const ModifierData *md) { SurfaceDeformModifierData smd = *(const SurfaceDeformModifierData *)md; + const bool is_undo = BLO_write_is_undo(writer); - if (ID_IS_OVERRIDE_LIBRARY(id_owner)) { + if (ID_IS_OVERRIDE_LIBRARY(id_owner) && !is_undo) { BLI_assert(!ID_IS_LINKED(id_owner)); const bool is_local = (md->flag & eModifierFlag_OverrideLibrary_Local) != 0; if (!is_local) { |