diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-01-14 21:02:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-14 21:02:35 +0100 |
commit | 8f103b1b69b6a0a9510d330ec98cef33c612d195 (patch) | |
tree | e93a938fd17bc420b3be36f51558c58411d965ac /editor/plugins | |
parent | 562bc1941d390f2897ef04992e2bcdfda616d7a6 (diff) | |
parent | 2b9f34b86711d5cab7c1bfb3bf21c30ada788c21 (diff) |
Merge pull request #34801 from Calinou/add-3d-viewport-crosshair
Add a crosshair to the 3D viewport
Diffstat (limited to 'editor/plugins')
-rw-r--r-- | editor/plugins/spatial_editor_plugin.cpp | 15 | ||||
-rw-r--r-- | editor/plugins/spatial_editor_plugin.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 252f067eb1..31dce720db 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -2135,6 +2135,13 @@ void SpatialEditorViewport::_notification(int p_what) { call_deferred("update_transform_gizmo_view"); } + if (p_what == NOTIFICATION_READY) { + // The crosshair icon doesn't depend on the editor theme. + crosshair->set_texture(get_icon("Crosshair", "EditorIcons")); + // Set the anchors and margins after changing the icon to ensure it's centered correctly. + crosshair->set_anchors_and_margins_preset(PRESET_CENTER); + } + if (p_what == NOTIFICATION_PROCESS) { real_t delta = get_process_delta_time(); @@ -2255,6 +2262,10 @@ void SpatialEditorViewport::_notification(int p_what) { current_camera = camera; } + // Display the crosshair only while freelooking. Hide it otherwise, + // as the crosshair can be distracting. + crosshair->set_visible(freelook_active); + if (show_info) { String text; text += "X: " + rtos(current_camera->get_translation().x).pad_decimals(1) + "\n"; @@ -3546,6 +3557,10 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed camera->make_current(); surface->set_focus_mode(FOCUS_ALL); + crosshair = memnew(TextureRect); + crosshair->set_mouse_filter(MOUSE_FILTER_IGNORE); + surface->add_child(crosshair); + VBoxContainer *vbox = memnew(VBoxContainer); surface->add_child(vbox); vbox->set_position(Point2(10, 10) * EDSCALE); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 356646221e..5cc2b24cbb 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -217,6 +217,7 @@ private: bool freelook_active; real_t freelook_speed; + TextureRect *crosshair; Label *info_label; Label *fps_label; Label *cinema_label; |