diff options
author | Jacques Lucke <jacques@blender.org> | 2020-06-16 18:17:43 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-06-16 18:17:43 +0300 |
commit | 2e5ef864ab17fbfdb50531a77ee8e1637b8efef6 (patch) | |
tree | 83f58d89c183ecfc56e53c7ae2e897e36ff9bfd2 /source/blender/modifiers | |
parent | 25a1ed993a794d67ee1624cdcfba0f1dc5ffb200 (diff) |
Refactor: move .blend read/write of mesh deform modifier to MOD_meshdeform.c
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_meshdeform.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index f324a6f92b9..e53de598218 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -49,6 +49,8 @@ #include "UI_interface.h" #include "UI_resources.h" +#include "BLO_read_write.h" + #include "RNA_access.h" #include "MEM_guardedalloc.h" @@ -607,6 +609,35 @@ static void panelRegister(ARegionType *region_type) modifier_panel_register(region_type, eModifierType_MeshDeform, panel_draw); } +static void blendWrite(BlendWriter *writer, const ModifierData *md) +{ + MeshDeformModifierData *mmd = (MeshDeformModifierData *)md; + int size = mmd->dyngridsize; + + BLO_write_struct_array(writer, MDefInfluence, mmd->totinfluence, mmd->bindinfluences); + BLO_write_int32_array(writer, mmd->totvert + 1, mmd->bindoffsets); + BLO_write_float3_array(writer, mmd->totcagevert, mmd->bindcagecos); + BLO_write_struct_array(writer, MDefCell, size * size * size, mmd->dyngrid); + BLO_write_struct_array(writer, MDefInfluence, mmd->totinfluence, mmd->dyninfluences); + BLO_write_int32_array(writer, mmd->totvert, mmd->dynverts); +} + +static void blendRead(BlendDataReader *reader, ModifierData *md) +{ + MeshDeformModifierData *mmd = (MeshDeformModifierData *)md; + + BLO_read_data_address(reader, &mmd->bindinfluences); + BLO_read_int32_array(reader, mmd->totvert + 1, &mmd->bindoffsets); + BLO_read_float3_array(reader, mmd->totcagevert, &mmd->bindcagecos); + BLO_read_data_address(reader, &mmd->dyngrid); + BLO_read_data_address(reader, &mmd->dyninfluences); + BLO_read_int32_array(reader, mmd->totvert, &mmd->dynverts); + + /* Deprecated storage. */ + BLO_read_float_array(reader, mmd->totvert, &mmd->bindweights); + BLO_read_float3_array(reader, mmd->totcagevert, &mmd->bindcos); +} + ModifierTypeInfo modifierType_MeshDeform = { /* name */ "MeshDeform", /* structName */ "MeshDeformModifierData", @@ -638,6 +669,6 @@ ModifierTypeInfo modifierType_MeshDeform = { /* foreachTexLink */ NULL, /* freeRuntimeData */ NULL, /* panelRegister */ panelRegister, - /* blendWrite */ NULL, - /* blendRead */ NULL, + /* blendWrite */ blendWrite, + /* blendRead */ blendRead, }; |