Beispiel #1
0
 public CellularNoiseGenerator(int seed = 12345, float frequency = 0.1f, FastNoise.CellularDistanceFunction cellularDistanceFunction = FastNoise.CellularDistanceFunction.Euclidean, FastNoise.CellularReturnType cellularReturnType = FastNoise.CellularReturnType.CellValue)
 {
     fastNoise = new FastNoise(seed);
     fastNoise.SetNoiseType(FastNoise.NoiseType.Cellular);
     fastNoise.SetFrequency(frequency);
     fastNoise.SetCellularDistanceFunction(cellularDistanceFunction);
     fastNoise.SetCellularReturnType(cellularReturnType);
 }
    public override void OnEditorGUI(UltimateTerrain uTerrain, IReadOnlyFlowGraph graph)
    {
#if UNITY_EDITOR
        Seed               = EditorGUILayout.IntField("Seed:", Seed);
        Frequency          = EditorGUILayout.FloatField("Frequency:", Frequency);
        Scale              = EditorGUILayout.FloatField("Scale:", Scale);
        GradientPerturbAmp = EditorGUILayout.FloatField("Gradient Perturb Amplitude:", GradientPerturbAmp);
        NoiseType          = (FastNoise.NoiseType)EditorGUILayout.EnumPopup("Noise Type:", NoiseType);
        Interp             = (FastNoise.Interp)EditorGUILayout.EnumPopup("Interp:", Interp);

        if (NoiseType == FastNoise.NoiseType.Cellular)
        {
            CellularJitter           = EditorGUILayout.FloatField("Cellular Jitter:", CellularJitter);
            CellularReturnType       = (FastNoise.CellularReturnType)EditorGUILayout.EnumPopup("Cellular return Type:", CellularReturnType);
            CellularDistanceFunction = (FastNoise.CellularDistanceFunction)EditorGUILayout.EnumPopup("Cellular distance function:", CellularDistanceFunction);

            if (CellularReturnType == FastNoise.CellularReturnType.NoiseLookup)
            {
                if (cellularNoise == null)
                {
                    cellularNoise = CreateInstance <FastNoise2DPrimitiveSerializable>();
                }

                EditorGUILayout.BeginVertical("Box");
                EditorGUILayout.LabelField("Noise lookup:");
                cellularNoise.OnEditorGUI(uTerrain, graph);
                EditorGUILayout.EndVertical();
            }
        }
        else if (NoiseType == FastNoise.NoiseType.CubicFractal ||
                 NoiseType == FastNoise.NoiseType.PerlinFractal ||
                 NoiseType == FastNoise.NoiseType.SimplexFractal ||
                 NoiseType == FastNoise.NoiseType.ValueFractal)
        {
            FractalType       = (FastNoise.FractalType)EditorGUILayout.EnumPopup("Fractal Type:", FractalType);
            FractalOctaves    = EditorGUILayout.IntField("Octaves:", FractalOctaves);
            FractalLacunarity = EditorGUILayout.FloatField("Lacunarity:", FractalLacunarity);
            FractalGain       = EditorGUILayout.FloatField("Gain:", FractalGain);
        }
#endif
    }
        public static ValueMap CellNoise(int seed, Vector2Int size, Vector2 offset, FastNoise.CellularDistanceFunction distanceFunction, FastNoise.CellularReturnType returnType, float jitter = 0.45f, float frequency = 0.02f)
        {
            var noise = new FastNoise(seed);

            noise.SetCellularDistanceFunction(distanceFunction);
            noise.SetCellularReturnType(returnType);
            noise.SetCellularJitter(jitter);
            noise.SetFrequency(frequency);

            ValueMap output = ValueMap.CreateInstance(size);

            for (int x = 0; x < size.x; x++)
            {
                for (int y = 0; y < size.y; y++)
                {
                    output[x, y] = noise.GetCellular(offset.x + x, offset.y + y);
                }
            }

            return(output);
        }