diff options
author | chai <chaifix@163.com> | 2021-12-02 11:41:42 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-12-02 11:41:42 +0800 |
commit | 7a798253441a8bd499d36bd8153b92ab08de8a9f (patch) | |
tree | 32e4ee995534a4a8cd7c2e0b530ff02c45217e8f /Client/Source/Phy2DLite/Arbiter.cpp | |
parent | bcc11176480f403ab294de24d61bab993ce2fdfd (diff) |
*fixed
Diffstat (limited to 'Client/Source/Phy2DLite/Arbiter.cpp')
-rw-r--r-- | Client/Source/Phy2DLite/Arbiter.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/Client/Source/Phy2DLite/Arbiter.cpp b/Client/Source/Phy2DLite/Arbiter.cpp index 4163154..567e6f7 100644 --- a/Client/Source/Phy2DLite/Arbiter.cpp +++ b/Client/Source/Phy2DLite/Arbiter.cpp @@ -2,6 +2,7 @@ #include "World.h"
#include "Body.h"
#include "Joint.h"
+#include "Constants.h"
using namespace Phy2D;
@@ -54,9 +55,9 @@ void Arbiter::Update(Contact* newContacts, int numNewContacts) } else { - c->Pn = 0.0f; - c->Pt = 0.0f; - c->Pnb = 0.0f; + c->Pn = _0; + c->Pt = _0; + c->Pnb = _0; } } else @@ -74,8 +75,8 @@ void Arbiter::Update(Contact* newContacts, int numNewContacts) void Arbiter::PreStep(number inv_dt) { - const number k_allowedPenetration = 0.01f; - number k_biasFactor = World::positionCorrection ? 0.2f : 0.0f; + const number k_allowedPenetration = _0_01; + number k_biasFactor = World::positionCorrection ? _0_2 : _0; for (int i = 0; i < numContacts; ++i) { @@ -89,16 +90,16 @@ void Arbiter::PreStep(number inv_dt) number rn2 = Dot(r2, c->normal); number kNormal = body1->invMass + body2->invMass; kNormal += body1->invI * (Dot(r1, r1) - rn1 * rn1) + body2->invI * (Dot(r2, r2) - rn2 * rn2); - c->massNormal = (number) 1.0f / kNormal; + c->massNormal = (number)_1 / kNormal; - Vec2 tangent = Cross(c->normal, 1.0f); + Vec2 tangent = Cross(c->normal, _1); number rt1 = Dot(r1, tangent); number rt2 = Dot(r2, tangent); number kTangent = body1->invMass + body2->invMass; kTangent += body1->invI * (Dot(r1, r1) - rt1 * rt1) + body2->invI * (Dot(r2, r2) - rt2 * rt2); - c->massTangent = (number) 1.0f / kTangent; + c->massTangent = (number)_1 / kTangent; - c->bias = -k_biasFactor * inv_dt * Min(0.0f, c->separation + k_allowedPenetration); + c->bias = -k_biasFactor * inv_dt * Min(_0, c->separation + k_allowedPenetration); if (World::accumulateImpulses) { @@ -137,12 +138,12 @@ void Arbiter::ApplyImpulse() { // Clamp the accumulated impulse number Pn0 = c->Pn; - c->Pn = Max(Pn0 + dPn, 0.0f); + c->Pn = Max(Pn0 + dPn, _0); dPn = c->Pn - Pn0; } else { - dPn = Max(dPn, 0.0f); + dPn = Max(dPn, _0); } // Apply contact impulse @@ -157,7 +158,7 @@ void Arbiter::ApplyImpulse() // Relative velocity at contact dv = b2->velocity + Cross(b2->angularVelocity, c->r2) - b1->velocity - Cross(b1->angularVelocity, c->r1); - Vec2 tangent = Cross(c->normal, 1.0f); + Vec2 tangent = Cross(c->normal, _1); number vt = Dot(dv, tangent); number dPt = c->massTangent * (-vt); |