]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/object.cpp
Make use of the mspmath library
[r2c2.git] / source / libr2c2 / object.cpp
index ba1810f913ebbc20a59a53c50aa7d8936cdfdd63..cc56edeb6af28883f6619dd7953c8e21925d9e15 100644 (file)
@@ -18,8 +18,8 @@ bool Object::snap(Snap &sn, float limit, SnapType what) const
                for(unsigned i=0; i<nsn; ++i)
                {
                        Snap node = get_snap_node(i);
-                       Vector d(sn.position.x-node.position.x, sn.position.y-node.position.y, sn.position.z-node.position.z);
-                       if(d.x*d.x+d.y*d.y<limit*limit)
+                       Vector span = sn.position-node.position;
+                       if(dot(span, span)<limit*limit)
                        {
                                sn = node;
                                return true;
@@ -45,11 +45,9 @@ 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-M_PI);
+                       set_rotation(rotation+ssn.rotation-sn.rotation-Angle::half_turn());
                        sn = get_snap_node(i);
-                       position.x += ssn.position.x-sn.position.x;
-                       position.y += ssn.position.y-sn.position.y;
-                       position.z += ssn.position.z-sn.position.z;
+                       position += ssn.position-sn.position;
                        return true;
                }
        }