#pragma once

#include <ReferenceCounter.h>
#include <Vec3.h>

class Noise : public virtual Framework::ReferenceCounter
{
public:
    Noise();
    virtual int getSeed() const = 0;
    /// <summary>
    /// get the noise value at a certain destination
    /// </summary>
    /// <param name="x">the x coord of the noice value</param>
    /// <param name="y">the y coord of the noice value</param>
    /// <param name="z">the z coord of the noice value</param>
    /// <returns>the noise value scaled to a range from 0 to 1</returns>
    virtual double getNoise(double x, double y, double z) = 0;
    double getNoise(Framework::Vec3<double>& pos);
};