svn merge -r 12347:12382 https://svn.blender.org/svnroot/bf-blender/trunk/blender
[blender.git] / source / blender / blenloader / intern / readfile.c
index 2293fbef0b5e09dd481a6fad277872361e5e8d19..fe84ae570961ca91a594d9e6b6511bac13e65b2e 100644 (file)
@@ -60,6 +60,7 @@
 #include "DNA_actuator_types.h"
 #include "DNA_brush_types.h"
 #include "DNA_camera_types.h"
+#include "DNA_cloth_types.h"
 #include "DNA_color_types.h"
 #include "DNA_controller_types.h"
 #include "DNA_constraint_types.h"
 
 #include "BKE_action.h"
 #include "BKE_armature.h"
+#include "BKE_cloth.h"
 #include "BKE_colortools.h"
 #include "BKE_constraint.h"
 #include "BKE_curve.h"
@@ -2878,7 +2880,31 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
                        SubsurfModifierData *smd = (SubsurfModifierData*) md;
 
                        smd->emCache = smd->mCache = 0;
-               } else if (md->type==eModifierType_Hook) {
+               } 
+               else if (md->type==eModifierType_Cloth) {
+                  ClothModifierData    *clmd = (ClothModifierData*) md;
+
+                  clmd->clothObject = NULL;
+                  clmd->sim_parms.cache = NULL;
+               
+                  if (clmd->sim_parms.cache) {
+                          // TODO 
+                         // clmd->cache = newdataadr (fd, clmd->cache);
+                         printf ("direct_link_modifiers: read cloth baked_data.\n");
+                  }
+               } 
+               else if (md->type==eModifierType_Collision) {
+                       CollisionModifierData *collmd = (CollisionModifierData*) md;
+                       
+                       collmd->x = NULL;
+                       collmd->xnew = NULL;
+                       collmd->current_x = NULL;
+                       collmd->current_xnew = NULL;
+                       collmd->time = -1;
+                       collmd->numverts = 0;
+                       collmd->tree = NULL;
+               }
+               else if (md->type==eModifierType_Hook) {
                        HookModifierData *hmd = (HookModifierData*) md;
 
                        hmd->indexar= newdataadr(fd, hmd->indexar);
@@ -2990,7 +3016,6 @@ static void direct_link_object(FileData *fd, Object *ob)
                sb->bpoint= NULL;       // init pointers so it gets rebuilt nicely
                sb->bspring= NULL;
                sb->scratch= NULL;
-
                
                sb->keys= newdataadr(fd, sb->keys);
                test_pointer_array(fd, (void **)&sb->keys);