zOMG perf

This commit is contained in:
Chris Forbes
2010-05-08 21:43:09 +12:00
parent 6d4431411a
commit edc73f2df8

View File

@@ -62,18 +62,22 @@ namespace OpenRA.Editor
for( var u = 0; u < template.Size.X; u++ ) for( var u = 0; u < template.Size.X; u++ )
for (var v = 0; v < template.Size.Y; v++) for (var v = 0; v < template.Size.Y; v++)
{
if (Map.IsInMap(new int2(u, v) + pos))
{ {
var z = u + v * template.Size.X; var z = u + v * template.Size.X;
if (template.TerrainType.ContainsKey(z)) if (template.TerrainType.ContainsKey(z))
Map.MapTiles[u + pos.X, v + pos.Y] = Map.MapTiles[u + pos.X, v + pos.Y] =
new TileReference<ushort, byte> { type = Brush.First, image = (byte)z, index = (byte)z }; new TileReference<ushort, byte> { type = Brush.First, image = (byte)z, index = (byte)z };
var ch = new int2( (pos.X + u) / ChunkSize, (pos.Y + v) / ChunkSize);
if (Chunks.ContainsKey(ch))
{
Chunks[ch].Dispose();
Chunks.Remove(ch);
}
}
} }
// invalidate tiles that were involved.
// todo: do this properly.
foreach (var v in Chunks.Values) v.Dispose();
Chunks.Clear();
} }
Invalidate(); Invalidate();