sign-bit went wrong in case of 32-bit broadphase. Thanks DevO for reporting.
This commit is contained in:
@@ -151,9 +151,9 @@ void btAxisSweep3::quantize(BP_FP_INT_TYPE* out, const btPoint3& point, int isMa
|
|||||||
clampedPoint.setMin(m_worldAabbMax);
|
clampedPoint.setMin(m_worldAabbMax);
|
||||||
|
|
||||||
btVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize;
|
btVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize;
|
||||||
out[0] = (BP_FP_INT_TYPE)(((int)v.getX() & BP_HANDLE_MASK) | isMax);
|
out[0] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getX() & BP_HANDLE_MASK) | isMax);
|
||||||
out[1] = (BP_FP_INT_TYPE)(((int)v.getY() & BP_HANDLE_MASK) | isMax);
|
out[1] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getY() & BP_HANDLE_MASK) | isMax);
|
||||||
out[2] = (BP_FP_INT_TYPE)(((int)v.getZ() & BP_HANDLE_MASK) | isMax);
|
out[2] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getZ() & BP_HANDLE_MASK) | isMax);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,13 +24,14 @@
|
|||||||
#include "btOverlappingPairCache.h"
|
#include "btOverlappingPairCache.h"
|
||||||
#include "btBroadphaseProxy.h"
|
#include "btBroadphaseProxy.h"
|
||||||
|
|
||||||
|
|
||||||
//Enable BP_USE_FIXEDPOINT_INT_32 if you need more then 32767 objects
|
//Enable BP_USE_FIXEDPOINT_INT_32 if you need more then 32767 objects
|
||||||
//#define BP_USE_FIXEDPOINT_INT_32 1
|
//#define BP_USE_FIXEDPOINT_INT_32 1
|
||||||
|
|
||||||
#ifdef BP_USE_FIXEDPOINT_INT_32
|
#ifdef BP_USE_FIXEDPOINT_INT_32
|
||||||
#define BP_FP_INT_TYPE unsigned int
|
#define BP_FP_INT_TYPE unsigned int
|
||||||
#define BP_MAX_HANDLES 1500000 //arbitrary maximum number of handles
|
#define BP_MAX_HANDLES 1500000 //arbitrary maximum number of handles
|
||||||
#define BP_HANDLE_SENTINEL 0xffffffff
|
#define BP_HANDLE_SENTINEL 0x7fffffff
|
||||||
#define BP_HANDLE_MASK 0xfffffffe
|
#define BP_HANDLE_MASK 0xfffffffe
|
||||||
#else
|
#else
|
||||||
#define BP_FP_INT_TYPE unsigned short int
|
#define BP_FP_INT_TYPE unsigned short int
|
||||||
|
|||||||
Reference in New Issue
Block a user