F2 toggles profiler display in client
authorPerttu Ahola <celeron55@gmail.com>
Mon, 17 Oct 2011 17:40:55 +0000 (20:40 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Mon, 17 Oct 2011 17:40:55 +0000 (20:40 +0300)
src/defaultsettings.cpp
src/game.cpp

index a3a833327d86517d7814526fefba16a4000e6b09..bb04311254819d2fcaca6c396f842793e1125e37 100644 (file)
@@ -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");
index 4d9b0c3f6325d044787c8c3e82bf302af60b6d86..92d4a2ae490601d1b101e729763a75e21a311786 100644 (file)
@@ -872,7 +872,6 @@ void the_game(
                        L"",
                        core::rect<s32>(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<ChatLine> chat_lines;
        
+       // Profiler text
+       gui::IGUIStaticText *guitext_profiler = guienv->addStaticText(
+                       L"<Profiler>",
+                       core::rect<s32>(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:"<<std::endl;
                                g_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);