store tension action force inside spring, make spring output force and derivative for abstraction, cleanup
This commit is contained in:
@ -108,6 +108,27 @@ public:
|
||||
m_cloth.Step(dt);
|
||||
m_cloth.Apply();
|
||||
|
||||
b3StackArray<b3Vec3, 256> tension;
|
||||
tension.Resize(m_cloth.GetParticleCount());
|
||||
for (u32 i = 0; i < tension.Count(); ++i)
|
||||
{
|
||||
tension[i].SetZero();
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < m_cloth.GetSpringCount(); ++i)
|
||||
{
|
||||
b3Spring* s = m_cloth.GetSpring(i);
|
||||
|
||||
b3Particle* p1 = s->p1;
|
||||
b3Particle* p2 = s->p2;
|
||||
|
||||
u32 i1 = m_cloth.GetParticleIndex(p1);
|
||||
u32 i2 = m_cloth.GetParticleIndex(p2);
|
||||
|
||||
tension[i1] += s->tension;
|
||||
tension[i2] -= s->tension;
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < m_gridClothMesh.triangleCount; ++i)
|
||||
{
|
||||
b3ClothMeshTriangle* t = m_gridClothMesh.triangles + i;
|
||||
@ -124,13 +145,13 @@ public:
|
||||
b3Draw_draw->DrawSegment(v2, v3, b3Color_black);
|
||||
b3Draw_draw->DrawSegment(v3, v1, b3Color_black);
|
||||
|
||||
b3Vec3 f1 = p1->tension;
|
||||
b3Vec3 f1 = tension[t->v1];
|
||||
float32 L1 = b3Length(f1);
|
||||
|
||||
b3Vec3 f2 = p2->tension;
|
||||
b3Vec3 f2 = tension[t->v2];
|
||||
float32 L2 = b3Length(f2);
|
||||
|
||||
b3Vec3 f3 = p3->tension;
|
||||
b3Vec3 f3 = tension[t->v3];
|
||||
float32 L3 = b3Length(f3);
|
||||
|
||||
float32 L = (L1 + L2 + L3) / 3.0f;
|
||||
|
Reference in New Issue
Block a user