Inheritance: EditorWindow
コード例 #1
0
        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;
        }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
        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;
        }
コード例 #4
0
 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;
 }
コード例 #5
0
ファイル: TileMapMenu.cs プロジェクト: Gugs23/AlchemyOld
    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;
    }
コード例 #6
0
        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);
        }
コード例 #7
0
    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;
    }
コード例 #8
0
    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;
    }
コード例 #9
0
        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;
        }
コード例 #10
0
 public override Boolean Interact(TileMapEditor Editor, Vector2 ContextMenuTilePosition)
 {
     return ShowButton(Editor, ContextMenuTilePosition, MenuGridLocation, "Fill All");
 }
コード例 #11
0
 /// <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);
コード例 #12
0
        /// <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));
        }
コード例 #13
0
        /// <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));
        }
コード例 #14
0
 public override Boolean Action(TileMapEditor Editor, Vector2 ContextMenuTilePosition)
 {
     Editor.Draw(ContextMenuTilePosition, SelectedTile);
     return true;
 }
コード例 #15
0
        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;
        }