Merge pull request #34801 from Calinou/add-3d-viewport-crosshair
Add a crosshair to the 3D viewport
This commit is contained in:
commit
8f103b1b69
3 changed files with 17 additions and 0 deletions
1
editor/icons/icon_crosshair.svg
Normal file
1
editor/icons/icon_crosshair.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m6 1v5h-5v1 3h5v5h4v-5h5v-4h-5v-5z" fill-opacity=".627451"/><path d="m2 7v2l5.0000803.0000197-.0000803 4.9999803h2l-.0000803-4.9999803 5.0000803-.0000197v-2l-5.0000803.0001803.0000803-5.0001803h-2l.0000803 5.0001803z" fill="#fefefe" fill-opacity=".862745"/></svg>
|
After Width: | Height: | Size: 355 B |
|
@ -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);
|
||||
|
|
|
@ -217,6 +217,7 @@ private:
|
|||
bool freelook_active;
|
||||
real_t freelook_speed;
|
||||
|
||||
TextureRect *crosshair;
|
||||
Label *info_label;
|
||||
Label *fps_label;
|
||||
Label *cinema_label;
|
||||
|
|
Loading…
Reference in a new issue