Beispiel #1
0
        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;
            }
        }