]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/terrain.cpp
Also check if the clock is stopped
[r2c2.git] / source / libr2c2 / terrain.cpp
index e012bc9426e927feaf5733c189899e4ea05208c8..002a536581a6201698baa2e45ab2870b8cd42cb3 100644 (file)
@@ -1,3 +1,4 @@
+#include <cmath>
 #include <msp/geometry/box.h>
 #include <msp/geometry/transformedshape.h>
 #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<float, 3>(
                Geometry::Box<float>(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)
        {