i have a problem with bullet. I have a basic (copied passed from the forum) character controler, but when it's hitting something, i get an assertion failed. Here is the call stack:
And to be more precise, the error happens at line 345 of btCollisionWorld:msvcr100d.dll!_NMSG_WRITE(int rterrnum) Ligne 217 C
msvcr100d.dll!abort() Ligne 61 + 0x7 octets C
msvcr100d.dll!_wassert(const wchar_t * expr, const wchar_t * filename, unsigned int lineno) Ligne 153 C
> openmw.exe!btCollisionWorld::ClosestConvexResultCallback::addSingleResult(btCollisionWorld::LocalConvexResult & convexResult, bool normalInWorldSpace) Ligne 345 + 0x2c octets C++
openmw.exe!btKinematicClosestNotMeConvexResultCallback::addSingleResult(btCollisionWorld::LocalConvexResult & convexResult, bool normalInWorldSpace) Ligne 91 C++
openmw.exe!`btCollisionWorld::objectQuerySingle'::`33'::LocalInfoAdder::addSingleResult(btCollisionWorld::LocalConvexResult & r, bool b) Ligne 671 + 0x1e octets C++
openmw.exe!`btCollisionWorld::objectQuerySingle'::`22'::BridgeTriangleConvexcastCallback::reportHit(const btVector3 & hitNormalLocal, const btVector3 & hitPointLocal, float hitFraction, int partId, int triangleIndex) Ligne 567 + 0x24 octets C++
openmw.exe!btTriangleConvexcastCallback::processTriangle(btVector3 * triangle, int partId, int triangleIndex) Ligne 171 + 0x2f octets C++
openmw.exe!`btBvhTriangleMeshShape::performConvexcast'::`2'::MyNodeOverlapCallback::processNode(int nodeSubPart, int nodeTriangleIndex) Ligne 221 + 0x21 octets C++
openmw.exe!btQuantizedBvh::walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback * nodeCallback, const btVector3 & raySource, const btVector3 & rayTarget, const btVector3 & aabbMin, const btVector3 & aabbMax, int startNodeIndex, int endNodeIndex) Ligne 647 + 0x21 octets C++
openmw.exe!btQuantizedBvh::reportBoxCastOverlappingNodex(btNodeOverlapCallback * nodeCallback, const btVector3 & raySource, const btVector3 & rayTarget, const btVector3 & aabbMin, const btVector3 & aabbMax) Ligne 770 C++
openmw.exe!btBvhTriangleMeshShape::performConvexcast(btTriangleCallback * callback, const btVector3 & raySource, const btVector3 & rayTarget, const btVector3 & aabbMin, const btVector3 & aabbMax) Ligne 229 C++
openmw.exe!btCollisionWorld::objectQuerySingle(const btConvexShape * castShape, const btTransform & convexFromTrans, const btTransform & convexToTrans, btCollisionObject * collisionObject, const btCollisionShape * collisionShape, const btTransform & colObjWorldTransform, btCollisionWorld::ConvexResultCallback & resultCallback, float allowedPenetration) Ligne 579 C++
openmw.exe!btCollisionWorld::objectQuerySingle(const btConvexShape * castShape, const btTransform & convexFromTrans, const btTransform & convexToTrans, btCollisionObject * collisionObject, const btCollisionShape * collisionShape, const btTransform & colObjWorldTransform, btCollisionWorld::ConvexResultCallback & resultCallback, float allowedPenetration) Ligne 682 + 0x31 octets C++
openmw.exe!btSingleSweepCallback::process(const btBroadphaseProxy * proxy) Ligne 839 + 0x4a octets C++
openmw.exe!BroadphaseRayTester::Process(const btDbvtNode * leaf) Ligne 223 + 0x19 octets C++
openmw.exe!btDbvt::rayTestInternal<BroadphaseRayTester>(const btDbvtNode * root, const btVector3 & rayFrom, const btVector3 & rayTo, const btVector3 & rayDirectionInverse, unsigned int * signs, float lambda_max, const btVector3 & aabbMin, const btVector3 & aabbMax, BroadphaseRayTester & policy) Ligne 987 C++
openmw.exe!btDbvtBroadphase::rayTest(const btVector3 & rayFrom, const btVector3 & rayTo, btBroadphaseRayCallback & rayCallback, const btVector3 & aabbMin, const btVector3 & aabbMax) Ligne 249 C++
openmw.exe!btCollisionWorld::convexSweepTest(const btConvexShape * castShape, const btTransform & convexFromWorld, const btTransform & convexToWorld, btCollisionWorld::ConvexResultCallback & resultCallback, float allowedCcdPenetration) Ligne 878 + 0x3f octets C++
openmw.exe!btKinematicCharacterController::stepForwardAndStrafe(btCollisionWorld * collisionWorld, const btVector3 & currentPosition, const btVector3 & walkMove) Ligne 361 C++
openmw.exe!btKinematicCharacterController::playerStep(btCollisionWorld * collisionWorld, float dt) Ligne 517 + 0x1b octets C++
openmw.exe!btKinematicCharacterController::updateAction(btCollisionWorld * collisionWorld, float deltaTime) Ligne 109 + 0x1a octets C++
openmw.exe!btDiscreteDynamicsWorld::updateActions(float timeStep) Ligne 437 + 0x31 octets C++
openmw.exe!btDiscreteDynamicsWorld::internalSingleStepSimulation(float timeStep) Ligne 338 C++
openmw.exe!btDiscreteDynamicsWorld::stepSimulation(float timeStep, int maxSubSteps, float fixedTimeStep) Ligne 281 +
Code: Select all
virtual btScalar addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace)
{
//caller already does the filter on the m_closestHitFraction
ERROR HERE:btAssert(convexResult.m_hitFraction <= m_closestHitFraction);
m_closestHitFraction = convexResult.m_hitFraction;
m_hitCollisionObject = convexResult.m_hitCollisionObject;
if (normalInWorldSpace)
{
m_hitNormalWorld = convexResult.m_hitNormalLocal;
} else
{
///need to transform normal into worldspace
m_hitNormalWorld = m_hitCollisionObject->getWorldTransform().getBasis()*convexResult.m_hitNormalLocal;
}
m_hitPointWorld = convexResult.m_hitPointLocal;
return convexResult.m_hitFraction;
}
};Is it something normal? Does anyone have any idea of what could cause this crash?
Thanks!