OpenRA.Map.UpdateEdgeCells C# (CSharp) Method

UpdateEdgeCells() private method

private UpdateEdgeCells ( ) : List
return List
        List<CPos> UpdateEdgeCells()
        {
            var edgeCells = new List<CPos>();
            var unProjected = new List<MPos>();
            var bottom = Bounds.Bottom - 1;
            for (var u = Bounds.Left; u < Bounds.Right; u++)
            {
                unProjected = Unproject(new PPos(u, Bounds.Top));
                if (unProjected.Any())
                    edgeCells.Add(unProjected.MinBy(x => x.V).ToCPos(Grid.Type));

                unProjected = Unproject(new PPos(u, bottom));
                if (unProjected.Any())
                    edgeCells.Add(unProjected.MaxBy(x => x.V).ToCPos(Grid.Type));
            }

            for (var v = Bounds.Top; v < Bounds.Bottom; v++)
            {
                unProjected = Unproject(new PPos(Bounds.Left, v));
                if (unProjected.Any())
                    edgeCells.Add((v == bottom ? unProjected.MaxBy(x => x.V) : unProjected.MinBy(x => x.V)).ToCPos(Grid.Type));

                unProjected = Unproject(new PPos(Bounds.Right - 1, v));
                if (unProjected.Any())
                    edgeCells.Add((v == bottom ? unProjected.MaxBy(x => x.V) : unProjected.MinBy(x => x.V)).ToCPos(Grid.Type));
            }

            return edgeCells;
        }