Commit: d21ed9af211c0e0f691761174b11653cb8c5e0ec Author: Campbell Barton Date: Wed Mar 23 23:37:08 2016 +1100 Branches: blender-v2.77-release https://developer.blender.org/rBd21ed9af211c0e0f691761174b11653cb8c5e0ec
Fix T47893: BGE crashes w/ generated mesh data =================================================================== M source/gameengine/Physics/Bullet/CcdPhysicsController.cpp =================================================================== diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 89806d8..c79e1c2 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -1895,10 +1895,10 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject *meshobj, DerivedMesh *dm, for (int p2 = 0; p2 < numpolys; p2++) { MFace *mf = &mface[p2]; const int origi = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, p2) : p2; - RAS_Polygon *poly = meshobj->GetPolygon(origi); + RAS_Polygon *poly = (origi != ORIGINDEX_NONE) ? meshobj->GetPolygon(origi) : NULL; // only add polygons that have the collision flag set - if (poly->IsCollider()) { + if (poly && poly->IsCollider()) { if (!vert_tag_array[mf->v1]) { vert_tag_array[mf->v1] = true; tot_bt_verts++; @@ -1930,7 +1930,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject *meshobj, DerivedMesh *dm, for (int p2 = 0; p2 < numpolys; p2++) { MFace *mf = &mface[p2]; const int origi = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, p2) : p2; - RAS_Polygon *poly = meshobj->GetPolygon(origi); + RAS_Polygon *poly = (origi != ORIGINDEX_NONE) ? meshobj->GetPolygon(origi) : NULL; // only add polygons that have the collisionflag set if (poly->IsCollider()) { @@ -1973,10 +1973,10 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject *meshobj, DerivedMesh *dm, for (int p2 = 0; p2 < numpolys; p2++) { MFace *mf = &mface[p2]; const int origi = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, p2) : p2; - RAS_Polygon *poly = meshobj->GetPolygon(origi); + RAS_Polygon *poly = (origi != ORIGINDEX_NONE) ? meshobj->GetPolygon(origi) : NULL; // only add polygons that have the collision flag set - if (poly->IsCollider()) { + if (poly && poly->IsCollider()) { if (!vert_tag_array[mf->v1]) { vert_tag_array[mf->v1] = true; vert_remap_array[mf->v1] = tot_bt_verts; @@ -2025,10 +2025,10 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject *meshobj, DerivedMesh *dm, MFace *mf = &mface[p2]; MTFace *tf = (tface) ? &tface[p2] : NULL; const int origi = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, p2) : p2; - RAS_Polygon *poly = meshobj->GetPolygon(origi); + RAS_Polygon *poly = (origi != ORIGINDEX_NONE) ? meshobj->GetPolygon(origi) : NULL; // only add polygons that have the collisionflag set - if (poly->IsCollider()) { + if (poly && poly->IsCollider()) { MVert *v1 = &mvert[mf->v1]; MVert *v2 = &mvert[mf->v2]; MVert *v3 = &mvert[mf->v3]; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs