2015-06-16 00:23:57 +08:00
//
// debug_hud.cpp
// imguiex
# include <stdio.h>
# include "debug_hud.h"
# include "imgui.h"
void DebugHUD_InitDefaults ( DebugHUD * hud )
{
2017-12-25 01:16:22 +08:00
hud - > show_demo_window = true ;
2018-01-31 07:16:44 +08:00
hud - > show_another_window = true ;
2015-07-08 11:35:09 +08:00
hud - > rotation_speed = 15.0f ;
2015-06-16 00:23:57 +08:00
2015-07-08 11:35:09 +08:00
hud - > cubeColor1 [ 0 ] = 0.4f ;
hud - > cubeColor1 [ 1 ] = 0.4f ;
hud - > cubeColor1 [ 2 ] = 1.0f ;
hud - > cubeColor1 [ 3 ] = 1.0f ;
2015-06-16 00:23:57 +08:00
2015-07-08 11:35:09 +08:00
hud - > cubeColor2 [ 0 ] = 1.0f ;
hud - > cubeColor2 [ 1 ] = 0.4f ;
hud - > cubeColor2 [ 2 ] = 0.4f ;
hud - > cubeColor2 [ 3 ] = 1.0f ;
2018-02-05 10:47:08 +08:00
hud - > clearColor [ 0 ] = 0.45f ;
hud - > clearColor [ 1 ] = 0.55f ;
hud - > clearColor [ 2 ] = 0.60f ;
hud - > clearColor [ 3 ] = 1.00f ;
2015-06-16 00:23:57 +08:00
}
2017-08-11 13:36:28 +08:00
void DebugHUD_DoInterface ( DebugHUD * hud )
2015-06-16 00:23:57 +08:00
{
2018-01-31 07:16:44 +08:00
// 1. Show a simple window.
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
2015-06-16 00:23:57 +08:00
{
2018-01-31 07:16:44 +08:00
static float f = 0.0f ;
static int counter = 0 ;
ImGui : : Text ( " Hello, world! " ) ; // Display some text (you can use a format string too)
ImGui : : SliderFloat ( " float " , & f , 0.0f , 1.0f ) ; // Edit 1 float using a slider from 0.0f to 1.0f
2018-02-05 10:47:08 +08:00
ImGui : : ColorEdit3 ( " clear color " , hud - > clearColor ) ; // Edit 3 floats representing a color
2018-01-31 07:16:44 +08:00
ImGui : : Checkbox ( " Demo Window " , & hud - > show_demo_window ) ; // Edit bools storing our windows open/close state
ImGui : : Checkbox ( " Another Window " , & hud - > show_another_window ) ;
if ( ImGui : : Button ( " Button " ) ) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter + + ;
ImGui : : SameLine ( ) ;
ImGui : : Text ( " counter = %d " , counter ) ;
ImGui : : Text ( " Application average %.3f ms/frame (%.1f FPS) " , 1000.0f / ImGui : : GetIO ( ) . Framerate , ImGui : : GetIO ( ) . Framerate ) ;
2015-06-16 00:23:57 +08:00
}
2018-01-31 07:16:44 +08:00
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if ( hud - > show_another_window )
2015-06-16 00:23:57 +08:00
{
2018-02-05 10:47:08 +08:00
ImGui : : Begin ( " Another Window " , & hud - > show_another_window ) ;
2017-09-01 23:06:26 +08:00
ImGui : : Text ( " Hello from another window! " ) ;
2015-06-16 00:23:57 +08:00
ImGui : : ColorEdit3 ( " Cube 1 Color " , hud - > cubeColor1 ) ;
ImGui : : ColorEdit3 ( " Cube 2 Color " , hud - > cubeColor2 ) ;
2015-07-08 11:35:09 +08:00
ImGui : : SliderFloat ( " Rotation Speed " , & hud - > rotation_speed , 0.0f , 200.0f ) ;
2018-01-31 07:16:44 +08:00
if ( ImGui : : Button ( " Close Me " ) )
hud - > show_another_window = false ;
2015-06-16 00:23:57 +08:00
ImGui : : End ( ) ;
}
2018-01-31 07:16:44 +08:00
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if ( hud - > show_demo_window )
{
ImGui : : SetNextWindowPos ( ImVec2 ( 650 , 20 ) , ImGuiCond_FirstUseEver ) ; // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!
ImGui : : ShowDemoWindow ( & hud - > show_demo_window ) ;
}
2015-07-08 11:35:09 +08:00
}