public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); var TempStart = new Vector2(Mathf.Clamp(0, ContextMenuTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, ContextMenuTilePosition.y, Editor.TileMap.Columns)); var CurrentTilePosition = Editor.GetCurrentTilePosition(); var TempEnd = new Vector2(Mathf.Clamp(0, CurrentTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, CurrentTilePosition.y, Editor.TileMap.Columns)); var RectangleStart = new Vector2(Mathf.Min(TempStart.x, TempEnd.x), Mathf.Min(TempStart.y, TempEnd.y)); var RectangleEnd = new Vector2(Mathf.Max(TempStart.x, TempEnd.x), Mathf.Max(TempStart.y, TempEnd.y)); for (var i = 0; i <= 1; i++) { for (var j = (Int32) RectangleStart.y; j <= (Int32) RectangleEnd.y; j++) { var Column = RectangleStart.x + i*(RectangleEnd.x - RectangleStart.x); var Row = j; var TableTilePosition = new Vector2(Column, Row); if (!Editor.ContainsTile(TableTilePosition)) Editor.AddMarkedSelectedPosition(TableTilePosition); } } for (var j = 0; j <= 1; j++) { for (var i = (Int32) RectangleStart.x; i <= (Int32) RectangleEnd.x; i++) { var Column = i; var Row = RectangleStart.y + j*(RectangleEnd.y - RectangleStart.y); var TableTilePosition = new Vector2(Column, Row); if (!Editor.ContainsTile(TableTilePosition)) Editor.AddMarkedSelectedPosition(TableTilePosition); } } if (MouseClicked(MouseButton.Left)) { foreach (var SelectedPosition in Editor.SelectedPositions) Editor.Draw(SelectedPosition); Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); return true; } return false; }
public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); var LineStart = new Vector2(Mathf.Clamp(0, ContextMenuTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, ContextMenuTilePosition.y, Editor.TileMap.Columns)); var CurrentTilePosition = Editor.GetCurrentTilePosition(); var LineEnd = new Vector2(Mathf.Clamp(0, CurrentTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, CurrentTilePosition.y, Editor.TileMap.Columns)); var Width = (Int32)(LineEnd.x - LineStart.x); var Heigth = (Int32)(LineEnd.y - LineStart.y); var Maximum = Mathf.Max(Mathf.Abs(Width), Math.Abs(Heigth)); if ((Width != 0) || (Heigth != 0)) { var ColumnStep = Width / (Single)Maximum; var RowStep = Heigth / (Single)Maximum; for (int i = 0; i <= Maximum; i++) { var Column = Mathf.RoundToInt(LineStart.x + i * ColumnStep); var Row = Mathf.RoundToInt(LineStart.y + i * RowStep); var TableTilePosition = new Vector2(Column, Row); if (!Editor.ContainsTile(TableTilePosition)) Editor.AddMarkedSelectedPosition(TableTilePosition); } } else { if (!Editor.ContainsTile(LineStart)) Editor.AddMarkedSelectedPosition(LineStart); } if (MouseClicked(MouseButton.Left)) { foreach (var SelectedPosition in Editor.SelectedPositions) Editor.Draw(SelectedPosition); Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); return true; } return false; }
public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); var LineStart = new Vector2(Mathf.Clamp(0, ContextMenuTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, ContextMenuTilePosition.y, Editor.TileMap.Columns)); var CurrentTilePosition = Editor.GetCurrentTilePosition(); var LineEnd = new Vector2(Mathf.Clamp(0, CurrentTilePosition.x, Editor.TileMap.Rows), Mathf.Clamp(0, CurrentTilePosition.y, Editor.TileMap.Columns)); var Width = (Int32)(LineEnd.x - LineStart.x); var Heigth = (Int32)(LineEnd.y - LineStart.y); var RatioDivisor = GreatestCommonDivisor(Mathf.Abs(Width), Mathf.Abs(Heigth)); if (RatioDivisor != 0) { for (int i = 0; i <= RatioDivisor; i++) { var Column = (Int32)(LineStart.x + i*(Width/RatioDivisor)); var Row = (Int32)(LineStart.y + i*(Heigth/RatioDivisor)); var TableTilePosition = new Vector2(Column, Row); if (!Editor.ContainsTile(TableTilePosition)) Editor.AddMarkedSelectedPosition(TableTilePosition); } } else { if (!Editor.ContainsTile(LineStart)) Editor.AddMarkedSelectedPosition(LineStart); } if (MouseClicked(MouseButton.Left)) { foreach (var SelectedPosition in Editor.SelectedPositions) Editor.Draw(SelectedPosition); Editor.MarkedPositions.Clear(); Editor.SelectedPositions.Clear(); return true; } return false; }