diff --git a/OpenRa.Game/MainWindow.cs b/OpenRa.Game/MainWindow.cs index cfb72c703e..dd356ddac4 100644 --- a/OpenRa.Game/MainWindow.cs +++ b/OpenRa.Game/MainWindow.cs @@ -89,19 +89,19 @@ namespace OpenRa.Game void LoadVertexBuffer() { Dictionary> indexMap = new Dictionary>(); - Vertex[] vertices = new Vertex[4 * 128 * 128]; + List vertices = new List();// Vertex[] vertices = new Vertex[4 * 128 * 128]; - for( int i = map.XOffset; i < map.XOffset+ map.Width; i++ ) - for (int j = map.YOffset; j < map.YOffset + map.Height; j++) + for (int j = 0; j < map.Height; j++) + for( int i = 0; i < map.Width; i++ ) { - SheetRectangle tile = tileMapping[map.MapTiles[i, j]]; + SheetRectangle tile = tileMapping[map.MapTiles[i + map.XOffset, j + map.YOffset]]; - ushort offset = (ushort)(4 * (i * 128 + j)); + ushort offset = (ushort)vertices.Count; - vertices[offset] = new Vertex(24 * i, 24 * j, 0, U(tile, 0), V(tile, 0)); - vertices[offset + 1] = new Vertex(24 + 24 * i, 24 * j, 0, U(tile, 1), V(tile, 0)); - vertices[offset + 2] = new Vertex(24 * i, 24 + 24 * j, 0, U(tile, 0), V(tile, 1)); - vertices[offset + 3] = new Vertex(24 + 24 * i, 24 + 24 * j, 0, U(tile, 1), V(tile, 1)); + vertices.Add(new Vertex(24 * i, 24 * j, 0, U(tile, 0), V(tile, 0))); + vertices.Add(new Vertex(24 + 24 * i, 24 * j, 0, U(tile, 1), V(tile, 0))); + vertices.Add(new Vertex(24 * i, 24 + 24 * j, 0, U(tile, 0), V(tile, 1))); + vertices.Add(new Vertex(24 + 24 * i, 24 + 24 * j, 0, U(tile, 1), V(tile, 1))); List indexList; if (!indexMap.TryGetValue(tile.sheet, out indexList)) @@ -116,8 +116,8 @@ namespace OpenRa.Game indexList.Add((ushort)(offset + 2)); } - vertexBuffer = new FvfVertexBuffer(device, vertices.Length, Vertex.Format); - vertexBuffer.SetData(vertices); + vertexBuffer = new FvfVertexBuffer(device, vertices.Count, Vertex.Format); + vertexBuffer.SetData(vertices.ToArray()); foreach (KeyValuePair> p in indexMap) {