コード例 #1
0
    public void HandleKeyboard()
    {
        if (Event.current.keyCode == KeyCode.Alpha1)
        {
            brushType = BrushType.Brush1;
        }
        if (Event.current.keyCode == KeyCode.Alpha2)
        {
            brushType = BrushType.Brush3;
        }
        if (Event.current.keyCode == KeyCode.Alpha3)
        {
            brushType = BrushType.Brush5;
        }
        if (Event.current.keyCode == KeyCode.RightBracket)
        {
            brushType = (BrushType)((int)brushType < 2 ? (int)brushType + 1 : 0);
        }
        if (Event.current.keyCode == KeyCode.LeftBracket)
        {
            brushType = (BrushType)((int)brushType > 0 ? (int)brushType - 1 : 2);
        }
        if (Event.current.keyCode == KeyCode.RightArrow && (Event.current.control || Event.current.command) && Event.current.type == EventType.keyDown)
        {
            selection = null;
            selectionActive = false;
            ragePixelSprite.shiftCell(1, true);
            ragePixelSprite.refreshMesh();
            animStripGUI.isDirty = true;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.LeftArrow && (Event.current.control || Event.current.command) && Event.current.type == EventType.keyDown)
        {
            selection = null;
            selectionActive = false;
            ragePixelSprite.shiftCell(-1, true);
            ragePixelSprite.refreshMesh();
            animStripGUI.isDirty = true;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.Z && (Event.current.control || Event.current.command) && Event.current.alt && Event.current.type == EventType.keyDown)
        {
            DoPaintUndo();
            animStripGUI.isDirty = true;
            spriteSheetGUI.isDirty = true;
            atlasTextureIsDirty = true;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.D && (Event.current.control || Event.current.command) && Event.current.alt && Event.current.type == EventType.keyDown && mode == Mode.Select)
        {
            backBuffer.PasteBitmap(selection.X, selection.Y, frontBuffer);
            animStripGUI.isDirty = true;
            spriteSheetGUI.isDirty = true;
            atlasTextureIsDirty = true;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.X && (Event.current.control || Event.current.command) && Event.current.alt && Event.current.type == EventType.keyDown && mode == Mode.Select)
        {
            SavePaintUndo();
            RagePixelUtil.Settings.clipboard = new RagePixelBitmap(frontBuffer.pixels, frontBuffer.Width(), frontBuffer.Height());
            selectionActive = false;
            Rect currentUV = ragePixelSprite.GetCurrentCell().uv;
            Rect selectionUV = new Rect(
                currentUV.xMin + (float)selection.X / (float)spritesheetTexture.width,
                currentUV.yMin + (float)selection.Y / (float)spritesheetTexture.height,
                (float)(selection.X2 - selection.X + 1) / (float)spritesheetTexture.width,
                (float)(selection.Y2 - selection.Y + 1) / (float)spritesheetTexture.height
                );
            RagePixelUtil.clearPixels(spritesheetTexture, selectionUV);
            spritesheetTexture.Apply();
            atlasTextureIsDirty = true;

            selection = null;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.C && (Event.current.control || Event.current.command) && Event.current.alt && Event.current.type == EventType.keyDown && mode == Mode.Select)
        {
            RagePixelUtil.Settings.clipboard = new RagePixelBitmap(frontBuffer.pixels, frontBuffer.Width(), frontBuffer.Height());
            selection = null;
            selectionActive = false;
            Event.current.Use();
        }
        if (Event.current.keyCode == KeyCode.V && (Event.current.control || Event.current.command) && Event.current.alt && Event.current.type == EventType.keyDown)
        {
            if (RagePixelUtil.Settings.clipboard != null)
            {
                mode = Mode.Select;

                SavePaintUndo();

                Rect spriteUV = ragePixelSprite.GetCurrentCell().uv;

                selection = new RagePixelTexelRect(
                    0,
                    0,
                    Mathf.Min(RagePixelUtil.Settings.clipboard.Width(), ragePixelSprite.GetCurrentRow().pixelSizeX),
                    Mathf.Min(RagePixelUtil.Settings.clipboard.Height(), ragePixelSprite.GetCurrentRow().pixelSizeY)
                    );

                backBuffer = GrabSprite(spriteUV);
                frontBuffer = RagePixelUtil.Settings.clipboard;

                frontBufferPosition = new RagePixelTexel(0, 0);
                frontBufferDragStartPosition = new RagePixelTexel(0, 0);

                PasteBitmapToSpritesheetAlpha(frontBufferPosition, spriteUV, frontBuffer);

                selectionActive = true;
                spritesheetTexture.Apply();

                Event.current.Use();
            }
        }
    }
コード例 #2
0
 public RagePixelBitmap GrabRectFromSpritesheet(RagePixelTexelRect rect)
 {
     return new RagePixelBitmap(
         ragePixelSprite.spriteSheet.getImage(
             ragePixelSprite.GetCurrentRowIndex(), ragePixelSprite.GetCurrentCellIndex(),
             rect.X,
             rect.Y,
             rect.Width(),
             rect.Height()
             ),
         rect.Width(),
         rect.Height()
         );
 }
コード例 #3
0
 public void CutRectInSpritesheet(RagePixelTexelRect rect, Rect spriteUV)
 {
     for (int y = rect.Y; y <= rect.Y2; y++)
     {
         for (int x = rect.X; x <= rect.X2; x++)
         {
             spritesheetTexture.SetPixel(
                 (int)(spriteUV.x * spritesheetTexture.width) + x,
                 (int)(spriteUV.y * spritesheetTexture.height) + y,
                 new Color(0f, 0f, 0f, 0f)
                 );
         }
     }
 }
コード例 #4
0
    public override void OnInspectorGUI()
    {
        InvokeOnSelectedEvent();
        GUILayout.Space(5f);

        if (ragePixelSprite.spriteSheet == null)
        {
            ragePixelSprite.spriteSheet = (RagePixelSpriteSheet)EditorGUILayout.ObjectField("Sprite Sheet", ragePixelSprite.spriteSheet, typeof(RagePixelSpriteSheet), false, null);
            if (ragePixelSprite.spriteSheet != null)
            {
                if (ragePixelSprite.currentRowKey == 0 || ragePixelSprite.currentCellKey == 0)
                {
                    ragePixelSprite.currentRowKey = ragePixelSprite.spriteSheet.rows[0].key;
                    ragePixelSprite.currentCellKey = ragePixelSprite.spriteSheet.rows[0].cells[0].key;
                }
                _spritesheetTexture = null;
                ragePixelSprite.meshIsDirty = true;
                ragePixelSprite.refreshMesh();
            }
        }
        else if (!Application.isPlaying)
        {
            int spriteSheetGUIMargin = 7;

            RagePixelSpriteSheet oldSheet = ragePixelSprite.spriteSheet;
            ragePixelSprite.spriteSheet =
                (RagePixelSpriteSheet)EditorGUILayout.ObjectField(
                    "Sprite sheet",
                    ragePixelSprite.spriteSheet,
                    typeof(RagePixelSpriteSheet),
                    false
                    );

            if (ragePixelSprite.spriteSheet != null)
            {

                if (oldSheet != ragePixelSprite.spriteSheet)
                {
                    if (ragePixelSprite.currentRowKey == 0 || ragePixelSprite.currentCellKey == 0)
                    {
                        ragePixelSprite.currentRowKey = ragePixelSprite.spriteSheet.rows[0].key;
                        ragePixelSprite.currentCellKey = ragePixelSprite.spriteSheet.rows[0].cells[0].key;
                    }
                    _spritesheetTexture = null;
                    ragePixelSprite.meshIsDirty = true;
                    ragePixelSprite.refreshMesh();
                }

                spriteSheetGUI.maxWidth = Screen.width - spriteSheetGUIMargin;
                spriteSheetGUI.spriteSheet = ragePixelSprite.spriteSheet;
                spriteSheetGUI.currentRowKey = ragePixelSprite.currentRowKey;
                animStripGUI.currentCellKey = ragePixelSprite.currentCellKey;

                RagePixelSprite.Mode oldMode = ragePixelSprite.mode;
                ragePixelSprite.mode =
                    (RagePixelSprite.Mode)EditorGUILayout.EnumPopup(
                        "Mode",
                        ragePixelSprite.mode
                        );

                if (oldMode != ragePixelSprite.mode)
                {
                    mode = Mode.Default;
                    selection = null;
                    selectionActive = false;
                    ragePixelSprite.meshIsDirty = true;
                    ragePixelSprite.refreshMesh();
                    ragePixelSprite.SnapToScale();
                }

                if (ragePixelSprite.mode == RagePixelSprite.Mode.Grid9)
                {
                    EditorGUI.indentLevel = 1;
                    bool changed = GUI.changed;

                    ragePixelSprite.grid9Left = Mathf.Max(Mathf.Min(EditorGUILayout.IntField("Left Margin", ragePixelSprite.grid9Left), ragePixelSprite.pixelSizeX - ragePixelSprite.grid9Right, ragePixelSprite.GetCurrentRow().pixelSizeX - ragePixelSprite.grid9Right - 1), 0);
                    ragePixelSprite.grid9Top = Mathf.Max(Mathf.Min(EditorGUILayout.IntField("Top Margin", ragePixelSprite.grid9Top), ragePixelSprite.pixelSizeY - ragePixelSprite.grid9Bottom, ragePixelSprite.GetCurrentRow().pixelSizeY - ragePixelSprite.grid9Bottom - 1), 0);
                    ragePixelSprite.grid9Right = Mathf.Max(Mathf.Min(EditorGUILayout.IntField("Right Margin", ragePixelSprite.grid9Right), ragePixelSprite.pixelSizeX - ragePixelSprite.grid9Left, ragePixelSprite.GetCurrentRow().pixelSizeX - ragePixelSprite.grid9Left - 1), 0);
                    ragePixelSprite.grid9Bottom = Mathf.Max(Mathf.Min(EditorGUILayout.IntField("Bottom Margin", ragePixelSprite.grid9Bottom), ragePixelSprite.pixelSizeY - ragePixelSprite.grid9Top, ragePixelSprite.GetCurrentRow().pixelSizeY - ragePixelSprite.grid9Top - 1), 0);

                    if (changed != GUI.changed)
                    {
                        ragePixelSprite.meshIsDirty = true;
                        ragePixelSprite.refreshMesh();
                    }

                    showGrid9Gizmo = EditorGUILayout.Toggle("Show Gizmos", showGrid9Gizmo);
                    EditorGUI.indentLevel = 0;
                }

                RagePixelSprite.PivotMode oldPivotMode = ragePixelSprite.pivotMode;
                ragePixelSprite.pivotMode = (RagePixelSprite.PivotMode)EditorGUILayout.EnumPopup("Pivot", ragePixelSprite.pivotMode);
                if (oldPivotMode != ragePixelSprite.pivotMode)
                {
                    ragePixelSprite.meshIsDirty = true;
                    ragePixelSprite.refreshMesh();
                    ragePixelSprite.SnapToScale();
                }

                Color oldColor = ragePixelSprite.tintColor;
                ragePixelSprite.tintColor = EditorGUILayout.ColorField("Tint Color", ragePixelSprite.tintColor);
                if (ragePixelSprite.tintColor != oldColor)
                {
                    ragePixelSprite.vertexColorsAreDirty = true;
                    ragePixelSprite.refreshMesh();
                }

                ragePixelSprite.animationMode = (RagePixelSprite.AnimationMode)EditorGUILayout.EnumPopup("Animation Mode", ragePixelSprite.animationMode);
                ragePixelSprite.playAnimation = EditorGUILayout.Toggle("Play On Awake", ragePixelSprite.playAnimation);

                GUILayout.Space(7f);

                spriteSheetGUI.spriteSheet = ragePixelSprite.spriteSheet;
                spriteSheetGUI.currentRowKey = ragePixelSprite.currentRowKey;

                if (spriteSheetGUI.HandleGUIEvent(Event.current))
                {
                    ragePixelSprite.currentRowKey = spriteSheetGUI.currentRowKey;
                    ragePixelSprite.currentCellKey = ragePixelSprite.spriteSheet.GetRow(ragePixelSprite.currentRowKey).cells[0].key;
                    ragePixelSprite.pixelSizeX = ragePixelSprite.GetCurrentRow().pixelSizeX;
                    ragePixelSprite.pixelSizeY = ragePixelSprite.GetCurrentRow().pixelSizeY;
                    ragePixelSprite.meshIsDirty = true;
                    ragePixelSprite.refreshMesh();
                    Repaint();
                }

                spriteSheetGUI.positionX = spriteSheetGUIMargin;

                Rect spriteSheetR = EditorGUILayout.BeginVertical();
                GUILayout.Space(spriteSheetGUI.pixelHeight);

                EditorGUI.DrawPreviewTexture(
                    new Rect(
                        spriteSheetGUIMargin,
                        spriteSheetR.yMin,
                        spriteSheetGUI.pixelWidth,
                        spriteSheetR.height
                        ), spriteSheetGUI.spriteSheetTexture);

                EditorGUILayout.EndVertical();
                if ((int)spriteSheetR.yMin > 0)
                {
                    spriteSheetGUI.positionY = (int)spriteSheetR.yMin;
                }

                Rect rButtons = EditorGUILayout.BeginVertical();

                GUILayout.Space(defaultSceneButtonWidth + 5f);

                GUI.color = RagePixelGUIIcons.greenButtonColor;
                if (GUI.Button(new Rect(spriteSheetGUIMargin, rButtons.yMin + 2f, defaultSceneButtonWidth + 6f, defaultSceneButtonHeight), "NEW"))
                {
                    int index = ragePixelSprite.spriteSheet.GetIndex(spriteSheetGUI.currentRowKey);

                    RagePixelRow row =
                        ragePixelSprite.spriteSheet.AddRow(
                            RagePixelUtil.RandomKey(),
                            index + 1,
                            ragePixelSprite.GetCurrentRow().pixelSizeX,
                            ragePixelSprite.GetCurrentRow().pixelSizeY
                            );

                    RagePixelCell cell =
                        row.InsertCell(0, RagePixelUtil.RandomKey());

                    ragePixelSprite.currentRowKey = row.key;
                    ragePixelSprite.currentCellKey = cell.key;

                    RagePixelUtil.RebuildAtlas(ragePixelSprite.spriteSheet, true, "AddRow");
                    atlasTextureIsDirty = true;
                }

                GUI.color = RagePixelGUIIcons.redButtonColor;

                if (GUI.Button(new Rect(spriteSheetGUIMargin + defaultSceneButtonWidth + 6f, rButtons.yMin + 2f, defaultSceneButtonWidth + 6f, defaultSceneButtonHeight), "DEL"))
                {
                    if (ragePixelSprite.spriteSheet.rows.Length > 1)
                    {
                        if (EditorUtility.DisplayDialog("Delete selected sprite (no undo)?", "Are you sure?", "Delete", "Cancel"))
                        {
                            int index = ragePixelSprite.spriteSheet.GetIndex(spriteSheetGUI.currentRowKey);
                            ragePixelSprite.spriteSheet.RemoveRowByKey(spriteSheetGUI.currentRowKey);
                            ragePixelSprite.currentRowKey = ragePixelSprite.spriteSheet.rows[Mathf.Clamp(index, 0, ragePixelSprite.spriteSheet.rows.Length - 1)].key;
                            ragePixelSprite.pixelSizeX = ragePixelSprite.GetCurrentRow().pixelSizeX;
                            ragePixelSprite.pixelSizeY = ragePixelSprite.GetCurrentRow().pixelSizeY;
                            RagePixelUtil.RebuildAtlas(ragePixelSprite.spriteSheet, false, "DeleteRow");
                            ragePixelSprite.currentCellKey = ragePixelSprite.GetCurrentRow().cells[0].key;
                            ragePixelSprite.meshIsDirty = true;
                            ragePixelSprite.refreshMesh();
                            atlasTextureIsDirty = true;
                        }
                    }
                    else
                    {
                        EditorUtility.DisplayDialog("Cannot delete", "Cannot delete the last sprite.", "OK");
                    }
                }

                GUI.color = RagePixelGUIIcons.neutralButtonColor;
                if (GUI.Button(new Rect(spriteSheetGUIMargin + defaultSceneButtonWidth * 2f + 12f, rButtons.yMin + 2f, defaultSceneButtonWidth + 10f, defaultSceneButtonHeight), "EDIT"))
                {
                    if (ragePixelSprite.spriteSheet != null)
                    {
                        RagePixelSpriteSheetEditorWindow editorWindow = ScriptableObject.CreateInstance(typeof(RagePixelSpriteSheetEditorWindow)) as RagePixelSpriteSheetEditorWindow;
                        editorWindow.inspector = this;
                        if (ragePixelSprite != null)
                        {
                            editorWindow.selectedSprite = ragePixelSprite;
                        }
                        editorWindow.title = "Spritesheet";
                        editorWindow.spriteSheet = ragePixelSprite.spriteSheet;
                        editorWindow.Show();
                    }
                }
                EditorGUILayout.EndVertical();
                GUI.color = Color.white;

                GUILayout.Space(7f);
            }
        }
        else
        {
            GUILayout.Space(5f);
            EditorUtility.SetSelectedWireframeHidden(meshRenderer, true);
            GUILayout.Label("Inspector GUI disabled in play mode");
            GUILayout.Space(5f);
        }
    }
コード例 #5
0
    public void HandlePaintGUI()
    {
        int guiPosX = 5;
        int guiPosY = (int)(scenePixelHeight / 2f - defaultSceneButtonWidth * 5f * 0.5f);

        GUI.color = GetSceneButtonColor(mode == Mode.Default);
        if (GUI.Button(new Rect(guiPosX, guiPosY, defaultSceneButtonWidth, defaultSceneButtonWidth), RagePixelGUIIcons.Cursor))
        {
            selection = null;
            selectionActive = false;
            paintColorPickerGUI.gizmoVisible = false;
            mode = Mode.Default;
            Tools.current = Tool.Move;
        }

        GUI.color = GetSceneButtonColor(mode == Mode.Pen);
        if (GUI.Button(new Rect(guiPosX, guiPosY += defaultSceneButtonHeight, defaultSceneButtonWidth, defaultSceneButtonWidth), RagePixelGUIIcons.Pen))
        {
            selection = null;
            selectionActive = false;
            paintColorPickerGUI.gizmoVisible = true;
            mode = Mode.Pen;
            Tools.current = Tool.None;
        }
        if (mode == Mode.Pen)
        {

            GUI.color = GetSceneButtonColor(brushType == BrushType.Brush1);
            if (GUI.Button(new Rect(guiPosX + defaultSceneButtonWidth + 2, guiPosY, 9, 8), ""))
            {
                brushType = BrushType.Brush1;
            }

            GUI.color = GetSceneButtonColor(brushType == BrushType.Brush3);
            if (GUI.Button(new Rect(guiPosX + defaultSceneButtonWidth + 2, guiPosY + 10, 12, 10), ""))
            {
                brushType = BrushType.Brush3;
            }
            GUI.color = GetSceneButtonColor(brushType == BrushType.Brush5);
            if (GUI.Button(new Rect(guiPosX + defaultSceneButtonWidth + 2, guiPosY + 20, 15, 12), ""))
            {
                brushType = BrushType.Brush5;
            }
        }

        GUI.color = GetSceneButtonColor(mode == Mode.Fill);
        if (GUI.Button(new Rect(guiPosX, guiPosY += defaultSceneButtonWidth, defaultSceneButtonWidth, defaultSceneButtonWidth), RagePixelGUIIcons.Fill))
        {
            selection = null;
            selectionActive = false;
            paintColorPickerGUI.gizmoVisible = true;
            mode = Mode.Fill;
            Tools.current = Tool.None;
        }

        GUI.color = GetSceneButtonColor(mode == Mode.Select);
        if (ragePixelSprite.mode == RagePixelSprite.Mode.Grid9)
        {
            GUI.color = new Color(1f, 1f, 1f, 0.1f);
        }
        if (GUI.Button(new Rect(guiPosX, guiPosY += defaultSceneButtonWidth, defaultSceneButtonWidth, defaultSceneButtonWidth), RagePixelGUIIcons.Select) && ragePixelSprite.mode != RagePixelSprite.Mode.Grid9)
        {
            selection = null;
            selectionActive = false;
            mode = Mode.Select;
            Tools.current = Tool.None;
        }

        GUI.color = GetSceneButtonColor(mode == Mode.Resize);
        if (ragePixelSprite.mode == RagePixelSprite.Mode.Grid9)
        {
            GUI.color = new Color(1f, 1f, 1f, 0.1f);
        }
        if (GUI.Button(new Rect(guiPosX, guiPosY += defaultSceneButtonWidth, defaultSceneButtonWidth, defaultSceneButtonWidth), RagePixelGUIIcons.Resize) && ragePixelSprite.mode != RagePixelSprite.Mode.Grid9)
        {
            ragePixelSprite.SnapToScale();
            selection = null;
            selectionActive = false;
            mode = Mode.Resize;
            Tools.current = Tool.None;
        }
    }
コード例 #6
0
    public void HandleModeSelect()
    {
        if (Event.current.type == EventType.mouseDown || Event.current.type == EventType.mouseDrag || Event.current.type == EventType.mouseUp)
        {
            Vector3 mouseWorldPosition = sceneScreenToWorldPoint(Event.current.mousePosition);

            RagePixelTexel texel = WorldToTexelCoords(spritesheetTexture, ragePixelSprite.transform, mouseWorldPosition);
            int spriteWidth = ragePixelSprite.GetCurrentRow().pixelSizeX;
            int spriteHeight = ragePixelSprite.GetCurrentRow().pixelSizeY;

            if (texel.X >= 0 && texel.X < spriteWidth &&
                texel.Y >= 0 && texel.Y < spriteHeight)
            {
                if (Event.current.type == EventType.mouseDown)
                {
                    if (Event.current.button == 0)
                    {
                        if (selection == null)
                        {
                            selectionActive = false;
                            selectionStart = texel;
                            selection = new RagePixelTexelRect(texel.X, texel.Y, texel.X, texel.Y);
                        }
                        else
                        {
                            if (texel.X < frontBufferPosition.X || texel.Y < frontBufferPosition.Y || texel.X > frontBufferPosition.X + selection.Width() || texel.Y > frontBufferPosition.Y + selection.Height())
                            {
                                selectionActive = false;
                                selectionStart = texel;
                                selection = new RagePixelTexelRect(texel.X, texel.Y, texel.X, texel.Y);
                            }
                            else
                            {
                                frontBufferDragStartMousePosition = texel;
                                frontBufferDragStartPosition = frontBufferPosition;
                            }
                        }
                    }
                }
                if (Event.current.type == EventType.mouseDrag)
                {
                    if (selectionActive)
                    {
                        RagePixelTexel movement = new RagePixelTexel(texel.X - frontBufferDragStartMousePosition.X, texel.Y - frontBufferDragStartMousePosition.Y);
                        frontBufferPosition = new RagePixelTexel(frontBufferDragStartPosition.X + movement.X, frontBufferDragStartPosition.Y + movement.Y);

                        Rect spriteUV = ragePixelSprite.GetCurrentCell().uv;

                        PasteBitmapToSpritesheet(new RagePixelTexel(0, 0), spriteUV, backBuffer);
                        PasteBitmapToSpritesheetAlpha(frontBufferPosition, spriteUV, frontBuffer);

                        spritesheetTexture.Apply();
                    }
                    else
                    {
                        selection = new RagePixelTexelRect(selectionStart.X, selectionStart.Y, texel.X, texel.Y);
                    }
                }
                if (Event.current.type == EventType.mouseUp && !selectionActive)
                {
                    if (selection.Width() > 1 || selection.Height() > 1)
                    {
                        SavePaintUndo();

                        Rect spriteUV = ragePixelSprite.GetCurrentCell().uv;

                        frontBuffer = GrabRectFromSpritesheet(selection);
                        CutRectInSpritesheet(selection, spriteUV);
                        backBuffer = GrabSprite(spriteUV);

                        frontBufferPosition = new RagePixelTexel(selection.X, selection.Y);
                        frontBufferDragStartPosition = new RagePixelTexel(selection.X, selection.Y);

                        PasteBitmapToSpritesheetAlpha(frontBufferPosition, spriteUV, frontBuffer);

                        selectionActive = true;
                        spritesheetTexture.Apply();
                    }
                    else
                    {
                        selection = null;
                        selectionActive = false;
                    }
                }
                if (selectionActive && Event.current.type == EventType.mouseUp)
                {
                    spritesheetTexture.Apply();
                    atlasTextureIsDirty = true;
                }
            }
            else
            {
                if (Event.current.type != EventType.mouseDrag)
                {
                    mode = Mode.Default;
                }

            }
            if (Event.current.type != EventType.mouseUp)
            {
                Event.current.Use();
            }
        }
    }