Dwarrowdelf.TerrainGen.DiamondSquare.Diamond C# (CSharp) Method

Diamond() static private method

static private Diamond ( Context ctx, IntVector2 middle, int radius ) : void
ctx Context
middle IntVector2
radius int
return void
        static void Diamond(Context ctx, IntVector2 middle, int radius)
        {
            double v1, v2, v3, v4;
            IntVector2 p1, p2, p3, p4;

            p1 = middle.Offset(0, -radius);
            v1 = GetGridValue(ctx, p1);

            p2 = middle.Offset(-radius, 0);
            v2 = GetGridValue(ctx, p2);

            p3 = middle.Offset(0, radius);
            v3 = GetGridValue(ctx, p3);

            p4 = middle.Offset(radius, 0);
            v4 = GetGridValue(ctx, p4);

            var avg = (v1 + v2 + v3 + v4) / 4;
            var val = avg + GetRandom(ctx, ctx.Range);

            ctx.Grid[middle] = val;

            if (val < ctx.Min)
                ctx.Min = val;
            if (val > ctx.Max)
                ctx.Max = val;
        }