public override void Do()
        {
            base.Do();

            oldSelection = TileLayer.Selection;
            TileLayer.Selection = new TileSelection(TileLayer, selectArea);
        }
        public override void Do()
        {
            base.Do();

            oldSelection = TileLayer.Selection;
            TileLayer.Selection = null;
        }
        public override void Do()
        {
            base.Do();

            oldSelection = TileLayer.Selection;
            TileLayer.Selection = new TileSelection(TileLayer, area);
            TileLayer.Selection.SetUnderFromTiles();

            for (int i = 0; i < area.Width; i++)
                for (int j = 0; j < area.Height; j++)
                    TileLayer.Tiles[i + area.X, j + area.Y] = newData[i, j];

            TileLayer.TileCanvas.RefreshAll();
        }
        public override void Do()
        {
            base.Do();

            oldSelection = TileLayer.Selection;
            TileLayer.Selection = null;

            oldData = new int[oldSelection.Area.Width, oldSelection.Area.Height];
            for (int i = 0; i < oldSelection.Area.Width; i++)
            {
                for (int j = 0; j < oldSelection.Area.Height; j++)
                {
                    oldData[i, j] = TileLayer.Tiles[i + oldSelection.Area.X, j + oldSelection.Area.Y];
                    TileLayer.Tiles[i + oldSelection.Area.X, j + oldSelection.Area.Y] = oldSelection.Under[i, j];
                }
            }

            TileLayer.TileCanvas.RefreshAll();
        }