nuclear@4: #include "terrain.h" nuclear@4: nuclear@4: Terrain::Terrain() nuclear@4: { nuclear@4: root = 0; nuclear@4: } nuclear@4: nuclear@4: Terrain::~Terrain() nuclear@4: { nuclear@4: delete root; nuclear@4: } nuclear@4: nuclear@4: float Terrain::get_height(float x, float y) const nuclear@4: { nuclear@4: return root->get_height(x, y); nuclear@4: } nuclear@4: nuclear@4: nuclear@4: TerrainNode::TerrainNode() nuclear@4: { nuclear@4: height = 0; nuclear@4: child[0] = child[1] = child[2] = child[3]; nuclear@4: } nuclear@4: nuclear@4: TerrainNode::~TerrainNode() nuclear@4: { nuclear@4: for(auto c : child) { nuclear@4: delete c; nuclear@4: } nuclear@4: delete [] height; nuclear@4: } nuclear@4: nuclear@4: TerrainNode *TerrainNode::get_child(float x, float y) nuclear@4: { nuclear@4: int xidx = x >= 0.0 ? 1 : 0; nuclear@4: int yidx = y >= 0.0 ? 1 : 0; nuclear@4: return child[y * 2 + x]; nuclear@4: } nuclear@4: nuclear@4: const TerrainNode *TerrainNode::get_child(float x, float y) const nuclear@4: { nuclear@4: int xidx = x >= 0.0 ? 1 : 0; nuclear@4: int yidx = y >= 0.0 ? 1 : 0; nuclear@4: return child[y * 2 + x]; nuclear@4: } nuclear@4: nuclear@4: float TerrainNode::get_height(float x, float y) const nuclear@4: { nuclear@4: TerrainNode *child = get_child(x, y); nuclear@4: if(child) { nuclear@4: nuclear@4: } nuclear@4: }