[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25358] trunk/blender/source/gameengine/ Physics/Bullet/CcdPhysicsController.cpp: Fix #20367: game engine crash, origindex layer is now optional.

Brecht Van Lommel brecht at blender.org
Mon Dec 14 11:52:02 CET 2009


Revision: 25358
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25358
Author:   blendix
Date:     2009-12-14 11:52:02 +0100 (Mon, 14 Dec 2009)

Log Message:
-----------
Fix #20367: game engine crash, origindex layer is now optional.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2009-12-14 06:25:42 UTC (rev 25357)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2009-12-14 10:52:02 UTC (rev 25358)
@@ -167,9 +167,9 @@
 
 	//disable soft body until first sneak preview is ready
 	if (!m_cci.m_bSoft || !m_cci.m_collisionShape ||
-		(shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&&
+		((shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&&
 		(shapeType != TRIANGLE_MESH_SHAPE_PROXYTYPE) &&
-		(shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE))
+		(shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)))
 	{
 		return false;
 	}
@@ -1437,7 +1437,7 @@
 		for (int p2=0; p2<numpolys; p2++)
 		{
 			MFace* mf = &mface[p2];
-			RAS_Polygon* poly = meshobj->GetPolygon(index[p2]);
+			RAS_Polygon* poly = meshobj->GetPolygon((index)? index[p2]: p2);
 
 			// only add polygons that have the collision flag set
 			if (poly->IsCollider())
@@ -1456,7 +1456,7 @@
 		for (int p2=0; p2<numpolys; p2++)
 		{
 			MFace* mf = &mface[p2];
-			RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
+			RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2);
 
 			// only add polygons that have the collisionflag set
 			if (poly->IsCollider())
@@ -1504,7 +1504,7 @@
 		for (int p2=0; p2<numpolys; p2++)
 		{
 			MFace* mf = &mface[p2];
-			RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
+			RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2);
 
 			// only add polygons that have the collision flag set
 			if (poly->IsCollider())
@@ -1541,7 +1541,7 @@
 		{
 			MFace* mf = &mface[p2];
 			MTFace* tf = (tface) ? &tface[p2] : NULL;
-			RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
+			RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2);
 
 			// only add polygons that have the collisionflag set
 			if (poly->IsCollider())
@@ -1567,7 +1567,7 @@
 				}
 
 				// m_polygonIndexArray
-				*poly_index_pt= index[p2];
+				*poly_index_pt= (index)? index[p2]: p2;
 				poly_index_pt++;
 
 				// the vertex location
@@ -1610,7 +1610,7 @@
 					}
 
 					// m_polygonIndexArray
-					*poly_index_pt= index[p2];
+					*poly_index_pt= (index)? index[p2]: p2;
 					poly_index_pt++;
 
 					// the vertex location
@@ -1776,13 +1776,16 @@
 			{
 				if(tf->mode & TF_DYNAMIC)
 				{
+					int origi = (index)? index[i]: i;
+
 					if(mf->v4) {
 						fv_pt= quad_verts;
-						*poly_index_pt++ = *poly_index_pt++ = index[i];
+						*poly_index_pt++ = origi;
+						*poly_index_pt++ = origi;
 						flen= 4;
 					} else {
 						fv_pt= tri_verts;
-						*poly_index_pt++ = index[i];
+						*poly_index_pt++ = origi;
 						flen= 3;
 					}
 
@@ -1832,13 +1835,16 @@
 			}
 
 			for(mf= mface, i=0; i < numpolys; mf++, i++) {
+				int origi = (index)? index[i]: i;
+
 				if(mf->v4) {
 					fv_pt= quad_verts;
-					*poly_index_pt++ = *poly_index_pt++ = index[i];
+					*poly_index_pt++ = origi;
+					*poly_index_pt++ = origi;
 				}
 				else {
 					fv_pt= tri_verts;
-					*poly_index_pt++ = index[i];
+					*poly_index_pt++ = origi;
 				}
 
 				for(; *fv_pt > -1; fv_pt++)





More information about the Bf-blender-cvs mailing list