From da7458efce2b6f2d468e990a8e4912daff31a3e7 Mon Sep 17 00:00:00 2001 From: enn0x Date: Sun, 31 Jul 2011 19:57:28 +0000 Subject: [PATCH] Added guardiang to BulletTriangleMeshShape CTOR which asserts that meshes have at least one triangle. --- panda/src/bullet/bulletDebugNode.cxx | 32 +++----------------- panda/src/bullet/bulletTriangleMeshShape.cxx | 12 ++++++++ 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/panda/src/bullet/bulletDebugNode.cxx b/panda/src/bullet/bulletDebugNode.cxx index f9e092bde1..20c5be14a7 100644 --- a/panda/src/bullet/bulletDebugNode.cxx +++ b/panda/src/bullet/bulletDebugNode.cxx @@ -170,6 +170,8 @@ draw_mask_changed() { if (_verbose) { _drawer.setDebugMode(DebugDraw::DBG_DrawWireframe | DebugDraw::DBG_DrawAabb | + DebugDraw::DBG_DrawText | + DebugDraw::DBG_DrawFeaturesText | DebugDraw::DBG_DrawContactPoints | DebugDraw::DBG_DrawConstraints | DebugDraw::DBG_DrawConstraintLimits); @@ -183,23 +185,6 @@ draw_mask_changed() { } } -/* -DBG_DrawWireframe -DBG_DrawAabb -DBG_DrawText -DBG_DrawFeaturesText -DBG_DrawContactPoints -DBG_DrawConstraints -DBG_DrawConstraintLimits -DBG_NoDeactivation -DBG_NoHelpText -DBG_EnableSatComparison -DBG_DisableBulletLCP -DBG_ProfileTimings -DBG_EnableCCD -DBG_FastWireframe -*/ - //////////////////////////////////////////////////////////////////// // Function: BulletDebugNode::post_step // Access: Private @@ -261,17 +246,8 @@ post_step(btDynamicsWorld *world) { _drawer._triangles.clear(); // Force recompute of bounds - int num_geoms = this->get_num_geoms(); - for (int i = 0; i < num_geoms; i++) { - const Geom *geom = this->get_geom(i); - geom->mark_bounds_stale(); - } - - this->mark_bounds_stale(); - - // Alternate way, probably a little bit slower - //NodePath np = NodePath::any_path(this); - //np.force_recompute_bounds(); + NodePath np = NodePath::any_path(this); + np.force_recompute_bounds(); } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/bullet/bulletTriangleMeshShape.cxx b/panda/src/bullet/bulletTriangleMeshShape.cxx index 890302d248..1d07bfdfbe 100644 --- a/panda/src/bullet/bulletTriangleMeshShape.cxx +++ b/panda/src/bullet/bulletTriangleMeshShape.cxx @@ -30,6 +30,18 @@ TypeHandle BulletTriangleMeshShape::_type_handle; BulletTriangleMeshShape:: BulletTriangleMeshShape(BulletTriangleMesh *mesh, bool dynamic, bool compress, bool bvh) { + // Assert that mesh is not NULL + if (!mesh) { + bullet_cat.warning() << "mesh is NULL! creating new mesh." << endl; + mesh = new BulletTriangleMesh(); + } + + // Assert that mesh has at least one triangle + if (mesh->get_num_triangles() == 0) { + bullet_cat.warning() << "mesh has zero triangles! adding degenerated triangle." << endl; + mesh->add_triangle(LPoint3f::zero(), LPoint3f::zero(), LPoint3f::zero()); + } + // Retain a pointer to the mesh, to prevent it from being deleted _mesh = mesh;