﻿//
// ShaderGraphEssentials for Unity
// (c) 2019 PH Graphics
// Source code may be used and modified for personal or commercial projects.
// Source code may NOT be redistributed or sold.
// 
// *** A NOTE ABOUT PIRACY ***
// 
// If you got this asset from a pirate site, please consider buying it from the Unity asset store. This asset is only legally available from the Unity Asset Store.
// 
// I'm a single indie dev supporting my family by spending hundreds and thousands of hours on this and other assets. It's very offensive, rude and just plain evil to steal when I (and many others) put so much hard work into the software.
// 
// Thank you.
//
// *** END NOTE ABOUT PIRACY ***
//

using UnityEditor.ShaderGraph;

namespace ShaderGraphEssentials
{
    public abstract class NoiseBase
    {
        public NoiseCombine Combine { get; set; }
        public NoiseDimension Dimension { get; set; }
        public NoisePeriodicity Periodicity { get; set; }

        protected NoiseBase(NoiseCombine combine, NoiseDimension dimension, NoisePeriodicity periodicity)
        {
            Combine = combine;
            Dimension = dimension;
            Periodicity = periodicity;
        }

        public abstract bool Support();
        public abstract NoiseDimension[] GetSupportedDimensions();
        public abstract NoisePeriodicity[] GetSupportedPeriodicities();
        public abstract string GetNoiseFunctionName();
        internal abstract void RegisterFunctions(FunctionRegistry registry);
        public virtual bool NeedRemapTo0_1()
        {
            return false;
        }
    }
}
