[Bf-blender-cvs] [adcb7a2ce7c] master: Refactor: move blenloader code of surface deform modifier

Jacques Lucke noreply at git.blender.org
Tue Jun 23 16:51:55 CEST 2020


Commit: adcb7a2ce7c3ec79f2b30cc1cef02aa1ea9e7690
Author: Jacques Lucke
Date:   Tue Jun 23 16:51:43 2020 +0200
Branches: master
https://developer.blender.org/rBadcb7a2ce7c3ec79f2b30cc1cef02aa1ea9e7690

Refactor: move blenloader code of surface deform modifier

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

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

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index b5055111a30..8c02b067d35 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5777,33 +5777,6 @@ static void direct_link_modifiers(BlendDataReader *reader, ListBase *lb, Object
       msmcd->reader = NULL;
       msmcd->reader_object_path[0] = '\0';
     }
-    else if (md->type == eModifierType_SurfaceDeform) {
-      SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
-
-      BLO_read_data_address(reader, &smd->verts);
-
-      if (smd->verts) {
-        for (int i = 0; i < smd->numverts; i++) {
-          BLO_read_data_address(reader, &smd->verts[i].binds);
-
-          if (smd->verts[i].binds) {
-            for (int j = 0; j < smd->verts[i].numbinds; j++) {
-              BLO_read_uint32_array(
-                  reader, smd->verts[i].binds[j].numverts, &smd->verts[i].binds[j].vert_inds);
-
-              if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
-                  smd->verts[i].binds[j].mode == MOD_SDEF_MODE_LOOPTRI) {
-                BLO_read_float3_array(reader, 1, &smd->verts[i].binds[j].vert_weights);
-              }
-              else {
-                BLO_read_float_array(
-                    reader, smd->verts[i].binds[j].numverts, &smd->verts[i].binds[j].vert_weights);
-              }
-            }
-          }
-        }
-      }
-    }
     else if (md->type == eModifierType_Bevel) {
       BevelModifierData *bmd = (BevelModifierData *)md;
       BLO_read_data_address(reader, &bmd->custom_profile);
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 6aeb0746d21..8f87ff78ab5 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1748,33 +1748,6 @@ static void write_modifiers(BlendWriter *writer, ListBase *modbase)
       writestruct(wd, DATA, MFace, collmd->numfaces, collmd->mfaces);
 #endif
     }
-    else if (md->type == eModifierType_SurfaceDeform) {
-      SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
-
-      BLO_write_struct_array(writer, SDefVert, smd->numverts, smd->verts);
-
-      if (smd->verts) {
-        for (int i = 0; i < smd->numverts; i++) {
-          BLO_write_struct_array(writer, SDefBind, smd->verts[i].numbinds, smd->verts[i].binds);
-
-          if (smd->verts[i].binds) {
-            for (int j = 0; j < smd->verts[i].numbinds; j++) {
-              BLO_write_uint32_array(
-                  writer, smd->verts[i].binds[j].numverts, smd->verts[i].binds[j].vert_inds);
-
-              if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
-                  smd->verts[i].binds[j].mode == MOD_SDEF_MODE_LOOPTRI) {
-                BLO_write_float3_array(writer, 1, smd->verts[i].binds[j].vert_weights);
-              }
-              else {
-                BLO_write_float_array(
-                    writer, smd->verts[i].binds[j].numverts, smd->verts[i].binds[j].vert_weights);
-              }
-            }
-          }
-        }
-      }
-    }
     else if (md->type == eModifierType_Bevel) {
       BevelModifierData *bmd = (BevelModifierData *)md;
       if (bmd->custom_profile) {
diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c
index e1bc6305b0a..fc41afb6613 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -47,6 +47,8 @@
 #include "UI_interface.h"
 #include "UI_resources.h"
 
+#include "BLO_read_write.h"
+
 #include "RNA_access.h"
 
 #include "DEG_depsgraph.h"
@@ -1438,6 +1440,64 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_SurfaceDeform, panel_draw);
 }
 
+static void blendWrite(BlendWriter *writer, const ModifierData *md)
+{
+  const SurfaceDeformModifierData *smd = (const SurfaceDeformModifierData *)md;
+
+  BLO_write_struct_array(writer, SDefVert, smd->numverts, smd->verts);
+
+  if (smd->verts) {
+    for (int i = 0; i < smd->numverts; i++) {
+      BLO_write_struct_array(writer, SDefBind, smd->verts[i].numbinds, smd->verts[i].binds);
+
+      if (smd->verts[i].binds) {
+        for (int j = 0; j < smd->verts[i].numbinds; j++) {
+          BLO_write_uint32_array(
+              writer, smd->verts[i].binds[j].numverts, smd->verts[i].binds[j].vert_inds);
+
+          if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
+              smd->verts[i].binds[j].mode == MOD_SDEF_MODE_LOOPTRI) {
+            BLO_write_float3_array(writer, 1, smd->verts[i].binds[j].vert_weights);
+          }
+          else {
+            BLO_write_float_array(
+                writer, smd->verts[i].binds[j].numverts, smd->verts[i].binds[j].vert_weights);
+          }
+        }
+      }
+    }
+  }
+}
+
+static void blendRead(BlendDataReader *reader, ModifierData *md)
+{
+  SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
+
+  BLO_read_data_address(reader, &smd->verts);
+
+  if (smd->verts) {
+    for (int i = 0; i < smd->numverts; i++) {
+      BLO_read_data_address(reader, &smd->verts[i].binds);
+
+      if (smd->verts[i].binds) {
+        for (int j = 0; j < smd->verts[i].numbinds; j++) {
+          BLO_read_uint32_array(
+              reader, smd->verts[i].binds[j].numverts, &smd->verts[i].binds[j].vert_inds);
+
+          if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
+              smd->verts[i].binds[j].mode == MOD_SDEF_MODE_LOOPTRI) {
+            BLO_read_float3_array(reader, 1, &smd->verts[i].binds[j].vert_weights);
+          }
+          else {
+            BLO_read_float_array(
+                reader, smd->verts[i].binds[j].numverts, &smd->verts[i].binds[j].vert_weights);
+          }
+        }
+      }
+    }
+  }
+}
+
 ModifierTypeInfo modifierType_SurfaceDeform = {
     /* name */ "SurfaceDeform",
     /* structName */ "SurfaceDeformModifierData",
@@ -1468,6 +1528,6 @@ ModifierTypeInfo modifierType_SurfaceDeform = {
     /* foreachTexLink */ NULL,
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
-    /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendWrite */ blendWrite,
+    /* blendRead */ blendRead,
 };



More information about the Bf-blender-cvs mailing list