diff --git a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index 42cbfc6f6..c84938801 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -227,7 +227,7 @@ void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTra btVoronoiSimplexSolver simplexSolver; #define USE_SUBSIMPLEX_CONVEX_CAST 1 #ifdef USE_SUBSIMPLEX_CONVEX_CAST - btSubsimplexConvexCast convexCaster(castShape,convexShape,&simplexSolver); + btSubsimplexConvexCast convexCaster(castShape,convexShape,&simplexSolver); #else //btGjkConvexCast convexCaster(castShape,convexShape,&simplexSolver); //btContinuousConvexCollision convexCaster(castShape,convexShape,&simplexSolver,0); @@ -412,11 +412,6 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt { if (castResult.m_fraction < resultCallback.m_closestHitFraction) { -#ifdef USE_SUBSIMPLEX_CONVEX_CAST - //rotate normal into worldspace - castResult.m_normal = convexFromTrans.getBasis() * castResult.m_normal; -#endif //USE_SUBSIMPLEX_CONVEX_CAST - castResult.m_normal.normalize(); btCollisionWorld::LocalConvexResult localConvexResult ( @@ -477,7 +472,7 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt hitPointLocal, hitFraction); - bool normalInWorldSpace = false; + bool normalInWorldSpace = true; return m_resultCallback->AddSingleResult(convexResult,normalInWorldSpace); diff --git a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp index d871d9e7f..cc43c15a6 100644 --- a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp +++ b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp @@ -123,6 +123,7 @@ btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, //#define USE_SUBSIMPLEX_CONVEX_CAST 1 +//if you reenable USE_SUBSIMPLEX_CONVEX_CAST see commented out code below #ifdef USE_SUBSIMPLEX_CONVEX_CAST btSubsimplexConvexCast convexCaster(m_convexShape, &triangleShape, &simplexSolver); #else @@ -139,11 +140,13 @@ btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, { if (castResult.m_fraction < m_hitFraction) { - +/* btContinuousConvexCast's normal is already in world space */ +/* #ifdef USE_SUBSIMPLEX_CONVEX_CAST //rotate normal into worldspace castResult.m_normal = m_convexShapeFrom.getBasis() * castResult.m_normal; #endif //USE_SUBSIMPLEX_CONVEX_CAST +*/ castResult.m_normal.normalize(); reportHit (castResult.m_normal,