public void Draw(GameTime gameTime)
{
if (m_world != null)
{
System.Drawing.RectangleF viewportRect = ScreenToTileF(new System.Drawing.RectangleF(Viewport.X, Viewport.Y, Viewport.Width, Viewport.Height));
List<TerrainChunk> chunks = m_world.GetChunks(viewportRect);
m_spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, Matrix.CreateTranslation(0, 0, 0));
foreach (TerrainChunk chunk in chunks)
{
List<TerrainTile> tiles = chunk.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
Rectangle tileRect = TileToScreen(t.Bounds);
//tileRect.Offset((m_tileSize / 2) * -1, (m_tileSize / 2) * -1);
m_spriteBatch.Draw(m_cellTextures[t.Terrain], tileRect, Color.White);
#if DEBUG
DrawBorder(tileRect, 1, Color.Black);
#endif
}
#if DEBUG
Rectangle chunkRect = TileToScreen(chunk.Bounds);
//chunkRect.Offset((m_tileSize / 2) * -1, (m_tileSize / 2) * -1);
string chunkString = "Chunk: (" + (chunk.Bounds.X / m_chunkSize) + "," + (chunk.Bounds.Y / m_chunkSize) + ")";
DrawBorder(chunkRect, 1, Color.Red);
m_spriteBatch.DrawString(m_spriteFont, chunkString, new Vector2(chunkRect.X + 5, chunkRect.Y), Color.Red);
#endif
}
m_spriteBatch.End();
}
}