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_