public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { for (var i = Editor.TilesParent.childCount - 1; i >= 0; i--) DestroyImmediate(Editor.TilesParent.GetChild(i).gameObject); return true; }
public override void OnInspectorGUI() { if (HTGUILayout.Button("Open map editor", Color.green, Screen.width - 25)) { TileMapEditor win = EditorWindow.GetWindow <TileMapEditor>(false, "Tile Map editor", true); win.map = (TileMap)target; } }
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) { for (var Column = 0; Column < Editor.TileMap.Columns; Column++) { for (var Row = 0; Row < Editor.TileMap.Rows; Row++) { var TableTilePosition = new Vector2(Column, Row); if (!Editor.ContainsTile(TableTilePosition)) Editor.Draw(TableTilePosition); } } return true; }
static void TiledMapFactoryToolsCreate() { GameObject map = new GameObject("NewTileMap"); map.AddComponent <TileMap>(); GameObject mapPrefab = PrefabUtility.CreatePrefab("Assets/NewTileMap.prefab", map, ReplacePrefabOptions.ReplaceNameBased); DestroyImmediate(map); TileMapEditor win = EditorWindow.GetWindow <TileMapEditor>(false, "Map editor", true); win.map = (TileMap)mapPrefab.GetComponent <TileMap>(); Selection.activeGameObject = mapPrefab; }
public TileDragHandler(TileManager tileManager, TileMapEditor mapEditor, TileMap map, int subLayerIndex, TileObjectSO tileObjectSO, Direction selectedDir, Vector3Int snappedPosition) { this.tileManager = tileManager; this.mapEditor = mapEditor; this.map = map; this.subLayerIndex = subLayerIndex; this.tileObjectSO = tileObjectSO; this.selectedDir = selectedDir; startPosition = snappedPosition; curPosition = snappedPosition; var tile = CreateGhost(); tile.transform.position = new Vector3(snappedPosition.x, 0, snappedPosition.y); dragTiles.Insert(0, tile); }
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; }
public override Boolean Interact(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { ButtonSize = OriginalButtonSize; var TilesCount = Editor.TileMap.CurrentTileSet.Tiles.Count; var ButtonGridLocationAngleStep = 0F; if (TilesCount > 1) ButtonGridLocationAngleStep = 360F / TilesCount; var CurrentAngle = 270 + ButtonGridLocationAngleStep / 2; ButtonSize /= Mathf.Sqrt(TilesCount / 2F); for (int i = 0; i < TilesCount; i++) { var ButtonGridLocation = new Vector2(Mathf.Cos(CurrentAngle * Mathf.Deg2Rad), Mathf.Sin(CurrentAngle * Mathf.Deg2Rad)); if (ShowTileButton(Editor, Editor.TileMap.CurrentTileSet.Tiles[i], ContextMenuTilePosition, ButtonGridLocation)) return true; CurrentAngle += ButtonGridLocationAngleStep; } return false; }
public override Boolean Interact(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { return ShowButton(Editor, ContextMenuTilePosition, MenuGridLocation, "Fill All"); }
/// <summary> /// Interacts with the user for input. /// Returns whether an action should be performed. /// Notice that even if true is returned, it cannot be assumed that Action will be called afterwards. /// </summary> /// <returns></returns> public abstract Boolean Interact(TileMapEditor Editor, Vector2 ContextMenuTilePosition);
/// <summary> /// Utility function that shows an iconic button. /// </summary> /// <param name="Editor"></param> /// <param name="ContextMenuTilePosition"></param> /// <param name="ButtonGridLocation"></param> /// <param name="Icon"></param> /// <returns></returns> protected Boolean ShowIconicButton(TileMapEditor Editor, Vector2 ContextMenuTilePosition, Vector2 ButtonGridLocation, Texture Icon) { var ContextMenuScreenPosition = HandleUtility.WorldToGUIPoint(Editor.TilePositionToWorldPosition(ContextMenuTilePosition)); var ButtonScreenPosition = PositionFromGridLocation(ButtonGridLocation) + ContextMenuScreenPosition; //GUI.DrawTexture(new Rect(ButtonScreenPosition.x, ButtonScreenPosition.y, ButtonSize.y, ButtonSize.y), Icon, ScaleMode.ScaleToFit); return (GUI.Button(new Rect(ButtonScreenPosition.x, ButtonScreenPosition.y, ButtonSize.y, ButtonSize.y), Icon)); }
/// <summary> /// Utility function that shows a button with the given label. /// </summary> /// <param name="Editor"></param> /// <param name="ContextMenuTilePosition"></param> /// <param name="ButtonGridLocation"></param> /// <param name="Label"></param> /// <returns></returns> protected Boolean ShowButton(TileMapEditor Editor, Vector2 ContextMenuTilePosition, Vector2 ButtonGridLocation, String Label) { var ContextMenuScreenPosition = HandleUtility.WorldToGUIPoint(Editor.TilePositionToWorldPosition(ContextMenuTilePosition)); var ButtonScreenPosition = PositionFromGridLocation(ButtonGridLocation) + ContextMenuScreenPosition; return (GUI.Button(new Rect(ButtonScreenPosition.x, ButtonScreenPosition.y, ButtonSize.x, ButtonSize.y), Label)); }
public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition) { Editor.Draw(ContextMenuTilePosition, SelectedTile); return true; }
private Boolean ShowTileButton(TileMapEditor Editor, GameObject Tile, Vector2 ContextMenuTilePosition, Vector2 ButtonGridLocation) { if (!TileScreenShots.ContainsKey(Tile)) CaptureTile(Tile); if (TileScreenShots.ContainsKey(Tile)) { if (ShowIconicButton(Editor, ContextMenuTilePosition, ButtonGridLocation, TileScreenShots[Tile])) { SelectedTile = Tile; return true; } } return false; }