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); }