make debugDrawWorld virtual for btSoftRigidDynamicsWorld
Move btSoftBodyWorldInfo to public, instead of nested, so it can be easier forward declared. See http://code.google.com/p/bullet/issues/detail?id=78 Add get methods for damping/thresholds, see http://code.google.com/p/bullet/issues/detail?id=77
This commit is contained in:
@@ -49,7 +49,7 @@ public:
|
|||||||
|
|
||||||
btAlignedObjectArray<btSoftRididCollisionAlgorithm*> m_SoftRigidCollisionAlgorithms;
|
btAlignedObjectArray<btSoftRididCollisionAlgorithm*> m_SoftRigidCollisionAlgorithms;
|
||||||
|
|
||||||
btSoftBody::btSoftBodyWorldInfo m_softBodyWorldInfo;
|
btSoftBodyWorldInfo m_softBodyWorldInfo;
|
||||||
|
|
||||||
|
|
||||||
bool m_autocam;
|
bool m_autocam;
|
||||||
|
|||||||
@@ -187,6 +187,26 @@ public:
|
|||||||
|
|
||||||
void setDamping(btScalar lin_damping, btScalar ang_damping);
|
void setDamping(btScalar lin_damping, btScalar ang_damping);
|
||||||
|
|
||||||
|
btScalar getLinearDamping() const
|
||||||
|
{
|
||||||
|
return m_linearDamping;
|
||||||
|
}
|
||||||
|
|
||||||
|
btScalar getAngularDamping() const
|
||||||
|
{
|
||||||
|
return m_angularDamping;
|
||||||
|
}
|
||||||
|
|
||||||
|
btScalar getLinearSleepingThreshold() const
|
||||||
|
{
|
||||||
|
return m_linearSleepingThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
btScalar getAngularSleepingThreshold() const
|
||||||
|
{
|
||||||
|
return m_angularSleepingThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
void applyDamping(btScalar timeStep);
|
void applyDamping(btScalar timeStep);
|
||||||
|
|
||||||
SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const {
|
SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ subject to the following restrictions:
|
|||||||
#include "btSoftBodyInternals.h"
|
#include "btSoftBodyInternals.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody::btSoftBody(btSoftBody::btSoftBodyWorldInfo* worldInfo,int node_count, const btVector3* x, const btScalar* m)
|
btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo,int node_count, const btVector3* x, const btScalar* m)
|
||||||
:m_worldInfo(worldInfo)
|
:m_worldInfo(worldInfo)
|
||||||
{
|
{
|
||||||
/* Init */
|
/* Init */
|
||||||
@@ -1911,7 +1911,7 @@ for(i=0;i<m_clusters.size();++i)
|
|||||||
if(n)
|
if(n)
|
||||||
{
|
{
|
||||||
/* Frame */
|
/* Frame */
|
||||||
const btScalar eps=0.0001;
|
const btScalar eps=btScalar(0.0001);
|
||||||
btMatrix3x3 m,r,s;
|
btMatrix3x3 m,r,s;
|
||||||
m[0]=m[1]=m[2]=btVector3(0,0,0);
|
m[0]=m[1]=m[2]=btVector3(0,0,0);
|
||||||
m[0][0]=eps*1;
|
m[0][0]=eps*1;
|
||||||
|
|||||||
@@ -31,6 +31,20 @@ subject to the following restrictions:
|
|||||||
class btBroadphaseInterface;
|
class btBroadphaseInterface;
|
||||||
class btCollisionDispatcher;
|
class btCollisionDispatcher;
|
||||||
|
|
||||||
|
/* btSoftBodyWorldInfo */
|
||||||
|
struct btSoftBodyWorldInfo
|
||||||
|
{
|
||||||
|
btScalar air_density;
|
||||||
|
btScalar water_density;
|
||||||
|
btScalar water_offset;
|
||||||
|
btVector3 water_normal;
|
||||||
|
btBroadphaseInterface* m_broadphase;
|
||||||
|
btCollisionDispatcher* m_dispatcher;
|
||||||
|
btVector3 m_gravity;
|
||||||
|
btSparseSdf<3> m_sparsesdf;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/// btSoftBody is work-in-progress
|
/// btSoftBody is work-in-progress
|
||||||
class btSoftBody : public btCollisionObject
|
class btSoftBody : public btCollisionObject
|
||||||
{
|
{
|
||||||
@@ -135,18 +149,6 @@ public:
|
|||||||
|
|
||||||
typedef btAlignedObjectArray<btScalar> tScalarArray;
|
typedef btAlignedObjectArray<btScalar> tScalarArray;
|
||||||
typedef btAlignedObjectArray<btVector3> tVector3Array;
|
typedef btAlignedObjectArray<btVector3> tVector3Array;
|
||||||
/* btSoftBodyWorldInfo */
|
|
||||||
struct btSoftBodyWorldInfo
|
|
||||||
{
|
|
||||||
btScalar air_density;
|
|
||||||
btScalar water_density;
|
|
||||||
btScalar water_offset;
|
|
||||||
btVector3 water_normal;
|
|
||||||
btBroadphaseInterface* m_broadphase;
|
|
||||||
btCollisionDispatcher* m_dispatcher;
|
|
||||||
btVector3 m_gravity;
|
|
||||||
btSparseSdf<3> m_sparsesdf;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* sCti is Softbody contact info */
|
/* sCti is Softbody contact info */
|
||||||
struct sCti
|
struct sCti
|
||||||
|
|||||||
@@ -444,7 +444,7 @@ void btSoftBodyHelpers::DrawFrame( btSoftBody* psb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody* btSoftBodyHelpers::CreateRope( btSoftBody::btSoftBodyWorldInfo& worldInfo, const btVector3& from,
|
btSoftBody* btSoftBodyHelpers::CreateRope( btSoftBodyWorldInfo& worldInfo, const btVector3& from,
|
||||||
const btVector3& to,
|
const btVector3& to,
|
||||||
int res,
|
int res,
|
||||||
int fixeds)
|
int fixeds)
|
||||||
@@ -476,7 +476,7 @@ btSoftBody* btSoftBodyHelpers::CreateRope( btSoftBody::btSoftBodyWorldInfo& wor
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody* btSoftBodyHelpers::CreatePatch(btSoftBody::btSoftBodyWorldInfo& worldInfo,const btVector3& corner00,
|
btSoftBody* btSoftBodyHelpers::CreatePatch(btSoftBodyWorldInfo& worldInfo,const btVector3& corner00,
|
||||||
const btVector3& corner10,
|
const btVector3& corner10,
|
||||||
const btVector3& corner01,
|
const btVector3& corner01,
|
||||||
const btVector3& corner11,
|
const btVector3& corner11,
|
||||||
@@ -553,7 +553,7 @@ btSoftBody* btSoftBodyHelpers::CreatePatch(btSoftBody::btSoftBodyWorldInfo& wor
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBody::btSoftBodyWorldInfo& worldInfo,const btVector3& center,
|
btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,const btVector3& center,
|
||||||
const btVector3& radius,
|
const btVector3& radius,
|
||||||
int res)
|
int res)
|
||||||
{
|
{
|
||||||
@@ -585,7 +585,7 @@ btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBody::btSoftBodyWorldInfo&
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBody::btSoftBodyWorldInfo& worldInfo,const btScalar* vertices,
|
btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBodyWorldInfo& worldInfo,const btScalar* vertices,
|
||||||
const int* triangles,
|
const int* triangles,
|
||||||
int ntriangles)
|
int ntriangles)
|
||||||
{
|
{
|
||||||
@@ -627,7 +627,7 @@ btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBody::btSoftBodyWorldInf
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBody::btSoftBodyWorldInfo& worldInfo, const btVector3* vertices,
|
btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBodyWorldInfo& worldInfo, const btVector3* vertices,
|
||||||
int nvertices)
|
int nvertices)
|
||||||
{
|
{
|
||||||
HullDesc hdsc(QF_TRIANGLES,nvertices,vertices);
|
HullDesc hdsc(QF_TRIANGLES,nvertices,vertices);
|
||||||
|
|||||||
@@ -73,13 +73,13 @@ struct btSoftBodyHelpers
|
|||||||
static void DrawFrame( btSoftBody* psb,
|
static void DrawFrame( btSoftBody* psb,
|
||||||
btIDebugDraw* idraw);
|
btIDebugDraw* idraw);
|
||||||
/* Create a rope */
|
/* Create a rope */
|
||||||
static btSoftBody* CreateRope( btSoftBody::btSoftBodyWorldInfo& worldInfo,
|
static btSoftBody* CreateRope( btSoftBodyWorldInfo& worldInfo,
|
||||||
const btVector3& from,
|
const btVector3& from,
|
||||||
const btVector3& to,
|
const btVector3& to,
|
||||||
int res,
|
int res,
|
||||||
int fixeds);
|
int fixeds);
|
||||||
/* Create a patch */
|
/* Create a patch */
|
||||||
static btSoftBody* CreatePatch(btSoftBody::btSoftBodyWorldInfo& worldInfo,
|
static btSoftBody* CreatePatch(btSoftBodyWorldInfo& worldInfo,
|
||||||
const btVector3& corner00,
|
const btVector3& corner00,
|
||||||
const btVector3& corner10,
|
const btVector3& corner10,
|
||||||
const btVector3& corner01,
|
const btVector3& corner01,
|
||||||
@@ -89,17 +89,17 @@ struct btSoftBodyHelpers
|
|||||||
int fixeds,
|
int fixeds,
|
||||||
bool gendiags);
|
bool gendiags);
|
||||||
/* Create an ellipsoid */
|
/* Create an ellipsoid */
|
||||||
static btSoftBody* CreateEllipsoid(btSoftBody::btSoftBodyWorldInfo& worldInfo,
|
static btSoftBody* CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,
|
||||||
const btVector3& center,
|
const btVector3& center,
|
||||||
const btVector3& radius,
|
const btVector3& radius,
|
||||||
int res);
|
int res);
|
||||||
/* Create from trimesh */
|
/* Create from trimesh */
|
||||||
static btSoftBody* CreateFromTriMesh( btSoftBody::btSoftBodyWorldInfo& worldInfo,
|
static btSoftBody* CreateFromTriMesh( btSoftBodyWorldInfo& worldInfo,
|
||||||
const btScalar* vertices,
|
const btScalar* vertices,
|
||||||
const int* triangles,
|
const int* triangles,
|
||||||
int ntriangles);
|
int ntriangles);
|
||||||
/* Create from convex-hull */
|
/* Create from convex-hull */
|
||||||
static btSoftBody* CreateFromConvexHull( btSoftBody::btSoftBodyWorldInfo& worldInfo,
|
static btSoftBody* CreateFromConvexHull( btSoftBodyWorldInfo& worldInfo,
|
||||||
const btVector3* vertices,
|
const btVector3* vertices,
|
||||||
int nvertices);
|
int nvertices);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -506,7 +506,7 @@ static inline btScalar VolumeOf( const btVector3& x0,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
static void EvaluateMedium( const btSoftBody::btSoftBodyWorldInfo* wfi,
|
static void EvaluateMedium( const btSoftBodyWorldInfo* wfi,
|
||||||
const btVector3& x,
|
const btVector3& x,
|
||||||
btSoftBody::sMedium& medium)
|
btSoftBody::sMedium& medium)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ protected:
|
|||||||
|
|
||||||
void solveSoftBodiesConstraints();
|
void solveSoftBodiesConstraints();
|
||||||
|
|
||||||
virtual void debugDrawWorld();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -48,6 +48,7 @@ public:
|
|||||||
|
|
||||||
virtual ~btSoftRigidDynamicsWorld();
|
virtual ~btSoftRigidDynamicsWorld();
|
||||||
|
|
||||||
|
virtual void debugDrawWorld();
|
||||||
|
|
||||||
void addSoftBody(btSoftBody* body);
|
void addSoftBody(btSoftBody* body);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user