forked from bartvdbraak/blender
updated testbed demo
This commit is contained in:
parent
6eeaacde0a
commit
697b22cc41
@ -31,7 +31,7 @@ CcdPhysicsController::CcdPhysicsController (const CcdConstructionInfo& ci)
|
|||||||
|
|
||||||
MassProps mp(ci.m_mass, ci.m_localInertiaTensor);
|
MassProps mp(ci.m_mass, ci.m_localInertiaTensor);
|
||||||
|
|
||||||
m_body = new RigidBody(mp,0,0);
|
m_body = new RigidBody(mp,0,0,ci.m_friction,ci.m_restitution);
|
||||||
|
|
||||||
m_broadphaseHandle = ci.m_broadphaseHandle;
|
m_broadphaseHandle = ci.m_broadphaseHandle;
|
||||||
|
|
||||||
@ -44,8 +44,6 @@ CcdPhysicsController::CcdPhysicsController (const CcdConstructionInfo& ci)
|
|||||||
m_body->setMassProps(ci.m_mass, ci.m_localInertiaTensor);
|
m_body->setMassProps(ci.m_mass, ci.m_localInertiaTensor);
|
||||||
m_body->setGravity( ci.m_gravity);
|
m_body->setGravity( ci.m_gravity);
|
||||||
|
|
||||||
m_friction = ci.m_friction;
|
|
||||||
m_restitution = ci.m_restitution;
|
|
||||||
|
|
||||||
m_body->setDamping(ci.m_linearDamping, ci.m_angularDamping);
|
m_body->setDamping(ci.m_linearDamping, ci.m_angularDamping);
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ struct CcdConstructionInfo
|
|||||||
CcdConstructionInfo()
|
CcdConstructionInfo()
|
||||||
: m_gravity(0,0,0),
|
: m_gravity(0,0,0),
|
||||||
m_mass(0.f),
|
m_mass(0.f),
|
||||||
m_friction(0.1f),
|
|
||||||
m_restitution(0.1f),
|
m_restitution(0.1f),
|
||||||
m_linearDamping(0.1f),
|
m_linearDamping(0.1f),
|
||||||
m_angularDamping(0.1f),
|
m_angularDamping(0.1f),
|
||||||
@ -27,9 +26,8 @@ struct CcdConstructionInfo
|
|||||||
SimdVector3 m_localInertiaTensor;
|
SimdVector3 m_localInertiaTensor;
|
||||||
SimdVector3 m_gravity;
|
SimdVector3 m_gravity;
|
||||||
SimdScalar m_mass;
|
SimdScalar m_mass;
|
||||||
SimdScalar m_friction;
|
|
||||||
SimdScalar m_restitution;
|
SimdScalar m_restitution;
|
||||||
|
SimdScalar m_friction;
|
||||||
SimdScalar m_linearDamping;
|
SimdScalar m_linearDamping;
|
||||||
SimdScalar m_angularDamping;
|
SimdScalar m_angularDamping;
|
||||||
void* m_broadphaseHandle;
|
void* m_broadphaseHandle;
|
||||||
@ -54,8 +52,6 @@ class CcdPhysicsController : public PHY_IPhysicsController
|
|||||||
|
|
||||||
int m_collisionDelay;
|
int m_collisionDelay;
|
||||||
|
|
||||||
SimdScalar m_friction;
|
|
||||||
SimdScalar m_restitution;
|
|
||||||
void* m_broadphaseHandle;
|
void* m_broadphaseHandle;
|
||||||
|
|
||||||
CcdPhysicsController (const CcdConstructionInfo& ci);
|
CcdPhysicsController (const CcdConstructionInfo& ci);
|
||||||
|
@ -33,7 +33,7 @@ bool useIslands = true;
|
|||||||
//#include "BroadphaseCollision/QueryBox.h"
|
//#include "BroadphaseCollision/QueryBox.h"
|
||||||
//todo: change this to allow dynamic registration of types!
|
//todo: change this to allow dynamic registration of types!
|
||||||
|
|
||||||
unsigned long gNumIterations = 1;
|
unsigned long gNumIterations = 10;
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
void DrawRasterizerLine(const float* from,const float* to,int color);
|
void DrawRasterizerLine(const float* from,const float* to,int color);
|
||||||
@ -366,6 +366,7 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
|
|||||||
|
|
||||||
//contacts
|
//contacts
|
||||||
|
|
||||||
|
|
||||||
m_dispatcher->SolveConstraints(timeStep, gNumIterations ,numRigidBodies,m_debugDrawer);
|
m_dispatcher->SolveConstraints(timeStep, gNumIterations ,numRigidBodies,m_debugDrawer);
|
||||||
|
|
||||||
for (int g=0;g<numsubstep;g++)
|
for (int g=0;g<numsubstep;g++)
|
||||||
@ -438,7 +439,7 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
|
|||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
SimdVector3 color (1,0,0);
|
SimdVector3 color (1,0,0);
|
||||||
if (0)//m_debugDrawer)
|
if (m_debugDrawer)
|
||||||
{
|
{
|
||||||
//draw aabb
|
//draw aabb
|
||||||
|
|
||||||
@ -540,6 +541,29 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CcdPhysicsEnvironment::setDebugMode(int debugMode)
|
||||||
|
{
|
||||||
|
if (debugMode > 10)
|
||||||
|
{
|
||||||
|
if (m_dispatcher)
|
||||||
|
delete m_dispatcher;
|
||||||
|
|
||||||
|
if (debugMode == 11)
|
||||||
|
{
|
||||||
|
SimpleConstraintSolver* solver= new SimpleConstraintSolver();
|
||||||
|
m_dispatcher = new ToiContactDispatcher(solver);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
OdeConstraintSolver* solver = new OdeConstraintSolver();
|
||||||
|
m_dispatcher = new ToiContactDispatcher(solver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_debugDrawer){
|
||||||
|
m_debugDrawer->SetDebugMode(debugMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CcdPhysicsEnvironment::SyncMotionStates(float timeStep)
|
void CcdPhysicsEnvironment::SyncMotionStates(float timeStep)
|
||||||
{
|
{
|
||||||
std::vector<CcdPhysicsController*>::iterator i;
|
std::vector<CcdPhysicsController*>::iterator i;
|
||||||
|
@ -50,8 +50,11 @@ class CcdPhysicsEnvironment : public PHY_IPhysicsEnvironment
|
|||||||
virtual bool proceedDeltaTime(double curTime,float timeStep);
|
virtual bool proceedDeltaTime(double curTime,float timeStep);
|
||||||
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
|
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
|
||||||
//returns 0.f if no fixed timestep is used
|
//returns 0.f if no fixed timestep is used
|
||||||
|
|
||||||
virtual float getFixedTimeStep(){ return 0.f;};
|
virtual float getFixedTimeStep(){ return 0.f;};
|
||||||
|
|
||||||
|
virtual void setDebugMode(int debugMode);
|
||||||
|
|
||||||
virtual void setGravity(float x,float y,float z);
|
virtual void setGravity(float x,float y,float z);
|
||||||
|
|
||||||
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
|
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
|
||||||
@ -113,6 +116,7 @@ class CcdPhysicsEnvironment : public PHY_IPhysicsEnvironment
|
|||||||
|
|
||||||
bool m_scalingPropagated;
|
bool m_scalingPropagated;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CCDPHYSICSENVIRONMENT
|
#endif //CCDPHYSICSENVIRONMENT
|
||||||
|
Loading…
Reference in New Issue
Block a user