private void handleMouse()
 {
     if(Event.current.type == EventType.MouseUp){
         __dragSelection = null;
         __outputSelection = null;
     }
 }
    // BASE
    private Rect drawPhaseBase(DialogueEditorPhaseObject phase, int width, int height)
    {
        Rect box = new Rect(phase.position.x, phase.position.y, width, height);
        GUI.Box(box, string.Empty, DialogueEditorGUI.gui.GetStyle("box_opaque"));

        Rect titleBarRect = new Rect(box.x + 2, box.y + 2, box.width - 4, 20);
        if(isPro){
            DialogueEditorGUI.drawShadowedRect(titleBarRect, 2);
        }else{
            GUI.Box(titleBarRect, string.Empty, DialogueEditorGUI.gui.GetStyle("box_opaque"));
            GUI.Box(titleBarRect, string.Empty, DialogueEditorGUI.gui.GetStyle("box_opaque"));
        }
        GUIStyle titleBarStyle = new GUIStyle("label");
        titleBarStyle.alignment = TextAnchor.MiddleCenter;

        Vector2 mousePosition = Event.current.mousePosition;
        if(titleBarRect.Contains(mousePosition)){
            if(isPro){
                DialogueEditorGUI.drawHighlightRect(titleBarRect, 1, -1);
            }else{
                GUI.Box(titleBarRect, string.Empty, DialogueEditorGUI.gui.GetStyle("box_opaque"));
                GUI.Box(titleBarRect, string.Empty, DialogueEditorGUI.gui.GetStyle("box_opaque"));
            }
        }

        if(isPro){
            GUI.color = new Color(0,0,0,0.3f);
            GUI.Label(new Rect(titleBarRect.x + 1, titleBarRect.y, titleBarRect.width, titleBarRect.height), DialogueEditorPhaseType.getPhases()[(int)phase.type].name, titleBarStyle);
        }
        GUI.color = GUI.contentColor;
        GUI.Label(new Rect(titleBarRect.x, titleBarRect.y - 1, titleBarRect.width, titleBarRect.height), DialogueEditorPhaseType.getPhases()[(int)phase.type].name, titleBarStyle);

        // Input
        Rect inputButtonRect = new Rect(titleBarRect.x + 2, titleBarRect.y + 2, 16, 16);
        //if(Event.current.type == EventType.MouseUp && inputButtonRect.Contains(mousePosition)){
        if(GUI.Button(inputButtonRect, string.Empty, DialogueEditorGUI.gui.GetStyle("connector_input"))){
            handlePhaseInputClicked(phase.id);
            Event.current.Use();
        }
        //GUI.Button(inputButtonRect, string.Empty, DialogueEditorGUI.gui.GetStyle("connector_input"));

        // Close
        Rect closeButtonRect = new Rect(titleBarRect.x + titleBarRect.width - 16 - 2, titleBarRect.y + 2, 16, 16);
        if(GUI.Button(closeButtonRect, string.Empty, DialogueEditorGUI.gui.GetStyle("phase_button_remove"))){
            handlePhaseRemoveClick(phase.id);
            Event.current.Use();
        }
        if(closeButtonRect.Contains(Event.current.mousePosition)){
            setTooltip("This button deletes the current page.\nThis can NOT be undone.");
        }

        if(Event.current.type == EventType.MouseDown && titleBarRect.Contains(mousePosition)){
            __dragSelection = new DialogueEditorDragPhaseObject(phase.id, new Vector2(titleBarRect.x - mousePosition.x, titleBarRect.y - mousePosition.y));
        }

        return new Rect(box.x, box.y, width, 25);
    }
    private void handleDragging()
    {
        Vector2 mousePosition = Event.current.mousePosition;
        DialogueEditorPhaseObject phase = null;
        if(Event.current.type == EventType.MouseDrag && __dragSelection != null){
            phase = DialogueEditorDataManager.data.dialogues[DialogueEditorDataManager.data.currentDialogueId].phases[__dragSelection.phaseId];
            phase.position = new Vector2((mousePosition.x + __dragSelection.mouseOffset.x), (mousePosition.y + __dragSelection.mouseOffset.y));
            if(phase.position.x < 10) phase.position.x = 10;
            if(phase.position.y < 10) phase.position.y = 10;
        }

        if(Event.current.type == EventType.MouseUp && __dragSelection != null){
            phase = DialogueEditorDataManager.data.dialogues[DialogueEditorDataManager.data.currentDialogueId].phases[__dragSelection.phaseId];
            if(phase != null){
                getPhaseScrollLimits();
            }
            __dragSelection = null;
        }
    }