stratgame
annotate level/src/terrain.h @ 5:2e38715de41b
terrain
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 27 May 2012 07:00:48 +0300 |
parents | cd12944a8ea8 |
children |
rev | line source |
---|---|
nuclear@4 | 1 #ifndef TERRAIN_H_ |
nuclear@4 | 2 #define TERRAIN_H_ |
nuclear@4 | 3 |
nuclear@4 | 4 #include <string> |
nuclear@4 | 5 #include <map> |
nuclear@5 | 6 #include "tinyxml2.h" |
nuclear@4 | 7 |
nuclear@4 | 8 class TerrainNode; |
nuclear@4 | 9 |
nuclear@4 | 10 class Terrain { |
nuclear@4 | 11 private: |
nuclear@4 | 12 TerrainNode *root; |
nuclear@4 | 13 |
nuclear@5 | 14 float size; |
nuclear@5 | 15 |
nuclear@4 | 16 public: |
nuclear@4 | 17 Terrain(); |
nuclear@4 | 18 ~Terrain(); |
nuclear@4 | 19 |
nuclear@5 | 20 bool load(tinyxml2::XMLElement *xelem); |
nuclear@5 | 21 |
nuclear@5 | 22 void set_size(float sz); |
nuclear@4 | 23 float get_height(float x, float y) const; |
nuclear@5 | 24 |
nuclear@5 | 25 void draw() const; |
nuclear@4 | 26 }; |
nuclear@4 | 27 |
nuclear@4 | 28 |
nuclear@4 | 29 class TerrainNode { |
nuclear@4 | 30 private: |
nuclear@5 | 31 int map_xsz, map_ysz; |
nuclear@5 | 32 float map_scale; |
nuclear@5 | 33 unsigned char *hmap; |
nuclear@4 | 34 |
nuclear@4 | 35 public: |
nuclear@4 | 36 TerrainNode *child[4]; |
nuclear@4 | 37 |
nuclear@4 | 38 TerrainNode(); |
nuclear@4 | 39 ~TerrainNode(); |
nuclear@4 | 40 |
nuclear@5 | 41 bool load(tinyxml2::XMLElement *xelem); |
nuclear@5 | 42 bool load_heightmap(const char *fname); |
nuclear@5 | 43 |
nuclear@5 | 44 bool is_leaf() const; |
nuclear@5 | 45 |
nuclear@4 | 46 TerrainNode *get_child(float x, float y); |
nuclear@4 | 47 const TerrainNode *get_child(float x, float y) const; |
nuclear@4 | 48 |
nuclear@4 | 49 float get_height(float x, float y) const; |
nuclear@5 | 50 |
nuclear@5 | 51 void draw(float x, float y, float width, float height) const; |
nuclear@4 | 52 }; |
nuclear@4 | 53 |
nuclear@4 | 54 #endif // TERRAIN_H_ |