فهرست منبع

Merge pull request #69526 from m4gr3d/polish_navigation_controls_opacity_3x

[3.x] Minor tweaks/polish to the navigation controls to prevent interference
Rémi Verschelde 2 سال پیش
والد
کامیت
9983df9210
2فایلهای تغییر یافته به همراه17 افزوده شده و 2 حذف شده
  1. 15 2
      editor/plugins/spatial_editor_plugin.cpp
  2. 2 0
      editor/plugins/spatial_editor_plugin.h

+ 15 - 2
editor/plugins/spatial_editor_plugin.cpp

@@ -82,6 +82,9 @@ void ViewportNavigationControl::_notification(int p_what) {
 		if (!is_connected("mouse_exited", this, "_on_mouse_exited")) {
 			connect("mouse_exited", this, "_on_mouse_exited");
 		}
+		if (!is_connected("mouse_entered", this, "_on_mouse_entered")) {
+			connect("mouse_entered", this, "_on_mouse_entered");
+		}
 	}
 
 	if (p_what == NOTIFICATION_DRAW && viewport != nullptr) {
@@ -99,7 +102,7 @@ void ViewportNavigationControl::_draw() {
 	float radius = get_size().x / 2.0;
 
 	const bool focused = focused_index != -1;
-	draw_circle(center, radius, Color(0.5, 0.5, 0.5, focused ? 0.25 : 0.05));
+	draw_circle(center, radius, Color(0.5, 0.5, 0.5, focused || hovered ? 0.35 : 0.15));
 
 	const Color c = focused ? Color(0.9, 0.9, 0.9, 0.9) : Color(0.5, 0.5, 0.5, 0.25);
 
@@ -110,6 +113,9 @@ void ViewportNavigationControl::_draw() {
 }
 
 void ViewportNavigationControl::_process_click(int p_index, Vector2 p_position, bool p_pressed) {
+	hovered = false;
+	update();
+
 	if (focused_index != -1 && focused_index != p_index) {
 		return;
 	}
@@ -220,7 +226,13 @@ void ViewportNavigationControl::_update_navigation() {
 	}
 }
 
+void ViewportNavigationControl::_on_mouse_entered() {
+	hovered = true;
+	update();
+}
+
 void ViewportNavigationControl::_on_mouse_exited() {
+	hovered = false;
 	update();
 }
 
@@ -234,6 +246,7 @@ void ViewportNavigationControl::set_viewport(SpatialEditorViewport *p_viewport)
 
 void ViewportNavigationControl::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("_gui_input"), &ViewportNavigationControl::_gui_input);
+	ClassDB::bind_method(D_METHOD("_on_mouse_entered"), &ViewportNavigationControl::_on_mouse_entered);
 	ClassDB::bind_method(D_METHOD("_on_mouse_exited"), &ViewportNavigationControl::_on_mouse_exited);
 }
 
@@ -4427,7 +4440,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
 	top_right_vbox->set_anchors_and_margins_preset(PRESET_TOP_RIGHT, PRESET_MODE_MINSIZE, 2.0 * EDSCALE);
 	top_right_vbox->set_h_grow_direction(GROW_DIRECTION_BEGIN);
 
-	const int navigation_control_size = 200;
+	const int navigation_control_size = 150;
 
 	position_control = memnew(ViewportNavigationControl);
 	position_control->set_navigation_mode(SpatialEditorViewport::NAVIGATION_MOVE);

+ 2 - 0
editor/plugins/spatial_editor_plugin.h

@@ -931,6 +931,7 @@ class ViewportNavigationControl : public Control {
 	SpatialEditorViewport *viewport = nullptr;
 	Vector2i focused_mouse_start;
 	Vector2 focused_pos;
+	bool hovered = false;
 	int focused_index = -1;
 	SpatialEditorViewport::NavigationMode nav_mode = SpatialEditorViewport::NavigationMode::NAVIGATION_NONE;
 
@@ -941,6 +942,7 @@ protected:
 	void _notification(int p_what);
 	void _gui_input(Ref<InputEvent> p_event);
 	void _draw();
+	void _on_mouse_entered();
 	void _on_mouse_exited();
 	void _process_click(int p_index, Vector2 p_position, bool p_pressed);
 	void _process_drag(int p_index, Vector2 p_position, Vector2 p_relative_position);