[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22454] branches/blender2.5/blender/source /blender/blenkernel: Proper copy code for multiple point caches.

Janne Karhu jhkarh at utu.fi
Fri Aug 14 18:26:01 CEST 2009


Revision: 22454
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22454
Author:   jhk
Date:     2009-08-14 18:25:59 +0200 (Fri, 14 Aug 2009)

Log Message:
-----------
Proper copy code for multiple point caches.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_pointcache.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/pointcache.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_pointcache.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_pointcache.h	2009-08-14 15:47:32 UTC (rev 22453)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_pointcache.h	2009-08-14 16:25:59 UTC (rev 22454)
@@ -192,7 +192,7 @@
 void BKE_ptache_free_mem(struct PointCache *cache);
 void BKE_ptcache_free(struct PointCache *cache);
 void BKE_ptcache_free_list(struct ListBase *ptcaches);
-struct PointCache *BKE_ptcache_copy(struct PointCache *cache);
+struct PointCache *BKE_ptcache_copy_list(struct ListBase *ptcaches_new, struct ListBase *ptcaches_old);
 
 /********************** Baking *********************/
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c	2009-08-14 15:47:32 UTC (rev 22453)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c	2009-08-14 16:25:59 UTC (rev 22454)
@@ -5978,7 +5978,7 @@
 	
 	tclmd->sim_parms = MEM_dupallocN(clmd->sim_parms);
 	tclmd->coll_parms = MEM_dupallocN(clmd->coll_parms);
-	tclmd->point_cache = BKE_ptcache_copy(clmd->point_cache);
+	tclmd->point_cache = BKE_ptcache_copy_list(&tclmd->ptcaches, &clmd->ptcaches);
 	tclmd->clothObject = NULL;
 }
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-08-14 15:47:32 UTC (rev 22453)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-08-14 16:25:59 UTC (rev 22454)
@@ -1026,7 +1026,7 @@
 	
 	sbn->scratch= NULL;
 
-	sbn->pointcache= BKE_ptcache_copy(sb->pointcache);
+	sbn->pointcache= BKE_ptcache_copy_list(&sbn->ptcaches, &sb->ptcaches);
 
 	return sbn;
 }
@@ -1085,7 +1085,7 @@
 	psysn->reactevents.first = psysn->reactevents.last = NULL;
 	psysn->renderdata = NULL;
 	
-	psysn->pointcache= BKE_ptcache_copy(psys->pointcache);
+	psysn->pointcache= BKE_ptcache_copy_list(&psysn->ptcaches, &psys->ptcaches);
 
 	id_us_plus((ID *)psysn->part);
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/pointcache.c	2009-08-14 15:47:32 UTC (rev 22453)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/pointcache.c	2009-08-14 16:25:59 UTC (rev 22454)
@@ -1630,7 +1630,7 @@
 	BLI_freelistN(ptcaches);
 }
 
-PointCache *BKE_ptcache_copy(PointCache *cache)
+static PointCache *ptcache_copy(PointCache *cache)
 {
 	PointCache *ncache;
 
@@ -1645,9 +1645,20 @@
 
 	return ncache;
 }
+/* returns first point cache */
+PointCache *BKE_ptcache_copy_list(ListBase *ptcaches_new, ListBase *ptcaches_old)
+{
+	PointCache *cache = ptcaches_old->first;
 
+	ptcaches_new->first = ptcaches_new->last = NULL;
 
+	for(; cache; cache=cache->next)
+		BLI_addtail(ptcaches_new, ptcache_copy(cache));
 
+	return ptcaches_new->first;
+}
+
+
 /* Baking */
 static int count_quick_cache(Scene *scene, int *quick_step)
 {





More information about the Bf-blender-cvs mailing list