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_