[Bf-blender-cvs] [1e0426da7c7] master: Refactor: move more modifier specific code out of readfile.c

Jacques Lucke noreply at git.blender.org
Tue Jun 23 17:26:00 CEST 2020


Commit: 1e0426da7c735b5d59f23b2b9303d9c1d72ca7f8
Author: Jacques Lucke
Date:   Tue Jun 23 17:25:44 2020 +0200
Branches: master
https://developer.blender.org/rB1e0426da7c735b5d59f23b2b9303d9c1d72ca7f8

Refactor: move more modifier specific code out of readfile.c

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

M	source/blender/blenloader/intern/readfile.c
M	source/blender/modifiers/intern/MOD_armature.c
M	source/blender/modifiers/intern/MOD_collision.c
M	source/blender/modifiers/intern/MOD_explode.c
M	source/blender/modifiers/intern/MOD_meshsequencecache.c
M	source/blender/modifiers/intern/MOD_ocean.c
M	source/blender/modifiers/intern/MOD_particlesystem.c
M	source/blender/modifiers/intern/MOD_subsurf.c
M	source/blender/modifiers/intern/MOD_surface.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 15dbef5fdc5..e9bd6c9c0d4 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5557,16 +5557,6 @@ static void direct_link_modifiers(BlendDataReader *reader, ListBase *lb, Object
     if (is_allocated) {
       /* All the fields has been properly allocated. */
     }
-    else if (md->type == eModifierType_Subsurf) {
-      SubsurfModifierData *smd = (SubsurfModifierData *)md;
-
-      smd->emCache = smd->mCache = NULL;
-    }
-    else if (md->type == eModifierType_Armature) {
-      ArmatureModifierData *amd = (ArmatureModifierData *)md;
-
-      amd->vert_coords_prev = NULL;
-    }
     else if (md->type == eModifierType_Cloth) {
       ClothModifierData *clmd = (ClothModifierData *)md;
 
@@ -5706,65 +5696,6 @@ static void direct_link_modifiers(BlendDataReader *reader, ListBase *lb, Object
         BLO_read_data_address(reader, &pmd->brush->vel_ramp);
       }
     }
-    else if (md->type == eModifierType_Collision) {
-      CollisionModifierData *collmd = (CollisionModifierData *)md;
-#if 0
-      // TODO: CollisionModifier should use pointcache
-      // + have proper reset events before enabling this
-      collmd->x = newdataadr(fd, collmd->x);
-      collmd->xnew = newdataadr(fd, collmd->xnew);
-      collmd->mfaces = newdataadr(fd, collmd->mfaces);
-
-      collmd->current_x = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_x");
-      collmd->current_xnew = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_xnew");
-      collmd->current_v = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_v");
-#endif
-
-      collmd->x = NULL;
-      collmd->xnew = NULL;
-      collmd->current_x = NULL;
-      collmd->current_xnew = NULL;
-      collmd->current_v = NULL;
-      collmd->time_x = collmd->time_xnew = -1000;
-      collmd->mvert_num = 0;
-      collmd->tri_num = 0;
-      collmd->is_static = false;
-      collmd->bvhtree = NULL;
-      collmd->tri = NULL;
-    }
-    else if (md->type == eModifierType_Surface) {
-      SurfaceModifierData *surmd = (SurfaceModifierData *)md;
-
-      surmd->mesh = NULL;
-      surmd->bvhtree = NULL;
-      surmd->x = NULL;
-      surmd->v = NULL;
-      surmd->numverts = 0;
-    }
-    else if (md->type == eModifierType_ParticleSystem) {
-      ParticleSystemModifierData *psmd = (ParticleSystemModifierData *)md;
-
-      psmd->mesh_final = NULL;
-      psmd->mesh_original = NULL;
-      BLO_read_data_address(reader, &psmd->psys);
-      psmd->flag &= ~eParticleSystemFlag_psys_updated;
-      psmd->flag |= eParticleSystemFlag_file_loaded;
-    }
-    else if (md->type == eModifierType_Explode) {
-      ExplodeModifierData *psmd = (ExplodeModifierData *)md;
-
-      psmd->facepa = NULL;
-    }
-    else if (md->type == eModifierType_Ocean) {
-      OceanModifierData *omd = (OceanModifierData *)md;
-      omd->oceancache = NULL;
-      omd->ocean = NULL;
-    }
-    else if (md->type == eModifierType_MeshSequenceCache) {
-      MeshSeqCacheModifierData *msmcd = (MeshSeqCacheModifierData *)md;
-      msmcd->reader = NULL;
-      msmcd->reader_object_path[0] = '\0';
-    }
 
     if (mti->blendRead != NULL) {
       mti->blendRead(reader, md);
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index cf702c7d40d..b62c03d1b03 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -49,6 +49,8 @@
 
 #include "RNA_access.h"
 
+#include "BLO_read_write.h"
+
 #include "DEG_depsgraph_query.h"
 
 #include "bmesh.h"
@@ -261,6 +263,13 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_Armature, panel_draw);
 }
 
+static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
+{
+  ArmatureModifierData *amd = (ArmatureModifierData *)md;
+
+  amd->vert_coords_prev = NULL;
+}
+
 ModifierTypeInfo modifierType_Armature = {
     /* name */ "Armature",
     /* structName */ "ArmatureModifierData",
@@ -293,5 +302,5 @@ ModifierTypeInfo modifierType_Armature = {
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
     /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendRead */ blendRead,
 };
diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c
index 7a338b59e98..a355558a3ba 100644
--- a/source/blender/modifiers/intern/MOD_collision.c
+++ b/source/blender/modifiers/intern/MOD_collision.c
@@ -54,6 +54,8 @@
 #include "MOD_ui_common.h"
 #include "MOD_util.h"
 
+#include "BLO_read_write.h"
+
 #include "DEG_depsgraph_query.h"
 
 static void initData(ModifierData *md)
@@ -269,6 +271,34 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_Collision, panel_draw);
 }
 
+static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
+{
+  CollisionModifierData *collmd = (CollisionModifierData *)md;
+#if 0
+      // TODO: CollisionModifier should use pointcache
+      // + have proper reset events before enabling this
+      collmd->x = newdataadr(fd, collmd->x);
+      collmd->xnew = newdataadr(fd, collmd->xnew);
+      collmd->mfaces = newdataadr(fd, collmd->mfaces);
+
+      collmd->current_x = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_x");
+      collmd->current_xnew = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_xnew");
+      collmd->current_v = MEM_calloc_arrayN(collmd->numverts, sizeof(MVert), "current_v");
+#endif
+
+  collmd->x = NULL;
+  collmd->xnew = NULL;
+  collmd->current_x = NULL;
+  collmd->current_xnew = NULL;
+  collmd->current_v = NULL;
+  collmd->time_x = collmd->time_xnew = -1000;
+  collmd->mvert_num = 0;
+  collmd->tri_num = 0;
+  collmd->is_static = false;
+  collmd->bvhtree = NULL;
+  collmd->tri = NULL;
+}
+
 ModifierTypeInfo modifierType_Collision = {
     /* name */ "Collision",
     /* structName */ "CollisionModifierData",
@@ -300,5 +330,5 @@ ModifierTypeInfo modifierType_Collision = {
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
     /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendRead */ blendRead,
 };
diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c
index 00e39a7ea6c..29f7294c202 100644
--- a/source/blender/modifiers/intern/MOD_explode.c
+++ b/source/blender/modifiers/intern/MOD_explode.c
@@ -49,6 +49,8 @@
 #include "UI_interface.h"
 #include "UI_resources.h"
 
+#include "BLO_read_write.h"
+
 #include "RNA_access.h"
 
 #include "DEG_depsgraph_query.h"
@@ -1228,6 +1230,13 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_Explode, panel_draw);
 }
 
+static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
+{
+  ExplodeModifierData *psmd = (ExplodeModifierData *)md;
+
+  psmd->facepa = NULL;
+}
+
 ModifierTypeInfo modifierType_Explode = {
     /* name */ "Explode",
     /* structName */ "ExplodeModifierData",
@@ -1258,5 +1267,5 @@ ModifierTypeInfo modifierType_Explode = {
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
     /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendRead */ blendRead,
 };
diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c
index b4269513f8e..9eae7ae941f 100644
--- a/source/blender/modifiers/intern/MOD_meshsequencecache.c
+++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c
@@ -44,6 +44,8 @@
 
 #include "RNA_access.h"
 
+#include "BLO_read_write.h"
+
 #include "DEG_depsgraph_build.h"
 #include "DEG_depsgraph_query.h"
 
@@ -229,6 +231,13 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_MeshSequenceCache, panel_draw);
 }
 
+static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
+{
+  MeshSeqCacheModifierData *msmcd = (MeshSeqCacheModifierData *)md;
+  msmcd->reader = NULL;
+  msmcd->reader_object_path[0] = '\0';
+}
+
 ModifierTypeInfo modifierType_MeshSequenceCache = {
     /* name */ "MeshSequenceCache",
     /* structName */ "MeshSeqCacheModifierData",
@@ -260,5 +269,5 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
     /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendRead */ blendRead,
 };
diff --git a/source/blender/modifiers/intern/MOD_ocean.c b/source/blender/modifiers/intern/MOD_ocean.c
index 1cdba84bb27..88581464a02 100644
--- a/source/blender/modifiers/intern/MOD_ocean.c
+++ b/source/blender/modifiers/intern/MOD_ocean.c
@@ -49,6 +49,8 @@
 
 #include "RNA_access.h"
 
+#include "BLO_read_write.h"
+
 #include "WM_types.h" /* For UI free bake operator. */
 
 #include "DEG_depsgraph_query.h"
@@ -674,6 +676,13 @@ static void panelRegister(ARegionType *region_type)
 #endif /* WITH_OCEANSIM */
 }
 
+static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
+{
+  OceanModifierData *omd = (OceanModifierData *)md;
+  omd->oceancache = NULL;
+  omd->ocean = NULL;
+}
+
 ModifierTypeInfo modifierType_Ocean = {
     /* name */ "Ocean",
     /* structName */ "OceanModifierData",
@@ -706,5 +715,5 @@ ModifierTypeInfo modifierType_Ocean = {
     /* freeRuntimeData */ NULL,
     /* panelRegister */ panelRegister,
     /* blendWrite */ NULL,
-    /* blendRead */ NULL,
+    /* blendRead */ blendRead,
 };
diff --git a/source/blender/modifiers/intern/MOD_particlesystem.c b/source/blender/modifiers/intern/MOD_particlesystem.c
index 8c25c3eb4ba..ea0c63da1b0 100644
--- a/source/blender/modifiers/intern/MOD_particlesystem.c
+++ b/source/blender/modifiers/intern/MOD_particlesystem.c
@@ -46,6 +46,8 @@
 
 #include "DEG_depsgraph_query.h"
 
+#include "BLO_read_write.h"
+
 #include "MOD_ui_common.h"
 #include "MOD_util.h"
 
@@ -295,6 +297,18 @@ static void panelRegister(ARegionType *region_type)
   modifier_panel_register(region_type, eModifierType_ParticleSystem, panel_dra

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list