[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