merged most of the changes from the branch into trunk, except for COLLADA, libxml and glut glitches.

Still need to verify to make sure no unwanted renaming is introduced.
This commit is contained in:
ejcoumans
2006-09-27 20:43:51 +00:00
parent d1e9a885f3
commit eb23bb5c0c
263 changed files with 7528 additions and 6714 deletions

View File

@@ -14,22 +14,22 @@ subject to the following restrictions:
*/
#include "btTriangleMeshShape.h"
#include "LinearMath/SimdVector3.h"
#include "LinearMath/SimdQuaternion.h"
#include "LinearMath/btVector3.h"
#include "LinearMath/btQuaternion.h"
#include "btStridingMeshInterface.h"
#include "LinearMath/GenAabbUtil2.h"
#include "LinearMath/btAabbUtil2.h"
#include "BulletCollision/CollisionShapes/btCollisionMargin.h"
#include "stdio.h"
TriangleMeshShape::TriangleMeshShape(StridingMeshInterface* meshInterface)
btTriangleMeshShape::btTriangleMeshShape(btStridingMeshInterface* meshInterface)
: m_meshInterface(meshInterface)
{
RecalcLocalAabb();
}
TriangleMeshShape::~TriangleMeshShape()
btTriangleMeshShape::~btTriangleMeshShape()
{
}
@@ -37,20 +37,20 @@ TriangleMeshShape::~TriangleMeshShape()
void TriangleMeshShape::GetAabb(const SimdTransform& trans,SimdVector3& aabbMin,SimdVector3& aabbMax) const
void btTriangleMeshShape::GetAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const
{
SimdVector3 localHalfExtents = 0.5f*(m_localAabbMax-m_localAabbMin);
SimdVector3 localCenter = 0.5f*(m_localAabbMax+m_localAabbMin);
btVector3 localHalfExtents = 0.5f*(m_localAabbMax-m_localAabbMin);
btVector3 localCenter = 0.5f*(m_localAabbMax+m_localAabbMin);
SimdMatrix3x3 abs_b = trans.getBasis().absolute();
btMatrix3x3 abs_b = trans.getBasis().absolute();
SimdPoint3 center = trans(localCenter);
btPoint3 center = trans(localCenter);
SimdVector3 extent = SimdVector3(abs_b[0].dot(localHalfExtents),
btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),
abs_b[1].dot(localHalfExtents),
abs_b[2].dot(localHalfExtents));
extent += SimdVector3(GetMargin(),GetMargin(),GetMargin());
extent += btVector3(GetMargin(),GetMargin(),GetMargin());
aabbMin = center - extent;
aabbMax = center + extent;
@@ -58,13 +58,13 @@ void TriangleMeshShape::GetAabb(const SimdTransform& trans,SimdVector3& aabbMin,
}
void TriangleMeshShape::RecalcLocalAabb()
void btTriangleMeshShape::RecalcLocalAabb()
{
for (int i=0;i<3;i++)
{
SimdVector3 vec(0.f,0.f,0.f);
btVector3 vec(0.f,0.f,0.f);
vec[i] = 1.f;
SimdVector3 tmp = LocalGetSupportingVertex(vec);
btVector3 tmp = LocalGetSupportingVertex(vec);
m_localAabbMax[i] = tmp[i]+m_collisionMargin;
vec[i] = -1.f;
tmp = LocalGetSupportingVertex(vec);
@@ -74,28 +74,28 @@ void TriangleMeshShape::RecalcLocalAabb()
class SupportVertexCallback : public TriangleCallback
class SupportVertexCallback : public btTriangleCallback
{
SimdVector3 m_supportVertexLocal;
btVector3 m_supportVertexLocal;
public:
SimdTransform m_worldTrans;
SimdScalar m_maxDot;
SimdVector3 m_supportVecLocal;
btTransform m_worldTrans;
btScalar m_maxDot;
btVector3 m_supportVecLocal;
SupportVertexCallback(const SimdVector3& supportVecWorld,const SimdTransform& trans)
SupportVertexCallback(const btVector3& supportVecWorld,const btTransform& trans)
: m_supportVertexLocal(0.f,0.f,0.f), m_worldTrans(trans) ,m_maxDot(-1e30f)
{
m_supportVecLocal = supportVecWorld * m_worldTrans.getBasis();
}
virtual void ProcessTriangle( SimdVector3* triangle,int partId, int triangleIndex)
virtual void ProcessTriangle( btVector3* triangle,int partId, int triangleIndex)
{
for (int i=0;i<3;i++)
{
SimdScalar dot = m_supportVecLocal.dot(triangle[i]);
btScalar dot = m_supportVecLocal.dot(triangle[i]);
if (dot > m_maxDot)
{
m_maxDot = dot;
@@ -104,12 +104,12 @@ public:
}
}
SimdVector3 GetSupportVertexWorldSpace()
btVector3 GetSupportVertexWorldSpace()
{
return m_worldTrans(m_supportVertexLocal);
}
SimdVector3 GetSupportVertexLocal()
btVector3 GetSupportVertexLocal()
{
return m_supportVertexLocal;
}
@@ -117,13 +117,13 @@ public:
};
void TriangleMeshShape::setLocalScaling(const SimdVector3& scaling)
void btTriangleMeshShape::setLocalScaling(const btVector3& scaling)
{
m_meshInterface->setScaling(scaling);
RecalcLocalAabb();
}
const SimdVector3& TriangleMeshShape::getLocalScaling() const
const btVector3& btTriangleMeshShape::getLocalScaling() const
{
return m_meshInterface->getScaling();
}
@@ -136,23 +136,23 @@ const SimdVector3& TriangleMeshShape::getLocalScaling() const
//#define DEBUG_TRIANGLE_MESH
void TriangleMeshShape::ProcessAllTriangles(TriangleCallback* callback,const SimdVector3& aabbMin,const SimdVector3& aabbMax) const
void btTriangleMeshShape::ProcessAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const
{
struct FilteredCallback : public InternalTriangleIndexCallback
struct FilteredCallback : public btInternalTriangleIndexCallback
{
TriangleCallback* m_callback;
SimdVector3 m_aabbMin;
SimdVector3 m_aabbMax;
btTriangleCallback* m_callback;
btVector3 m_aabbMin;
btVector3 m_aabbMax;
FilteredCallback(TriangleCallback* callback,const SimdVector3& aabbMin,const SimdVector3& aabbMax)
FilteredCallback(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax)
:m_callback(callback),
m_aabbMin(aabbMin),
m_aabbMax(aabbMax)
{
}
virtual void InternalProcessTriangleIndex(SimdVector3* triangle,int partId,int triangleIndex)
virtual void InternalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex)
{
if (TestTriangleAgainstAabb2(&triangle[0],m_aabbMin,m_aabbMax))
{
@@ -174,7 +174,7 @@ void TriangleMeshShape::ProcessAllTriangles(TriangleCallback* callback,const Sim
void TriangleMeshShape::CalculateLocalInertia(SimdScalar mass,SimdVector3& inertia)
void btTriangleMeshShape::CalculateLocalInertia(btScalar mass,btVector3& inertia)
{
//moving concave objects not supported
assert(0);
@@ -182,16 +182,16 @@ void TriangleMeshShape::CalculateLocalInertia(SimdScalar mass,SimdVector3& inert
}
SimdVector3 TriangleMeshShape::LocalGetSupportingVertex(const SimdVector3& vec) const
btVector3 btTriangleMeshShape::LocalGetSupportingVertex(const btVector3& vec) const
{
SimdVector3 supportVertex;
btVector3 supportVertex;
SimdTransform ident;
btTransform ident;
ident.setIdentity();
SupportVertexCallback supportCallback(vec,ident);
SimdVector3 aabbMax(1e30f,1e30f,1e30f);
btVector3 aabbMax(1e30f,1e30f,1e30f);
ProcessAllTriangles(&supportCallback,-aabbMax,aabbMax);