Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Octave.cs 1.07 KiB
using System;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;

[Serializable]
public enum NoiseType
{
    MathfPerlin,
    MathematicsPerlin,
    Simplex,
    Celluar
}

[Serializable]
public struct Octave
{
    public float amplitude;
    public float frequency;
    public NoiseType type;
    public Vector2 offset;

    public float Calculate(float2 position)
    {
        float addition;

        position += new float2(offset);

        switch (type)
        {
            default:
            case NoiseType.MathfPerlin:
                addition = Mathf.PerlinNoise(position.x, position.y);
                break;
            case NoiseType.MathematicsPerlin:
                addition = noise.cnoise(position) / 2.3f + 0.5f;
                break;
            case NoiseType.Simplex:
                addition = noise.snoise(position) / 4.6f + 0.5f;
                break;
            case NoiseType.Celluar:
                addition = noise.cellular(position).x / 2.3f + 0.5f;
                break;
        }

        return addition * amplitude;
    }
}