Merge pull request #14766 from volzhs/info-fps

Refactoring FPS & information on 3D viewport
This commit is contained in:
Rémi Verschelde 2017-12-17 14:18:28 +01:00 committed by GitHub
commit 5b1960e5ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 45 deletions

View File

@ -999,6 +999,12 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("bg", "ColorPickerButton", theme->get_icon("GuiMiniCheckerboard", "EditorIcons"));
// Information on 3D viewport
Ref<StyleBoxFlat> style_info_3d_viewport = style_default->duplicate();
style_info_3d_viewport->set_bg_color(style_info_3d_viewport->get_bg_color() * Color(1, 1, 1, 0.5));
style_info_3d_viewport->set_border_width_all(0);
theme->set_stylebox("Information3dViewport", "EditorStyles", style_info_3d_viewport);
// adaptive script theme constants
// for comments and elements with lower relevance
const Color dim_color = Color(font_color.r, font_color.g, font_color.b, 0.5);

View File

@ -2219,15 +2219,9 @@ void SpatialEditorViewport::_notification(int p_what) {
viewport->set_hdr(hdr);
bool show_info = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_INFORMATION));
if (show_info != info->is_visible()) {
if (show_info)
info->show();
else
info->hide();
}
info_label->set_visible(show_info);
if (show_info) {
String text;
text += TTR("Objects Drawn") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_OBJECTS_IN_FRAME)) + "\n";
text += TTR("Material Changes") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_MATERIAL_CHANGES_IN_FRAME)) + "\n";
@ -2235,38 +2229,19 @@ void SpatialEditorViewport::_notification(int p_what) {
text += TTR("Surface Changes") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_SURFACE_CHANGES_IN_FRAME)) + "\n";
text += TTR("Draw Calls") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_DRAW_CALLS_IN_FRAME)) + "\n";
text += TTR("Vertices") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_VERTICES_IN_FRAME));
if (info_label->get_text() != text || surface->get_size() != prev_size) {
info_label->set_text(text);
Size2 ms = info->get_minimum_size();
info->set_position(surface->get_size() - ms - Vector2(20, 20) * EDSCALE);
}
info_label->set_text(text);
}
// FPS Counter.
bool show_fps = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_FPS));
if (show_fps != fps->is_visible()) {
if (show_fps)
fps->show();
else
fps->hide();
}
fps_label->set_visible(show_fps);
if (show_fps) {
String text;
const float temp_fps = Engine::get_singleton()->get_frames_per_second();
text += TTR("FPS") + ": " + itos(temp_fps) + " (" + String::num(1000.0f / temp_fps, 2) + " ms)";
if (fps_label->get_text() != text || surface->get_size() != prev_size) {
fps_label->set_text(text);
Size2 ms = fps->get_size();
Size2 size = surface->get_size();
size.y = ms.y + 20;
fps->set_position(size - ms - Vector2(20, 0) * EDSCALE);
}
fps_label->set_text(text);
}
prev_size = surface->get_size();
}
if (p_what == NOTIFICATION_ENTER_TREE) {
@ -2275,8 +2250,8 @@ void SpatialEditorViewport::_notification(int p_what) {
surface->connect("gui_input", this, "_sinput");
surface->connect("mouse_entered", this, "_smouseenter");
surface->connect("mouse_exited", this, "_smouseexit");
info->add_style_override("panel", get_stylebox("panel", "Panel"));
fps->add_style_override("panel", get_stylebox("panel", "Panel"));
info_label->add_style_override("normal", editor->get_gui_base()->get_stylebox("Information3dViewport", "EditorStyles"));
fps_label->add_style_override("normal", editor->get_gui_base()->get_stylebox("Information3dViewport", "EditorStyles"));
preview_camera->set_icon(get_icon("Camera", "EditorIcons"));
_init_gizmo_instance(index);
}
@ -2773,8 +2748,10 @@ void SpatialEditorViewport::set_can_preview(Camera *p_preview) {
if (!preview_camera->is_pressed()) {
if (p_preview) {
fps_label->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 15 * EDSCALE + preview_camera->get_size().height);
preview_camera->show();
} else {
fps_label->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 10 * EDSCALE);
preview_camera->hide();
}
}
@ -3399,20 +3376,24 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
preview_node = NULL;
info = memnew(PanelContainer);
info->set_self_modulate(Color(1, 1, 1, 0.4));
surface->add_child(info);
info_label = memnew(Label);
info->add_child(info_label);
info->hide();
info_label->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -90 * EDSCALE);
info_label->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, -90 * EDSCALE);
info_label->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -10 * EDSCALE);
info_label->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -10 * EDSCALE);
info_label->set_h_grow_direction(GROW_DIRECTION_BEGIN);
info_label->set_v_grow_direction(GROW_DIRECTION_BEGIN);
surface->add_child(info_label);
info_label->hide();
// FPS Counter.
fps = memnew(PanelContainer);
fps->set_self_modulate(Color(1, 1, 1, 0.4));
surface->add_child(fps);
fps_label = memnew(Label);
fps->add_child(fps_label);
fps->hide();
fps_label->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -90 * EDSCALE);
fps_label->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 10 * EDSCALE);
fps_label->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -10 * EDSCALE);
fps_label->set_h_grow_direction(GROW_DIRECTION_BEGIN);
surface->add_child(fps_label);
fps_label->hide();
accept = NULL;

View File

@ -106,7 +106,6 @@ private:
int index;
String name;
void _menu_option(int p_option);
Size2 prev_size;
Spatial *preview_node;
AABB *preview_bounds;
@ -136,10 +135,7 @@ private:
bool freelook_active;
real_t freelook_speed;
PanelContainer *info;
Label *info_label;
PanelContainer *fps;
Label *fps_label;
struct _RayResult {