]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/manipulator.cpp
Rename the project to R²C²
[r2c2.git] / source / designer / manipulator.cpp
index e9d6b955f05619e678223200398a8ea8db3b0c85..23ea138623c42809726c0df07c644ad15ba52f99 100644 (file)
@@ -1,6 +1,6 @@
 /* $Id$
 
-This file is part of the MSP Märklin suite
+This file is part of R²C²
 Copyright © 2006-2010  Mikkosoft Productions, Mikko Rasa
 Distributed under the GPL
 */
@@ -8,13 +8,13 @@ Distributed under the GPL
 #include <algorithm>
 #include <cmath>
 #include <msp/strings/formatter.h>
-#include "libmarklin/tracktype.h"
+#include "libr2c2/tracktype.h"
 #include "designer.h"
 #include "manipulator.h"
 #include "selection.h"
 
 using namespace std;
-using namespace Marklin;
+using namespace R2C2;
 using namespace Msp;
 
 Manipulator::Manipulator(Designer &d, Graphics::EventSource &es, Selection &s):
@@ -211,7 +211,7 @@ void Manipulator::connect()
                return;
        }
 
-       float limit = 0.001;
+       float limit = designer.get_layout().get_catalogue().get_gauge()/10;
 
        Track *track1 = tracks.front().track;
        Point pos1;
@@ -372,6 +372,8 @@ void Manipulator::pointer_motion(int x, int y)
                }
 
                const set<Track *> &ltracks = designer.get_layout().get_tracks();
+               float limit = max(designer.get_layout().get_catalogue().get_gauge(),
+                       designer.get_camera_controller().get_view_scale()*5/event_source.get_height());
                MTrack *snapped = 0;
                for(set<Track *>::const_iterator i=ltracks.begin(); (i!=ltracks.end() && !snapped); ++i)
                {
@@ -381,7 +383,7 @@ void Manipulator::pointer_motion(int x, int y)
                        if(!ok) continue;
 
                        for(vector<MTrack>::iterator j=tracks.begin(); (j!=tracks.end() && !snapped); ++j)
-                               if(j->track->snap_to(**i, false))
+                               if(j->track->snap_to(**i, false, limit))
                                        snapped = &*j;
                }
 
@@ -560,7 +562,7 @@ void Manipulator::set_slope(TrackOrder &track, float z, float dz)
        }
 }
 
-vector<Track *> Manipulator::create_straight(const Marklin::Point &start, float dir, float length, float limit)
+vector<Track *> Manipulator::create_straight(const R2C2::Point &start, float dir, float length, float limit)
 {
        const Catalogue::TrackMap &track_types = designer.get_catalogue().get_tracks();
        std::map<float, const TrackType *> types_by_length;