X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fobject.cpp;h=d7c7db25e68beaeac81923f5eb2e6258b10e2e7d;hb=d41f66805bc9fe0b33e3d46b47f52e67b5782028;hp=e9e58abf97041c44351a7becd185895e95f79304;hpb=bde934f7d5ba07a9442a305192e10024820d13ed;p=r2c2.git diff --git a/source/libr2c2/object.cpp b/source/libr2c2/object.cpp index e9e58ab..d7c7db2 100644 --- a/source/libr2c2/object.cpp +++ b/source/libr2c2/object.cpp @@ -45,9 +45,15 @@ bool Object::snap_to(const Object &other, float limit, SnapType what) Snap ssn = sn; if(other.snap(ssn, limit, what)) { - set_rotation(rotation+ssn.rotation-sn.rotation-Angle::half_turn()); + if(what==SNAP_NODE) + set_rotation(rotation+ssn.rotation-sn.rotation-Angle::half_turn()); + else + { + Angle adiff = wrap_balanced((ssn.rotation-sn.rotation)*2.0f)/2.0f; + set_rotation(rotation+adiff); + } sn = get_snap_node(i); - position += ssn.position-sn.position; + set_position(position+ssn.position-sn.position); return true; } }