diff options
Diffstat (limited to 'Client/Source/Phy2D/Dynamic/Arbiter.h')
-rw-r--r-- | Client/Source/Phy2D/Dynamic/Arbiter.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/Client/Source/Phy2D/Dynamic/Arbiter.h b/Client/Source/Phy2D/Dynamic/Arbiter.h deleted file mode 100644 index 64bed72..0000000 --- a/Client/Source/Phy2D/Dynamic/Arbiter.h +++ /dev/null @@ -1,91 +0,0 @@ -#pragma once
- -#include "../Common/Math.h" - -namespace Phy2D -{ - - struct Body; - - union FeaturePair - { - struct Edges - { - char inEdge1; - char outEdge1; - char inEdge2; - char outEdge2; - } e; - int value; - }; - - struct Contact - { - Contact() : Pn(0.0f), Pt(0.0f), Pnb(0.0f) {} - - Vec2 position; - Vec2 normal; - Vec2 r1, r2; - number separation; - number Pn; // accumulated normal impulse - number Pt; // accumulated tangent impulse - number Pnb; // accumulated normal impulse for position bias - number massNormal, massTangent; - number bias; - FeaturePair feature; - }; - - struct ArbiterKey - { - ArbiterKey(Body* b1, Body* b2) - { - if (b1 < b2) - { - body1 = b1; body2 = b2; - } - else - { - body1 = b2; body2 = b1; - } - } - - Body* body1; - Body* body2; - }; - - struct Arbiter - { - enum { MAX_POINTS = 2 }; - - Arbiter(Body* b1, Body* b2); - - void Update(Contact* contacts, int numContacts); - - void PreStep(number inv_dt); - void ApplyImpulse(); - - Contact contacts[MAX_POINTS]; - int numContacts; - - Body* body1; - Body* body2; - - // Combined friction - number friction; - }; - - // This is used by std::set - inline bool operator < (const ArbiterKey& a1, const ArbiterKey& a2) - { - if (a1.body1 < a2.body1) - return true; - - if (a1.body1 == a2.body1 && a1.body2 < a2.body2) - return true; - - return false; - } - - int Collide(Contact* contacts, Body* body1, Body* body2); - -}
\ No newline at end of file |