aboutsummaryrefslogtreecommitdiff
path: root/Box2D/Rope/b2Rope.h
diff options
context:
space:
mode:
authorSamu Laaksonen <laaksonen.sj@gmail.com>2012-10-18 23:58:18 +0300
committerSamu Laaksonen <laaksonen.sj@gmail.com>2012-10-18 23:58:18 +0300
commita0f7ab0f77fa81b77d03de751e4a5f4e07c49d25 (patch)
tree92c033e000f6796f3e679ee8ba58bf83844b84c5 /Box2D/Rope/b2Rope.h
parent2049e08432907f645f5a3786ea4f50a6456b77c4 (diff)
downloadprism-a0f7ab0f77fa81b77d03de751e4a5f4e07c49d25.tar.gz
prism-a0f7ab0f77fa81b77d03de751e4a5f4e07c49d25.zip
Box2d precommit
Added - box2d source codes to be added in project when there is no longer cba - some base ideas to display classes Improved - level loading : layer with property "solid" is now loaded tile by tile, this allows adding static rigid bodies to these items for collision detection
Diffstat (limited to 'Box2D/Rope/b2Rope.h')
-rw-r--r--Box2D/Rope/b2Rope.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/Box2D/Rope/b2Rope.h b/Box2D/Rope/b2Rope.h
new file mode 100644
index 0000000..246cf92
--- /dev/null
+++ b/Box2D/Rope/b2Rope.h
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2011 Erin Catto http://www.box2d.org
+*
+* This software is provided 'as-is', without any express or implied
+* warranty. In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 1. The origin of this software must not be misrepresented; you must not
+* claim that you wrote the original software. If you use this software
+* in a product, an acknowledgment in the product documentation would be
+* appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+* misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef B2_ROPE_H
+#define B2_ROPE_H
+
+#include <Box2D/Common/b2Math.h>
+
+class b2Draw;
+
+///
+struct b2RopeDef
+{
+ b2RopeDef()
+ {
+ vertices = NULL;
+ count = 0;
+ masses = NULL;
+ gravity.SetZero();
+ damping = 0.1f;
+ k2 = 0.9f;
+ k3 = 0.1f;
+ }
+
+ ///
+ b2Vec2* vertices;
+
+ ///
+ int32 count;
+
+ ///
+ float32* masses;
+
+ ///
+ b2Vec2 gravity;
+
+ ///
+ float32 damping;
+
+ /// Stretching stiffness
+ float32 k2;
+
+ /// Bending stiffness. Values above 0.5 can make the simulation blow up.
+ float32 k3;
+};
+
+///
+class b2Rope
+{
+public:
+ b2Rope();
+ ~b2Rope();
+
+ ///
+ void Initialize(const b2RopeDef* def);
+
+ ///
+ void Step(float32 timeStep, int32 iterations);
+
+ ///
+ int32 GetVertexCount() const
+ {
+ return m_count;
+ }
+
+ ///
+ const b2Vec2* GetVertices() const
+ {
+ return m_ps;
+ }
+
+ ///
+ void Draw(b2Draw* draw) const;
+
+ ///
+ void SetAngle(float32 angle);
+
+private:
+
+ void SolveC2();
+ void SolveC3();
+
+ int32 m_count;
+ b2Vec2* m_ps;
+ b2Vec2* m_p0s;
+ b2Vec2* m_vs;
+
+ float32* m_ims;
+
+ float32* m_Ls;
+ float32* m_as;
+
+ b2Vec2 m_gravity;
+ float32 m_damping;
+
+ float32 m_k2;
+ float32 m_k3;
+};
+
+#endif