using namespace Msp;
using namespace R2C2;
-SlopeTool::SlopeTool(Designer &d, Input::Mouse &m, const set<Object *> &objects):
- Tool(d, m),
+SlopeTool::SlopeTool(Designer &d, Input::Keyboard &k, Input::Mouse &m, const set<Object *> &objects):
+ Tool(d, k, m),
total_length(0)
{
for(set<Object *>::const_iterator i=objects.begin(); i!=objects.end(); ++i)
if(!dynamic_cast<Track *>(*i) || (*i)->get_n_link_slots()!=2)
{
set_status("Must have linear tracks only");
+ set_done(false);
return;
}
void SlopeTool::even_slope(bool smooth)
{
+ if(done)
+ return;
+
float start_z = tracks.front()->get_snap_node(tracks.front().entry()).position.z;
float end_z = tracks.back()->get_snap_node(tracks.back().reverse().entry()).position.z;
set_slope(*i, cur_z, tilt);
cur_z += (*i)->get_type().get_path_length(0)*(end_z-start_z)/length;
}
+
+ set_done(true);
}
void SlopeTool::flatten()
{
+ if(done)
+ return;
+
float z = 0;
for(list<TrackIter>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
(*i)->set_position(Vector(p.x, p.y, z));
(*i)->set_tilt(Angle::zero());
}
+
+ set_done(true);
}
void SlopeTool::set_slope(const TrackIter &track, float z, const Angle &tilt)