symmetry
annotate src/terrain.h @ 1:46fe847bba08
using goat3dgfx
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 25 Feb 2014 23:47:20 +0200 |
parents | |
children |
rev | line source |
---|---|
nuclear@1 | 1 #ifndef TERRAIN_H_ |
nuclear@1 | 2 #define TERRAIN_H_ |
nuclear@1 | 3 |
nuclear@1 | 4 #include "vmath/vmath.h" |
nuclear@1 | 5 |
nuclear@1 | 6 class Terrain { |
nuclear@1 | 7 private: |
nuclear@1 | 8 float dx, dy; // inter-pixel distance in uv-space |
nuclear@1 | 9 int xsz, ysz; |
nuclear@1 | 10 float *hmap; |
nuclear@1 | 11 |
nuclear@1 | 12 float scale, height_scale; |
nuclear@1 | 13 |
nuclear@1 | 14 mutable int dlist, dlist_norm; |
nuclear@1 | 15 mutable int dlist_sub[2], dlist_norm_sub[2]; |
nuclear@1 | 16 mutable float dlist_norm_sz; |
nuclear@1 | 17 |
nuclear@1 | 18 void invalidate_mesh(); |
nuclear@1 | 19 |
nuclear@1 | 20 public: |
nuclear@1 | 21 Terrain(); |
nuclear@1 | 22 ~Terrain(); |
nuclear@1 | 23 |
nuclear@1 | 24 void set_scale(float s); |
nuclear@1 | 25 float get_scale() const; |
nuclear@1 | 26 |
nuclear@1 | 27 void set_height_scale(float s); |
nuclear@1 | 28 float get_height_scale() const; |
nuclear@1 | 29 |
nuclear@1 | 30 bool load(const char *fname); |
nuclear@1 | 31 int get_map_width() const { return xsz; } |
nuclear@1 | 32 int get_map_height() const { return ysz; } |
nuclear@1 | 33 |
nuclear@1 | 34 Vector2 world_to_uv(const Vector2 &pt) const; |
nuclear@1 | 35 Vector2 uv_to_world(const Vector2 &pt) const; |
nuclear@1 | 36 |
nuclear@1 | 37 float lookup(int x, int y) const; |
nuclear@1 | 38 |
nuclear@1 | 39 float get_height(const Vector2 &pt) const; |
nuclear@1 | 40 Vector3 get_normal(const Vector2 &pt) const; |
nuclear@1 | 41 |
nuclear@1 | 42 float get_world_height(const Vector2 &pt) const; |
nuclear@1 | 43 |
nuclear@1 | 44 bool intersect(const Ray &ray, float *dist) const; |
nuclear@1 | 45 bool intersect_micro(const Ray &ray, float *dist, float thres = 0.01) const; |
nuclear@1 | 46 |
nuclear@1 | 47 void draw(int usub = 0, int vsub = 0) const; |
nuclear@1 | 48 void draw_normals(float sz = 1.0, int usub = 0, int vsub = 0) const; |
nuclear@1 | 49 }; |
nuclear@1 | 50 |
nuclear@1 | 51 #endif // TERRAIN_H_ |