[Bf-blender-cvs] [2e5ef864ab1] master: Refactor: move .blend read/write of mesh deform modifier to MOD_meshdeform.c

Jacques Lucke noreply at git.blender.org
Tue Jun 16 17:19:54 CEST 2020


Commit: 2e5ef864ab17fbfdb50531a77ee8e1637b8efef6
Author: Jacques Lucke
Date:   Tue Jun 16 17:17:43 2020 +0200
Branches: master
https://developer.blender.org/rB2e5ef864ab17fbfdb50531a77ee8e1637b8efef6

Refactor: move .blend read/write of mesh deform modifier to MOD_meshdeform.c

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

M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/modifiers/intern/MOD_meshdeform.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index e72cad47c0a..5b5cf8e6232 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5776,19 +5776,6 @@ static void direct_link_modifiers(BlendDataReader *reader, ListBase *lb, Object
 
       psmd->facepa = NULL;
     }
-    else if (md->type == eModifierType_MeshDeform) {
-      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);
-
-      BLO_read_float_array(reader, mmd->totvert, &mmd->bindweights);
-      BLO_read_float3_array(reader, mmd->totcagevert, &mmd->bindcos);
-    }
     else if (md->type == eModifierType_Ocean) {
       OceanModifierData *omd = (OceanModifierData *)md;
       omd->oceancache = NULL;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index fbd11ef5323..a40cc4c3ad2 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1757,17 +1757,6 @@ static void write_modifiers(BlendWriter *writer, ListBase *modbase)
       writestruct(wd, DATA, MFace, collmd->numfaces, collmd->mfaces);
 #endif
     }
-    else if (md->type == eModifierType_MeshDeform) {
-      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);
-    }
     else if (md->type == eModifierType_Warp) {
       WarpModifierData *tmd = (WarpModifierData *)md;
       if (tmd->curfalloff) {
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,
 };



More information about the Bf-blender-cvs mailing list