public static System.Func <float, float, float> ChooseFunc(Defines.GeneratorLayer layerParams)
    {
        var scale    = layerParams.scale;
        var offset   = layerParams.offset;
        var funcType = layerParams.function;

        switch (funcType)
        {
        case GeneratingFunctionType2d.Sines:
            return((x, y) => GeneratorMethods2d.Sines(
                       (x + offset.x) / scale, (y + offset.y) / scale));

        case GeneratingFunctionType2d.DiagLines:
            return((x, y) => GeneratorMethods2d.DiagonalLines(
                       (x + offset.x), (y + offset.y), scale));

        case GeneratingFunctionType2d.Perlin:
            return((x, y) => GeneratorMethods2d.BasicPerlin(
                       (x + offset.x) / scale, (y + offset.y) / scale));

        case GeneratingFunctionType2d.Squares:
            return((x, y) => GeneratorMethods2d.Squares(
                       (x + offset.x) / scale, (y + offset.y) / scale));

        default:
            return((x, y) => 1 / ((x + offset.x) / scale + (y + offset.y) / scale));
        }
    }
Example #2
0
    public static Defines.GeneratorLayer[] GetRandomLayers(int seed, int layerNum)
    {
        Defines.GeneratorLayer[] result = new Defines.GeneratorLayer[layerNum];
        var rng = new System.Random(seed);

        for (int i = 0; i < layerNum; i++)
        {
            result[i] = GetRandomLayer(rng);
        }

        return(result);
    }
Example #3
0
    public static Defines.GeneratorLayer GetRandomLayer(System.Random rng)
    {
        Defines.GeneratorLayer result = new Defines.GeneratorLayer {
            function = (GeneratingFunctionType2d)rng.Next(
                System.Enum.GetValues(typeof(GeneratingFunctionType2d)).Length),
            scale        = rng.Next(5, 500),
            significance = (float)rng.NextDouble() % 1f,
            offset       = new Vector2((float)rng.NextDouble(), (float)rng.NextDouble())
        };

        return(result);
    }