public void Redo() { Rectangle position = PreviewRectangle.Clone(); float y = position.Y; float? rightEdge = null; while (Context.PreviewScene.Bounds.Contains(position) && IsEmptyCeilingSpace(position)) { while (Context.PreviewScene.Bounds.Contains(position) && IsEmptyCeilingSpace(position) && (rightEdge.HasValue == false || (position.X <= rightEdge.Value))) { var tile = new SerializedCeiling() { Bounds = position.Clone() }; previewTiles.Add(tile); tile.Rehydrate(true); Context.CurrentLevelDefinition.Things.Add(tile); Context.PreviewScene.Add(tile.HydratedThing); position.MoveBy(Context.ScenePanel.PixelSize.W, 0); } if (rightEdge.HasValue == false) { rightEdge = position.X - Context.ScenePanel.PixelSize.W; } position = PreviewRectangle.Clone(); position.MoveTo(new Location(position.X, ++y)); } }
public void Do() { PreviewRectangle = Context.Cursor.Bounds.Clone(); PreviewRectangle.Pad(.1f); Redo(); }