cosmetix
[k8-jellyphysics.git] / src / jelly / SpringBody.h
blob59ea6661f6df5e90a3fc5508113c4b433ebd25d7
1 #ifndef _SPRING_BODY_H
2 #define _SPRING_BODY_H
4 #include "Body.h"
5 #include "InternalSpring.h"
8 namespace JellyPhysics {
10 class SpringBody : public Body {
11 public:
12 SpringBody (
13 World *w, const ClosedShape &shape, float massPerPoint,
14 float edgeSpringK, float edgeSpringDamp,
15 const Vector2 &pos, float angleInRadians,
16 const Vector2 &scale, bool kinematic);
18 SpringBody (
19 World *w, const ClosedShape &shape, float massPerPoint,
20 float shapeSpringK, float shapeSpringDamp,
21 float edgeSpringK, float edgeSpringDamp,
22 const Vector2 &pos, float angleinRadians,
23 const Vector2 &scale, bool kinematic);
25 void addInternalSpring (int pointA, int pointB, float springK, float damping);
27 void clearAllSprings ();
29 void _buildDefaultSprings ();
31 void setShapeMatching (bool onoff) { mShapeMatchingOn = onoff; }
32 void setShapeMatchingConstants (float springK, float damping) { mShapeSpringK = springK; mShapeSpringDamp = damping; }
34 void setEdgeSpringConstants (float edgeSpringK, float edgeSpringDamp);
35 void setSpringConstants (int springID, float springK, float springDamp);
37 float getSpringK (int springID) const;
38 float getSpringDamping (int springID) const;
40 void accumulateInternalForces ();
42 protected:
43 typedef std::vector<InternalSpring> SpringList;
45 SpringList mSprings;
46 bool mShapeMatchingOn;
47 float mEdgeSpringK;
48 float mEdgeSpringDamp;
49 float mShapeSpringK;
50 float mShapeSpringDamp;
56 #endif