X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fterrain.cpp;h=002a536581a6201698baa2e45ab2870b8cd42cb3;hb=8776713b20fdc7cdd09f7e2363679ebd06665d32;hp=e012bc9426e927feaf5733c189899e4ea05208c8;hpb=e536be49146f43aae6aaaa4455eb44d8e170a773;p=r2c2.git diff --git a/source/libr2c2/terrain.cpp b/source/libr2c2/terrain.cpp index e012bc9..002a536 100644 --- a/source/libr2c2/terrain.cpp +++ b/source/libr2c2/terrain.cpp @@ -1,3 +1,4 @@ +#include #include #include #include "layout.h" @@ -37,6 +38,8 @@ Terrain *Terrain::clone(Layout *to_layout) const void Terrain::set_position(const Vector &p) { position = p; + float eg = type.get_elevation_granularity(); + position.z = int(position.z/eg+0.5)*eg; signal_moved.emit(); } @@ -62,7 +65,7 @@ void Terrain::set_size(unsigned w, unsigned h) delete shape; float ts = type.get_tile_size(); - Vector dim(width*ts, height*ts, ts); + Vector dim(width*ts, height*ts, ts/10.0f); shape = new Geometry::TransformedShape( Geometry::Box(dim), Transform::translation(dim/2.0f)); @@ -83,7 +86,7 @@ void Terrain::set_node_elevation(const NodeCoordinates &c, float elev, bool join throw out_of_range("Terrain::set_node_elevation"); float eg = type.get_elevation_granularity(); - elev = int(elev/eg+0.5)*eg; + elev = floor(elev/eg+0.5)*eg; if(joined) {