#ifndef FRACTAL_NOISE_1D_HPP_
#define FRACTAL_NOISE_1D_HPP_

#include <Perlin1D/Perlin1D.hpp>
#include <vector>

class FractalNoise1D final
{
private:
    struct Layer
    {
        Perlin1D perlin;
        uint64_t controlPeriod;
        float amplitude;
    };

    std::vector<Layer> layers;

public:
    void addLayer(GeneratorNode genNode, uint64_t period, float amplitude);
    float sample(uint64_t t);
};

#endif