void OnGUI()
    {
        if (!WP_CON_EDITOR.WP_SET_MODE && GUILayout.Button("ENABLE SET MODE"))
        {
            WP_CON_EDITOR.deselect_tools();
            WP_CON_EDITOR.WP_SET_MODE = true;
        }
        if (WP_CON_EDITOR.WP_SET_MODE && GUILayout.Button("DISABLE SET MODE"))
        {
            Debug.Log("disable_con_mode");
            WP_CON_EDITOR.deselect_tools();
        }

        if (!WP_CON_EDITOR.WP_REMOVE_MODE && GUILayout.Button("ENABLE REMOVE MODE"))
        {
            WP_CON_EDITOR.deselect_tools();
            WP_CON_EDITOR.WP_REMOVE_MODE = true;
        }
        if (WP_CON_EDITOR.WP_REMOVE_MODE && GUILayout.Button("DISABLE REMOVE MODE"))
        {
            WP_CON_EDITOR.deselect_tools();
        }


        if (!WP_CON_EDITOR.WP_CONNECTION_MODE && GUILayout.Button("ENABLE CONNECTION MODE"))
        {
            WP_CON_EDITOR.deselect_tools();
            WP_CON_EDITOR.WP_CONNECTION_MODE = true;
        }
        if (WP_CON_EDITOR.WP_CONNECTION_MODE && GUILayout.Button("DISABLE CONNECTION MODE"))
        {
            WP_CON_EDITOR.deselect_tools();
        }



        GUILayout.Label("BASE SETTINGS", EditorStyles.boldLabel);
        WP_CON_EDITOR.set_placement_tag(EditorGUILayout.TextField("VALID_PLACE_TAG", WP_CON_EDITOR.CON_PLACEMENT_TAG));
        WP_CON_EDITOR.set_wp_types_asset_path(EditorGUILayout.TextField("WP_ASSET_PATH", WP_CON_EDITOR.CON_ASSET_SET_PATH));
        WP_CON_EDITOR.set_wp_manager_name(EditorGUILayout.TextField("WP_MANAGER_NAME", WP_CON_EDITOR.CON_WP_MANAGER_NAME));
        WP_CON_EDITOR.set_wp_tag(EditorGUILayout.TextField("WP_TAG", WP_CON_EDITOR.CON_WP_WP_TAG));

        if (WP_CON_EDITOR.WP_SET_MODE)
        {
            GUILayout.Label("SET SETTINGS", EditorStyles.boldLabel);
            WP_CON_EDITOR.WP_SET_MODE_HOLD_LAST_POINT = EditorGUILayout.Toggle(WP_CON_EDITOR.WP_SET_MODE_HOLD_LAST_POINT, "HOLD LAST WP");
        }

        if (WP_CON_EDITOR.WP_CONNECTION_MODE)
        {
            GUILayout.Label("CONNECTION SETTINGS", EditorStyles.boldLabel);
            WP_CON_EDITOR.WP_CONNECTION_MODE_MAKE_BIDIR = EditorGUILayout.Toggle(WP_CON_EDITOR.WP_CONNECTION_MODE_MAKE_BIDIR, "MAKE BIDIRECTIONAL CONNECTION");
        }
    }
    static void OnSceneGUI(SceneView sceneView)
    {
        if (!WP_CON_EDITOR.WP_SET_MODE && !WP_CON_EDITOR.WP_REMOVE_MODE && !WP_CON_EDITOR.WP_CONNECTION_MODE)
        {
            return;
        }

        int controlId = GUIUtility.GetControlID(FocusType.Passive);

        //DESELECT TOOL
        if (Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.Escape)
        {
            WP_CON_EDITOR.deselect_tools();
        }
        //SET PLACE BLOCK
        if (WP_CON_EDITOR.WP_SET_MODE && Event.current.type == EventType.mouseDown && Event.current.button == 0 && Event.current.alt == false && Event.current.shift == false && Event.current.control == false)
        {
            if (new_block_to_create != null && cursor_in_valid_area)
            {
                AddWaypoint(CurrentHandlePosition, new_block_to_create);
                if (!WP_CON_EDITOR.WP_SET_MODE_HOLD_LAST_POINT)
                {
                    new_block_to_create = null;
                }
            }
        }
        //SET DESELCE BLOCK
        if (WP_CON_EDITOR.WP_SET_MODE && Event.current.type == EventType.mouseDown && Event.current.button == 1 && Event.current.alt == false && Event.current.shift == false && Event.current.control == false)
        {
            if (!WP_CON_EDITOR.WP_SET_MODE_HOLD_LAST_POINT)
            {
                new_block_to_create = null;
            }
            was_one_time_remove = true;
            WP_CON_EDITOR.deselect_tools();
            WP_CON_EDITOR.WP_REMOVE_MODE = true;
        }
        //REMOVE NODE
        if (WP_CON_EDITOR.WP_REMOVE_MODE && Event.current.type == EventType.mouseDown && Event.current.button == 0 && Event.current.alt == false && Event.current.shift == false && Event.current.control == false)
        {
            if (clicked_go != null)
            {
                if (clicked_go.transform.tag == WP_CON_EDITOR.CON_WP_WP_TAG && clicked_go.GetComponent <wp_point_info>() != null)
                {
                    WP_CON_EDITOR.CON_WP_MANAGER_OBJ.GetComponent <wp_manager>().unregister_wp_and_destroy(clicked_go);
                }
                if (was_one_time_remove)
                {
                    was_one_time_remove = false;
                    WP_CON_EDITOR.deselect_tools();
                    WP_CON_EDITOR.WP_SET_MODE = true;
                }
            }
        }
        //SET DESELCE WP IN CON MODE
        if (WP_CON_EDITOR.WP_CONNECTION_MODE && Event.current.type == EventType.mouseDown && Event.current.button == 1 && Event.current.alt == false && Event.current.shift == false && Event.current.control == false)
        {
            con_mode_first_go  = null;
            con_mode_second_go = null;
            clicked_go         = null;
        }



        //CONNECTION MODE
        if (WP_CON_EDITOR.WP_CONNECTION_MODE && Event.current.type == EventType.mouseDown && Event.current.button == 0 && Event.current.alt == false && Event.current.shift == false && Event.current.control == false)
        {
            if (clicked_go != null)
            {
                //ASSIGN FIRST
                if (con_mode_first_go == null && clicked_go.GetComponent <wp_point_info>() != null)
                {
                    con_mode_first_go  = clicked_go;
                    con_mode_second_go = null;
                    //ASSIGN SECOND
                }
                else if (con_mode_first_go != null && con_mode_second_go == null)
                {
                    if (con_mode_first_go != clicked_go)
                    {
                        con_mode_second_go = clicked_go;
                    }
                    //AND AM
                    //TODO IMPROVE IT FOR BIDIR CONNECTIOS
                    if (con_mode_first_go != null && con_mode_second_go != null && clicked_go.GetComponent <wp_point_info>() != null)
                    {
                        Undo.RecordObject(con_mode_first_go, "make con first go");
                        Undo.RecordObject(con_mode_second_go, "make con second go");
                        //if this connection doesnt exitsts
                        if (!con_mode_first_go.GetComponent <wp_point_info>().has_neighbour(con_mode_second_go))
                        {
                            //ADD OBJ
                            con_mode_first_go.GetComponent <wp_point_info>().reg_neighbour(con_mode_second_go, WP_CON_EDITOR.WP_CONNECTION_MODE_MAKE_BIDIR);
                        }
                        else
                        {
                            //was_one_time_remove OBJ
                            con_mode_first_go.GetComponent <wp_point_info>().unreg_neighbour(con_mode_second_go, WP_CON_EDITOR.WP_CONNECTION_MODE_MAKE_BIDIR);
                        }
                        //Undo.RegisterCreatedObjectUndo(con_mode_first_go.GetComponent<wp_point_info>(), "Make Connection ");
                        //Undo.RegisterCreatedObjectUndo(con_mode_second_go.GetComponent<wp_point_info>(), "Make Connection ");

                        Undo.FlushUndoRecordObjects();
                        UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty();
                        con_mode_first_go  = null;
                        con_mode_second_go = null;
                    }
                }
                else
                {
                    con_mode_first_go  = null;
                    con_mode_second_go = null;
                }
            }
        }


        HandleUtility.AddDefaultControl(controlId);



        UpdateHandlePosition();
        UpdateRepaint();
        DrawCustomBlockButtons(sceneView);
    }