aboutsummaryrefslogtreecommitdiff
path: root/Client/Source/Phy2D/Dynamic/Joint.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-30 22:25:37 +0800
committerchai <chaifix@163.com>2021-11-30 22:25:37 +0800
commit9e0e01b7f4375063f06e494113187d48614628e0 (patch)
tree21a4901612ad92c121f4c887a33b1bbbe87c6b00 /Client/Source/Phy2D/Dynamic/Joint.h
+init
Diffstat (limited to 'Client/Source/Phy2D/Dynamic/Joint.h')
-rw-r--r--Client/Source/Phy2D/Dynamic/Joint.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/Client/Source/Phy2D/Dynamic/Joint.h b/Client/Source/Phy2D/Dynamic/Joint.h
new file mode 100644
index 0000000..34d8d8d
--- /dev/null
+++ b/Client/Source/Phy2D/Dynamic/Joint.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "../Common/Math.h"
+
+namespace Phy2D
+{
+
+ struct Body;
+
+ struct Joint
+ {
+ Joint() :
+ body1(0), body2(0),
+ P(0.0f, 0.0f),
+ biasFactor(0.2f), softness(0.0f)
+ {}
+
+ void Set(Body* body1, Body* body2, const Vec2& anchor);
+
+ void PreStep(number inv_dt);
+ void ApplyImpulse();
+
+ Mat22 M;
+ Vec2 localAnchor1, localAnchor2;
+ Vec2 r1, r2;
+ Vec2 bias;
+ Vec2 P; // accumulated impulse
+ Body* body1;
+ Body* body2;
+ number biasFactor;
+ number softness;
+ };
+
+}