cloth2
annotate src/cloth.h @ 1:dc15b741486c
exploding cloth
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 11 Jan 2016 20:24:13 +0200 |
parents | ef0c22554406 |
children |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef CLOTH_H_ |
nuclear@0 | 2 #define CLOTH_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include <vector> |
nuclear@0 | 5 #include <gmath/gmath.h> |
nuclear@0 | 6 #include "object.h" |
nuclear@0 | 7 |
nuclear@0 | 8 using namespace gph; |
nuclear@0 | 9 |
nuclear@0 | 10 struct ClothMass { |
nuclear@0 | 11 Vector3 pos, vel; |
nuclear@0 | 12 bool fixed; |
nuclear@0 | 13 }; |
nuclear@0 | 14 |
nuclear@0 | 15 class Cloth { |
nuclear@0 | 16 private: |
nuclear@0 | 17 float mass, elast; // global mass attributes |
nuclear@0 | 18 float spring_k; // spring constant for all springs |
nuclear@1 | 19 float damping; |
nuclear@0 | 20 Vector3 grav, forces; |
nuclear@0 | 21 |
nuclear@0 | 22 std::vector<ClothMass> masses; |
nuclear@0 | 23 std::vector<std::vector<float> > conn; // spring lengths, <0 means not connected |
nuclear@0 | 24 |
nuclear@0 | 25 std::vector<Object*> colliders; |
nuclear@0 | 26 |
nuclear@0 | 27 bool find_collision(const Ray &ray, HitPoint *hit) const; |
nuclear@0 | 28 |
nuclear@0 | 29 public: |
nuclear@0 | 30 Cloth(); |
nuclear@0 | 31 |
nuclear@0 | 32 void create_rect(int x, int y, float width, float height); |
nuclear@0 | 33 |
nuclear@1 | 34 void set_mass(float m); |
nuclear@1 | 35 void set_elasticity(float e); |
nuclear@1 | 36 void set_spring_constant(float k); |
nuclear@1 | 37 void set_damping(float d); |
nuclear@1 | 38 void set_gravity(const Vector3 &g); |
nuclear@1 | 39 void set_force(const Vector3 &f); |
nuclear@1 | 40 |
nuclear@0 | 41 void transform(const Matrix4x4 &xform); |
nuclear@0 | 42 |
nuclear@0 | 43 void add_collider(Object *o); |
nuclear@0 | 44 |
nuclear@0 | 45 void step(float dt); |
nuclear@0 | 46 |
nuclear@0 | 47 void draw() const; |
nuclear@0 | 48 }; |
nuclear@0 | 49 |
nuclear@0 | 50 #endif // CLOTH_H_ |