diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index a3a833327..bb0431125 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -36,6 +36,7 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_jump", "KEY_SPACE"); settings->setDefault("keymap_sneak", "KEY_LSHIFT"); settings->setDefault("keymap_inventory", "KEY_KEY_I"); + settings->setDefault("keymap_special1", "KEY_KEY_E"); settings->setDefault("keymap_chat", "KEY_KEY_T"); settings->setDefault("keymap_cmd", "/"); settings->setDefault("keymap_rangeselect", "KEY_KEY_R"); @@ -43,8 +44,8 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_fastmove", "KEY_KEY_J"); settings->setDefault("keymap_frametime_graph", "KEY_F1"); settings->setDefault("keymap_screenshot", "KEY_F12"); + settings->setDefault("keymap_toggle_profiler", "KEY_F2"); // Some (temporary) keys for debugging - settings->setDefault("keymap_special1", "KEY_KEY_E"); settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P"); settings->setDefault("wanted_fps", "30"); diff --git a/src/game.cpp b/src/game.cpp index 4d9b0c3f6..92d4a2ae4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -872,7 +872,6 @@ void the_game( L"", core::rect(5, 5+(text_height+5)*1, 795, (5+text_height)*2), false, false); - // At the middle of the screen // Object infos are shown in this gui::IGUIStaticText *guitext_info = guienv->addStaticText( @@ -889,6 +888,15 @@ void the_game( //guitext_chat->setBackgroundColor(video::SColor(96,0,0,0)); core::list chat_lines; + // Profiler text + gui::IGUIStaticText *guitext_profiler = guienv->addStaticText( + L"", + core::rect(6, 4+(text_height+5)*3, 400, + (text_height+5)*3 + text_height*35), + false, false); + guitext_profiler->setBackgroundColor(video::SColor(80,0,0,0)); + guitext_profiler->setVisible(false); + /*GUIQuickInventory *quick_inventory = new GUIQuickInventory (guienv, NULL, v2s32(10, 70), 5, &local_inventory);*/ /*GUIQuickInventory *quick_inventory = new GUIQuickInventory @@ -942,6 +950,8 @@ void the_game( bool respawn_menu_active = false; + bool show_profiler = false; + /* Main loop */ @@ -1162,14 +1172,23 @@ void the_game( */ float profiler_print_interval = g_settings->getFloat("profiler_print_interval"); - if(profiler_print_interval != 0) + bool print_to_log = true; + if(profiler_print_interval == 0){ + print_to_log = false; + profiler_print_interval = 5; + } + if(m_profiler_interval.step(0.030, profiler_print_interval)) { - if(m_profiler_interval.step(0.030, profiler_print_interval)) - { + if(print_to_log){ infostream<<"Profiler:"<print(infostream); - g_profiler->clear(); } + + std::ostringstream os(std::ios_base::binary); + g_profiler->print(os); + guitext_profiler->setText(narrow_to_wide(os.str()).c_str()); + + g_profiler->clear(); } /* @@ -1299,6 +1318,11 @@ void the_game( image->drop(); } } + else if(input->wasKeyDown(getKeySetting("keymap_toggle_profiler"))) + { + show_profiler = !show_profiler; + guitext_profiler->setVisible(show_profiler); + } // Item selection with mouse wheel { @@ -2114,7 +2138,8 @@ void the_game( guitext_chat->setRelativePosition(rect); - if(chat_lines.size() == 0) + // Don't show chat if empty or profiler is enabled + if(chat_lines.size() == 0 || show_profiler) guitext_chat->setVisible(false); else guitext_chat->setVisible(true);