ld33_umonster

annotate src/dragon.h @ 10:1b30bd381667

sweep curve mesh gen and dragon horns
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 27 Aug 2015 05:25:04 +0300
parents 3b4460b34d43
children
rev   line source
nuclear@6 1 #ifndef DRAGON_H_
nuclear@6 2 #define DRAGON_H_
nuclear@6 3
nuclear@6 4 #include "vmath/vmath.h"
nuclear@7 5 #include "mesh.h"
nuclear@7 6 #include "metasurf.h"
nuclear@7 7
nuclear@7 8 struct Capsule {
nuclear@7 9 Vector3 p[2];
nuclear@7 10 float w[2];
nuclear@7 11 };
nuclear@7 12
nuclear@7 13 struct DynVertex {
nuclear@7 14 float x, y, z;
nuclear@7 15 float nx, ny, nz;
nuclear@7 16 };
nuclear@6 17
nuclear@6 18 class Dragon {
nuclear@6 19 private:
nuclear@6 20 Vector3 pos, dir;
nuclear@6 21 Vector3 head_pos, target;
nuclear@6 22 float head_xlim[2], head_ylim[2];
nuclear@6 23
nuclear@7 24 struct metasurface *msurf;
nuclear@7 25
nuclear@6 26 public:
nuclear@6 27 Dragon();
nuclear@6 28 ~Dragon();
nuclear@6 29
nuclear@6 30 void set_position(const Vector3 &p);
nuclear@6 31 void set_direction(const Vector3 &dir);
nuclear@6 32 void set_target(const Vector3 &p);
nuclear@6 33
nuclear@6 34 void set_head_limits(float xmin, float xmax, float ymin, float ymax);
nuclear@6 35 void move_head(const Vector3 &p);
nuclear@6 36 void move_head(float dx, float dy);
nuclear@6 37 const Vector3 &head_position() const;
nuclear@6 38 Vector3 breath_dir() const;
nuclear@6 39
nuclear@6 40 void update();
nuclear@6 41 void draw() const;
nuclear@7 42
nuclear@7 43 // implementation details, must be public for the msurf callbacks
nuclear@7 44 Capsule *neck_seg;
nuclear@7 45 int neck_seg_count;
nuclear@7 46 DynVertex *dyn_varr;
nuclear@7 47 mutable int dyn_vidx;
nuclear@7 48 unsigned int dyn_vbo;
nuclear@7 49
nuclear@7 50 void flush_dynvbo() const;
nuclear@6 51 };
nuclear@6 52
nuclear@6 53 #endif // DRAGON_H_