From fa2276f1caf47e932acf99465a4ea8128755c7d6 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Thu, 12 Sep 2013 20:25:06 +0000 Subject: [PATCH] add option for slightly more accurate, and slightly slower algorithm for ray versus convex, used in btCollisionWorld::rayTest. rayResult.m_flags |= btTriangleRaycastCallback::kF_UseGjkConvexRaytest; See Demos/RaytestDemo/RaytestDemo.cpp for usage This fixes issue 146, longest outstanding from 2008. --- Demos/RaytestDemo/RaytestDemo.cpp | 3 +++ .../CollisionDispatch/btCollisionWorld.cpp | 18 ++++++++++++------ .../NarrowPhaseCollision/btRaycastCallback.h | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Demos/RaytestDemo/RaytestDemo.cpp b/Demos/RaytestDemo/RaytestDemo.cpp index 9fc494f7a..1f5426a2d 100644 --- a/Demos/RaytestDemo/RaytestDemo.cpp +++ b/Demos/RaytestDemo/RaytestDemo.cpp @@ -68,6 +68,9 @@ void RaytestDemo::castRays() sDebugDraw.drawLine(from,to,btVector4(0,0,0,1)); btCollisionWorld::AllHitsRayResultCallback allResults(from,to); allResults.m_flags |= btTriangleRaycastCallback::kF_KeepUnflippedNormal; + //optional kF_UseGjkConvexRaytest flag enabled a slightly more accurate and slightly slower algorithm + allResults.m_flags |= btTriangleRaycastCallback::kF_UseGjkConvexRaytest; + m_dynamicsWorld->rayTest(from,to,allResults); for (int i=0;i