Blob Blame Raw

#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;
    
    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)
    { }
    
    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) const;
    
    bool generate(const Collider &collider, Track &track) const override;
};


#endif