public void OnSceneGUI()
        {
            if (!MyAutoTileMap.IsInitialized)
            {
                return;
            }

            DoToolBar();

            Rect rAutoTileMap = new Rect(MyAutoTileMap.transform.position.x, MyAutoTileMap.transform.position.y, MyAutoTileMap.MapTileWidth * MyAutoTileMap.Tileset.TileWorldWidth, -MyAutoTileMap.MapTileHeight * MyAutoTileMap.Tileset.TileWorldHeight);

            UtilsGuiDrawing.DrawRectWithOutline(rAutoTileMap, new Color(0f, 0f, 0f, 0f), new Color(1f, 1f, 1f, 1f));
            if (m_showCollisions)
            {
                DrawCollisions();
            }

            if (s_isEditModeOn)
            {
                int controlID = GUIUtility.GetControlID(FocusType.Passive);
                HandleUtility.AddDefaultControl(controlID);
                EventType currentEventType = Event.current.GetTypeForControl(controlID);
                bool      skip             = false;
                int       saveControl      = GUIUtility.hotControl;

                if (currentEventType == EventType.Layout)
                {
                    skip = true;
                }
                else if (currentEventType == EventType.ScrollWheel)
                {
                    skip = true;
                }

                if (!skip)
                {
                    EditorGUIUtility.AddCursorRect(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), MouseCursor.Arrow);
                    GUIUtility.hotControl = controlID;

                    if (Event.current.type == EventType.MouseUp && Event.current.button == 1)
                    {
                        s_brushMode = eBrushMode.Paint;
                    }
                    m_tilesetComponent.OnSceneGUI();

                    if (currentEventType == EventType.MouseDrag && Event.current.button < 2) // 2 is for central mouse button
                    {
                        // avoid dragging the map
                        Event.current.Use();
                    }
                }

                GUIUtility.hotControl = saveControl;

                if (GUI.changed)
                {
                    EditorUtility.SetDirty(target);
                }
            }
        }
        private void _DoToolbarButton(Rect rToolBtn, ToolIcons.eToolIcon toolIcon)
        {
            int   iconPadding  = 6;
            Rect  rToolIcon    = new Rect(rToolBtn.x + iconPadding, rToolBtn.y + iconPadding, rToolBtn.size.y - 2 * iconPadding, rToolBtn.size.y - 2 * iconPadding);
            Color activeColor  = new Color(1f, 1f, 1f, 0.8f);
            Color disableColor = new Color(1f, 1f, 1f, 0.4f);

            switch (toolIcon)
            {
            case ToolIcons.eToolIcon.Pencil:
                GUI.color = s_brushMode == eBrushMode.Paint ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Paint")))
                {
                    s_brushMode = eBrushMode.Paint;
                    MyAutoTileMap.BrushGizmo.Clear();
                    MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction();
                    MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, m_tilesetComponent.SelectedTileIdx, MyAutoTileMap.BrushGizmo.SelectedLayer);
                }
                break;

            case ToolIcons.eToolIcon.Erase:
                GUI.color = s_brushMode == eBrushMode.Erase ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Erase")))
                {
                    s_brushMode = eBrushMode.Erase;
                    MyAutoTileMap.BrushGizmo.Clear();
                    MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction();
                    MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, -1, MyAutoTileMap.BrushGizmo.SelectedLayer);
                }
                break;

            case ToolIcons.eToolIcon.Undo:
                GUI.color = MyAutoTileMap.BrushGizmo.CanUndo()? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", " Undo Last Brush Action (Shift + Z)")))
                {
                    MyAutoTileMap.BrushGizmo.UndoAction();
                }
                break;

            case ToolIcons.eToolIcon.Redo:
                GUI.color = MyAutoTileMap.BrushGizmo.CanRedo()? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", " Redo Last Brush Action (Shift + Y)")))
                {
                    MyAutoTileMap.BrushGizmo.RedoAction();
                }
                break;

            case ToolIcons.eToolIcon.Info:
                GUI.color = m_displayHelpBox ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", " Display Help (F1)")))
                {
                    m_displayHelpBox = !m_displayHelpBox;
                }
                break;
            }
            GUI.color = Color.white;
            GUI.DrawTexture(rToolIcon, ToolIcons.GetToolTexture(toolIcon));
        }
 private void OnTileSelectionChanged(TilesetComponent source, int newTileId, int tilesetSelStart, int tilesetSelEnd)
 {
     s_brushMode = eBrushMode.Paint;
 }
Esempio n. 4
0
        private void _DoToolbarButton(Rect rToolBtn, ToolIcons.eToolIcon toolIcon)
        {
            BrushBehaviour brush        = BrushBehaviour.GetOrCreateBrush((Tilemap)target);
            int            iconPadding  = 6;
            Rect           rToolIcon    = new Rect(rToolBtn.x + iconPadding, rToolBtn.y + iconPadding, rToolBtn.size.y - 2 * iconPadding, rToolBtn.size.y - 2 * iconPadding);
            Color          activeColor  = new Color(1f, 1f, 1f, 0.8f);
            Color          disableColor = new Color(1f, 1f, 1f, 0.4f);

            switch (toolIcon)
            {
            case ToolIcons.eToolIcon.Pencil:
                GUI.color = GetBrushMode() == eBrushMode.Paint ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Paint")))
                {
                    s_brushMode = eBrushMode.Paint;
                }
                break;

            case ToolIcons.eToolIcon.Erase:
                GUI.color = GetBrushMode() == eBrushMode.Erase ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Erase (Hold Shift)")))
                {
                    s_brushMode = eBrushMode.Erase;
                }
                break;

            case ToolIcons.eToolIcon.Fill:
                GUI.color = GetBrushMode() == eBrushMode.Fill ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Fill (Double click)")))
                {
                    s_brushMode = eBrushMode.Fill;
                }
                break;

            case ToolIcons.eToolIcon.FlipV:
                GUI.color = s_brushFlipV ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Flip Vertical (" + ShortcutKeys.k_FlipV + ")")))
                {
                    brush.FlipV();
                    s_brushFlipV = !s_brushFlipV;
                }
                break;

            case ToolIcons.eToolIcon.FlipH:
                GUI.color = s_brushFlipH ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Flip Horizontal (" + ShortcutKeys.k_FlipH + ")")))
                {
                    brush.FlipH();
                    s_brushFlipH = !s_brushFlipH;
                }
                break;

            case ToolIcons.eToolIcon.Rot90:
                GUI.color = s_brushRot90 ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", "Rotate 90 clockwise (" + ShortcutKeys.k_Rot90 + "); anticlockwise (" + ShortcutKeys.k_Rot90Back + ")")))
                {
                    if (!s_brushRot90)
                    {
                        brush.Rot90();
                    }
                    else
                    {
                        brush.Rot90Back();
                    }
                    s_brushRot90 = !s_brushRot90;
                }
                break;

            case ToolIcons.eToolIcon.Info:
                GUI.color = m_displayHelpBox ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", " Display Help (F1)")))
                {
                    m_displayHelpBox = !m_displayHelpBox;
                }
                break;

            case ToolIcons.eToolIcon.Refresh:
                GUI.color = m_displayHelpBox ? activeColor : disableColor;
                if (GUI.Button(rToolBtn, new GUIContent("", " Refresh Tilemap (F5)")))
                {
                    TilemapGroup tilemapGroup = Selection.activeGameObject.GetComponent <TilemapGroup>();
                    if (tilemapGroup)
                    {
                        foreach (Tilemap tilemap in tilemapGroup.Tilemaps)
                        {
                            tilemap.Refresh(true, true, true, true);
                        }
                    }
                    else
                    {
                        m_tilemap.Refresh(true, true, true, true);
                    }
                }
                break;
            }
            GUI.color = Color.white;
            GUI.DrawTexture(rToolIcon, ToolIcons.GetToolTexture(toolIcon));
        }
Esempio n. 5
0
 void ResetBrushMode()
 {
     s_brushMode  = eBrushMode.Paint;
     s_brushFlipH = s_brushFlipV = s_brushRot90 = false;
 }
Esempio n. 6
0
 private void _DoToolbarButton(Rect rToolBtn, ToolIcons.eToolIcon toolIcon)
 {
     int iconPadding = 6;
     Rect rToolIcon = new Rect(rToolBtn.x + iconPadding, rToolBtn.y + iconPadding, rToolBtn.size.y - 2 * iconPadding, rToolBtn.size.y - 2 * iconPadding);
     Color activeColor = new Color(1f, 1f, 1f, 0.8f);
     Color disableColor = new Color(1f, 1f, 1f, 0.4f);
     switch (toolIcon)
     {
         case ToolIcons.eToolIcon.Pencil:
             GUI.color = s_brushMode == eBrushMode.Paint ? activeColor : disableColor;
             if (GUI.Button(rToolBtn, new GUIContent("", "Paint")))
             {
                 s_brushMode = eBrushMode.Paint;
                 MyAutoTileMap.BrushGizmo.Clear();
                 MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction();
                 MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, m_tilesetComponent.SelectedTileIdx, MyAutoTileMap.BrushGizmo.SelectedLayer);
             }
             break;
         case ToolIcons.eToolIcon.Erase:
             GUI.color = s_brushMode == eBrushMode.Erase ? activeColor : disableColor;
             if (GUI.Button(rToolBtn, new GUIContent("", "Erase")))
             {
                 s_brushMode = eBrushMode.Erase;
                 MyAutoTileMap.BrushGizmo.Clear();
                 MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction();
                 MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, -1, MyAutoTileMap.BrushGizmo.SelectedLayer);
             }
             break;
         case ToolIcons.eToolIcon.Undo:
             GUI.color = MyAutoTileMap.BrushGizmo.CanUndo()? activeColor : disableColor;
             if (GUI.Button(rToolBtn, new GUIContent("", " Undo Last Brush Action (Shift + Z)")))
             {
                 MyAutoTileMap.BrushGizmo.UndoAction();
             }
             break;
         case ToolIcons.eToolIcon.Redo:
             GUI.color = MyAutoTileMap.BrushGizmo.CanRedo()? activeColor : disableColor;
             if (GUI.Button(rToolBtn, new GUIContent("", " Redo Last Brush Action (Shift + Y)")))
             {
                 MyAutoTileMap.BrushGizmo.RedoAction();
             }
             break;
         case ToolIcons.eToolIcon.Info:
             GUI.color = m_displayHelpBox ? activeColor : disableColor;
             if (GUI.Button(rToolBtn, new GUIContent("", " Display Help (F1)")))
             {
                 m_displayHelpBox = !m_displayHelpBox;
             }
             break;
     }
     GUI.color = Color.white;
     GUI.DrawTexture(rToolIcon, ToolIcons.GetToolTexture(toolIcon));
 }
Esempio n. 7
0
 private void OnTileSelectionChanged(TilesetComponent source, int newTileId, int tilesetSelStart, int tilesetSelEnd)
 {
     s_brushMode = eBrushMode.Paint;
 }
Esempio n. 8
0
        public void OnSceneGUI()
        {
            if( !MyAutoTileMap.IsInitialized )
            {
                return;
            }

            DoToolBar();

            Rect rAutoTileMap = new Rect(MyAutoTileMap.transform.position.x, MyAutoTileMap.transform.position.y, MyAutoTileMap.MapTileWidth * MyAutoTileMap.CellSize.x, -MyAutoTileMap.MapTileHeight * MyAutoTileMap.CellSize.y);
            UtilsGuiDrawing.DrawRectWithOutline( rAutoTileMap, new Color(0f, 0f, 0f, 0f), new Color(1f, 1f, 1f, 1f));
            if( m_showCollisions )
            {
                DrawCollisions();
            }

            if (s_isEditModeOn)
            {
                int controlID = GUIUtility.GetControlID(FocusType.Passive);
                HandleUtility.AddDefaultControl(controlID);
                EventType currentEventType = Event.current.GetTypeForControl(controlID);
                bool skip = false;
                int saveControl = GUIUtility.hotControl;

                if (currentEventType == EventType.Layout) { skip = true; }
                else if (currentEventType == EventType.ScrollWheel) { skip = true; }

                if (!skip)
                {
                    EditorGUIUtility.AddCursorRect(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), MouseCursor.Arrow);
                    GUIUtility.hotControl = controlID;

                    if (Event.current.type == EventType.MouseUp && Event.current.button == 1)
                    {
                        s_brushMode = eBrushMode.Paint;
                    }
                    m_tilesetComponent.OnSceneGUI();

                    if (currentEventType == EventType.MouseDrag && Event.current.button < 2) // 2 is for central mouse button
                    {
                        // avoid dragging the map
                        Event.current.Use();
                    }
                }

                GUIUtility.hotControl = saveControl;

                if (GUI.changed)
                {
                    EditorUtility.SetDirty(target);
                }
            }
        }