X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fterrain.cpp;h=502a8c7e5a24e4b1eeba8da56ad26628245e3456;hb=ab0e6fa3442459d0a299ef90618ab6886d075057;hp=5a317747e74f96f57f3b598e934ee2e2773a012e;hpb=90015ce8f2b5d10135c3386c2771ee29395e3b37;p=r2c2.git diff --git a/source/libr2c2/terrain.cpp b/source/libr2c2/terrain.cpp index 5a31774..502a8c7 100644 --- a/source/libr2c2/terrain.cpp +++ b/source/libr2c2/terrain.cpp @@ -97,7 +97,7 @@ void Terrain::set_node_elevation(const NodeCoordinates &c, float elev, bool join Tile &tile = tiles[x+y*width]; if(tile.nodes[i].elevation==ref) { - tile.nodes[i].elevation = elev; + tile.set_node_elevation(i, elev); signal_tile_changed.emit(x, y); } } @@ -105,7 +105,7 @@ void Terrain::set_node_elevation(const NodeCoordinates &c, float elev, bool join } else { - tiles[c.x+c.y*width].nodes[c.i].elevation = elev; + tiles[c.x+c.y*width].set_node_elevation(c.i, elev); signal_tile_changed.emit(c.x, c.y); } } @@ -186,6 +186,17 @@ Terrain::Tile::Tile(): secondary_axis(false) { } +void Terrain::Tile::set_node_elevation(unsigned i, float e) +{ + nodes[i].elevation = e; + update_axis(); +} + +void Terrain::Tile::update_axis() +{ + secondary_axis = (abs(nodes[1].elevation-nodes[2].elevation) < abs(nodes[0].elevation-nodes[3].elevation)); +} + void Terrain::Tile::save(list &st) const { bool flat = true; @@ -256,6 +267,7 @@ void Terrain::Loader::tile() Tile &t = obj.tiles[next_tile]; Tile::Loader ldr(obj, t); load_sub_with(ldr); + t.update_axis(); unsigned x = next_tile%obj.width; unsigned y = next_tile/obj.width; ++next_tile;