Applied a bugfix on constraint solver and removed some frozen code

This commit is contained in:
Irlan
2019-04-18 18:48:10 -03:00
parent 923a069408
commit 2f9abcbe92
8 changed files with 10 additions and 490 deletions

View File

@ -153,9 +153,6 @@ private:
// Update body contacts.
void UpdateBodyContacts();
// Update particle contacts.
void UpdateParticleContacts();
// Update contacts
void UpdateContacts();
@ -183,17 +180,11 @@ private:
// Pool of particles
b3BlockPool m_particleBlocks;
// Pool of particle contacts
b3BlockPool m_particleContactBlocks;
// List of particles
b3List2<b3Particle> m_particleList;
// List of forces
b3List2<b3Force> m_forceList;
// List of particle contacts
b3List2<b3ParticleContact> m_particleContactList;
};
inline void b3Cloth::SetGravity(const b3Vec3& gravity)

View File

@ -28,7 +28,6 @@ class b3Particle;
class b3Body;
class b3BodyContact;
class b3ParticleContact;
struct b3DenseVec3;
@ -76,44 +75,11 @@ struct b3ClothSolverBodyContactPositionConstraint
b3Vec3 rA;
b3Vec3 rB;
b3Vec3 normalA;
b3Vec3 localPointA;
b3Vec3 localPointB;
};
struct b3ClothSolverParticleContactVelocityConstraint
{
u32 indexA;
float32 invMassA;
u32 indexB;
float32 invMassB;
float32 friction;
b3Vec3 point;
b3Vec3 normal;
float32 normalMass;
float32 normalImpulse;
float32 velocityBias;
b3Vec3 tangent1;
b3Vec3 tangent2;
b3Mat22 tangentMass;
b3Vec2 tangentImpulse;
};
struct b3ClothSolverParticleContactPositionConstraint
{
u32 indexA;
float32 invMassA;
float32 radiusA;
u32 indexB;
float32 invMassB;
float32 radiusB;
};
struct b3ClothContactSolverDef
{
b3StackAllocator* allocator;
@ -123,9 +89,6 @@ struct b3ClothContactSolverDef
u32 bodyContactCount;
b3BodyContact** bodyContacts;
u32 particleContactCount;
b3ParticleContact** particleContacts;
};
inline float32 b3MixFriction(float32 u1, float32 u2)
@ -141,19 +104,13 @@ public:
void InitializeBodyContactConstraints();
void InitializeParticleContactConstraints();
void WarmStart();
void SolveBodyContactVelocityConstraints();
void SolveParticleContactVelocityConstraints();
void StoreImpulses();
bool SolveBodyContactPositionConstraints();
bool SolveParticleContactPositionConstraints();
protected:
b3StackAllocator* m_allocator;
@ -164,11 +121,6 @@ protected:
b3BodyContact** m_bodyContacts;
b3ClothSolverBodyContactVelocityConstraint* m_bodyVelocityConstraints;
b3ClothSolverBodyContactPositionConstraint* m_bodyPositionConstraints;
u32 m_particleContactCount;
b3ParticleContact** m_particleContacts;
b3ClothSolverParticleContactVelocityConstraint* m_particleVelocityConstraints;
b3ClothSolverParticleContactPositionConstraint* m_particlePositionConstraints;
};
#endif

View File

@ -41,7 +41,6 @@ struct b3ClothSolverDef
u32 particleCapacity;
u32 forceCapacity;
u32 bodyContactCapacity;
u32 particleContactCapacity;
};
struct b3ClothSolverData

View File

@ -103,36 +103,6 @@ struct b3BodyContactWorldPoint
float32 separation;
};
// A contact between two particles
class b3ParticleContact
{
public:
b3ParticleContact() { }
~b3ParticleContact() { }
b3Particle* p1;
b3Particle* p2;
// Contact constraint
float32 normalImpulse;
// Friction constraint
b3Vec3 t1, t2;
b3Vec2 tangentImpulse;
b3ParticleContact* m_prev;
b3ParticleContact* m_next;
};
struct b3ParticleContactWorldPoint
{
void Initialize(const b3ParticleContact* c);
b3Vec3 point;
b3Vec3 normal;
float32 separation;
};
// A cloth particle.
class b3Particle
{