[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14977] branches/cloth/blender/source/ blender/blenkernel/intern/collision.c: -= Collisions =-
Daniel Genrich
daniel.genrich at gmx.net
Mon May 26 12:36:14 CEST 2008
Revision: 14977
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14977
Author: genscher
Date: 2008-05-26 12:36:14 +0200 (Mon, 26 May 2008)
Log Message:
-----------
-= Collisions =-
1. fix for collisions (were working better with selfcolls enabled, now generally better)
Modified Paths:
--------------
branches/cloth/blender/source/blender/blenkernel/intern/collision.c
Modified: branches/cloth/blender/source/blender/blenkernel/intern/collision.c
===================================================================
--- branches/cloth/blender/source/blender/blenkernel/intern/collision.c 2008-05-26 09:50:46 UTC (rev 14976)
+++ branches/cloth/blender/source/blender/blenkernel/intern/collision.c 2008-05-26 10:36:14 UTC (rev 14977)
@@ -1458,7 +1458,7 @@
long i=0, j = 0, k = 0, numfaces = 0, numverts = 0;
unsigned int result = 0, rounds = 0; // result counts applied collisions; ic is for debug output;
ClothVertex *verts = NULL;
- int ret = 0;
+ int ret = 0, ret2 = 0;
ClothModifierData *tclmd;
int collisions = 0, count = 0;
@@ -1484,6 +1484,7 @@
do
{
result = 0;
+ ret2 = 0;
// check all collision objects
for ( base = G.scene->base.first; base; base = base->next )
@@ -1512,6 +1513,7 @@
continue;
ret += cloth_bvh_objcollisions_do ( clmd, collmd, step, dt );
+ ret2 += ret;
}
}
}
@@ -1522,6 +1524,7 @@
continue;
ret += cloth_bvh_objcollisions_do ( clmd, collmd, step, dt );
+ ret2 += ret;
}
}
rounds++;
@@ -1624,6 +1627,7 @@
VECSUB ( verts[i].tx, verts[i].tx, temp );
}
ret = 1;
+ ret2 += ret;
}
else
{
@@ -1640,7 +1644,7 @@
////////////////////////////////////////////////////////////
// SELFCOLLISIONS: update velocities
////////////////////////////////////////////////////////////
- if ( ret )
+ if ( ret2 )
{
for ( i = 0; i < cloth->numverts; i++ )
{
@@ -1653,7 +1657,7 @@
////////////////////////////////////////////////////////////
}
}
- while ( result && ( clmd->coll_parms->loop_count>rounds ) );
+ while ( ret2 && ( clmd->coll_parms->loop_count>rounds ) );
return MIN2 ( ret, 1 );
}
More information about the Bf-blender-cvs
mailing list