private void DrawSelectedTiles(DevicePanel d, int x, int y, int Transperncy) { foreach (Point p in SelectedTiles.GetChunkPoint(x, y)) { if (SelectedTilesValue.ContainsKey(p)) { DrawTile(d, SelectedTilesValue[p], p.X, p.Y, !TempSelectionDeselect || !TempSelectionTiles.Contains(p), Transperncy); } else // It is still in the original place { DrawTile(d, Layer.Tiles[p.Y][p.X], p.X, p.Y, !TempSelectionDeselect || !TempSelectionTiles.Contains(p), Transperncy); } } foreach (Point p in TempSelectionTiles.GetChunkPoint(x, y)) { if (SelectedTiles.Contains(p)) { continue; } DrawTile(d, Layer.Tiles[p.Y][p.X], p.X, p.Y, true, Transperncy); } }
private void UpdateSelectedChunkVBO(int x, int y) { ChunkVBO vbo = selectedChunks[y][x]; if (vbo.TexCoordsUpdated && vbo.VerticesUpdated) { return; } if (!vbo.VerticesUpdated) { vbo.Vertices.Reset(); vbo.SelectIndices.Reset(); } if (!vbo.TexCoordsUpdated) { vbo.TexCoords.Reset(); } Rectangle rect = GetTilesChunkArea(x, y); foreach (Point p in SelectedTiles.GetChunkPoint(x, y)) { if (!TempSelectionDeselect || !TempSelectionTiles.Contains(p)) { if (!vbo.VerticesUpdated) { AddSelectIndices(vbo); } if (SelectedTilesValue.ContainsKey(p)) { AddTileToVBO(vbo, SelectedTilesValue[p], p.X, p.Y); } else // It is still in the original place { AddTileToVBO(vbo, Layer.Tiles[p.Y][p.X], p.X, p.Y); } } } foreach (Point p in TempSelectionTiles.GetChunkPoint(x, y)) { if (SelectedTiles.Contains(p)) { continue; } if (!vbo.VerticesUpdated) { AddSelectIndices(vbo); } AddTileToVBO(vbo, Layer.Tiles[p.Y][p.X], p.X, p.Y); } if (!vbo.VerticesUpdated) { vbo.Vertices.UpdateData(); vbo.SelectIndices.UpdateData(); vbo.VerticesUpdated = true; } if (!vbo.TexCoordsUpdated) { vbo.TexCoords.UpdateData(); vbo.TexCoordsUpdated = true; } }