#ifndef GENERATOR_H
#define GENERATOR_H
#include "track.h"
#include "collider.h"
class Generator {
public:
virtual ~Generator() { }
virtual bool generate(const Collider &collider, Track &track) const = 0;
};
class GeneratorRowsZAX: public Generator {
public:
Real step_z;
Real step_a;
Real step_x;
Real min_x;
Real max_x;
Real min_z;
Real max_z;
Real safe_z;
Real feed_speed;
Real move_speed;
bool skip_middle_layers;
bool feed_in_rotation;
explicit GeneratorRowsZAX():
step_z(1),
step_a(1),
step_x(0.1),
min_x(),
max_x(),
min_z(),
max_z(),
safe_z(),
feed_speed(600),
move_speed(1500),
skip_middle_layers(false),
feed_in_rotation(false)
{ }
void tool_point(Track &track, const TrackPoint &p) const;
void tool_up(Track &track, Real safe_z) const;
void tool_feed(Track &track, Real safe_z, Real z1, Real z, Real a, Real x) const;
void touch(const Collider &collider, Track &track, Real safe_z, Real z1, Real z0, Real a, Real x, bool skip_z0) const;
bool generate(const Collider &collider, Track &track) const override;
};
#endif