Fixes for broadphase/paircache determinism.

Revert definition for ATTRIBUTE_ALIGNED16, and try to force sizeof(btSolverConstraint) by using unions with btScalar, for non-btScalar data types.
Use btAssert and not assert.
Don't access btAlignedObjectArray elements, for zero sets
This commit is contained in:
erwin.coumans
2009-02-10 23:50:21 +00:00
parent be3260280a
commit 7a2a98078a
35 changed files with 323 additions and 205 deletions

View File

@@ -58,7 +58,7 @@ public:
void setRotation(const btVector3& axis, const btScalar& angle)
{
btScalar d = axis.length();
assert(d != btScalar(0.0));
btAssert(d != btScalar(0.0));
btScalar s = btSin(angle * btScalar(0.5)) / d;
setValue(axis.x() * s, axis.y() * s, axis.z() * s,
btCos(angle * btScalar(0.5)));
@@ -177,7 +177,7 @@ public:
* @param s The inverse scale factor */
btQuaternion operator/(const btScalar& s) const
{
assert(s != btScalar(0.0));
btAssert(s != btScalar(0.0));
return *this * (btScalar(1.0) / s);
}
@@ -185,7 +185,7 @@ public:
* @param s The scale factor */
btQuaternion& operator/=(const btScalar& s)
{
assert(s != btScalar(0.0));
btAssert(s != btScalar(0.0));
return *this *= btScalar(1.0) / s;
}
@@ -199,7 +199,7 @@ public:
btScalar angle(const btQuaternion& q) const
{
btScalar s = btSqrt(length2() * q.length2());
assert(s != btScalar(0.0));
btAssert(s != btScalar(0.0));
return btAcos(dot(q) / s);
}
/**@brief Return the angle of rotation represented by this quaternion */

View File

@@ -130,8 +130,11 @@ inline int btGetVersion()
//non-windows systems
#define SIMD_FORCE_INLINE inline
#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))
#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))
///@todo: check out alignment methods for other platforms/compilers
///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))
///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))
#define ATTRIBUTE_ALIGNED16(a) a
#define ATTRIBUTE_ALIGNED128(a) a
#ifndef assert
#include <assert.h>
#endif