X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmovetool.cpp;h=57f6216507e63c55a3d2157eaf519d6877b3f6ef;hb=5929b101ee38b5668b328e7b1eac4bf49c912412;hp=fa78ba73c3a38e14b11e15ae59772dce62e83d4b;hpb=a7bce7810670436ab667c034c80291b2f712d2a2;p=r2c2.git diff --git a/source/designer/movetool.cpp b/source/designer/movetool.cpp index fa78ba7..57f6216 100644 --- a/source/designer/movetool.cpp +++ b/source/designer/movetool.cpp @@ -13,9 +13,13 @@ MoveTool::MoveTool(Designer &d, Input::Keyboard &k, Input::Mouse &m, const setobject->get_n_link_slots(); - for(unsigned j=0; jobject->get_n_snap_nodes(); + unsigned j; + for(j=0; jobject->get_link(j))) boundaries.push_back(Boundary(&*i, j)); + for(; j(); @@ -32,13 +36,12 @@ void MoveTool::pointer_motion() i->object->set_rotation(i->original_rotation); } - float limit = max(designer.get_layout().get_catalogue().get_gauge(), - designer.get_camera_controller().get_view_scale()/100.0f); + float limit = designer.get_camera_controller().get_view_scale()/100.0f; MObject *snapped = 0; for(list::iterator i=boundaries.begin(); (!snapped && i!=boundaries.end()); ++i) { for(set::const_iterator j=snap_targets.begin(); (!snapped && j!=snap_targets.end()); ++j) - if((*i)->snap_to(**j, limit)) + if((*i)->snap_to(**j, (i->limit>0 ? max(i->limit, limit) : limit))) snapped = i->object; } @@ -61,5 +64,9 @@ void MoveTool::pointer_motion() MoveTool::Boundary::Boundary(MObject *o, unsigned i): object(o), - index(i) -{ } + index(i), + limit(-1) +{ + if(Track *track = dynamic_cast(object->object)) + limit = track->get_type().get_appearance().get_gauge(); +}