#pragma once

#include <Vec3.h>
#include <ReferenceCounter.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);
};