[video output=day195 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Implementing an Interactive Tree View" vod_platform=youtube id=WwDytuTI5C8 annotator=Miblo]
[1:08][Recap and set the stage for the day]
[1:42][handmade_debug.cpp: Consider cutting and pasting WriteHandmadeConfig]
[3:28][handmade_debug.cpp: Cut and paste it into DrawDebugMainMenu]
[6:59][handmade_debug.cpp: Initialise the menu]
[9:02][handmade_debug.cpp: Set the TextP and advance AtY]
[10:50][Run the game and see how it looks]
[10:59][handmade_debug.cpp: Indent the text based on the depth]
[11:49][Run the game and see our hierarchical printout]
[12:05][handmade_debug.cpp: Implement the ability to interact with the menu]
[16:38]["A Variable can be anything that it wants to be"][quote 260]
[19:08][Run the game and see our progress]
[19:21]["That's a mistake"][quote 261]
[19:34][handmade_debug.cpp: Fix the test]
[20:41][Run the game and demo a bug]
[21:14][handmade.h: Introduce PushCopy]
[23:51][handmade_debug_variables.h: Use PushCopy to copy Name to the stack]
[24:35][handmade_platform.h: Move StringLength from win32_handmade.cpp]
[25:21][Run the game and see that our strings do persist, but that we have a bug]
[26:54]["There must be a bug"][quote 262]
[27:08][handmade_debug.cpp: Add an InvalidDefaultCase and clean up garbage in handmade_config.h]
[27:59][handmade_debug_variables.h: Copy the null terminator onto the end of the Name string]
[29:13][Run the game and find that everything's working nicely]
[29:34][handmade_debug.cpp: Implement the ability to expand / collapse the tree]
[31:18][Run the game and try out the newly compressed tree menu]
[31:40][Consider adding more features]
[32:30][handmade_debug.h: Add some more debug_variable_types]
[33:23][handmade_debug.cpp: Use those variables in WriteHandmadeConfig]
[36:02][handmade_debug_variables.h: Create some debug variables using those types]
[38:15][Run the game and see our new debug_variable_type in action]
[38:41][handmade_debug_variables.h: Consider implementing the ability to tweak values in the UI]
[39:50][handmade_debug.cpp: Introduce DEBUGVariableToText to stick the prefix and suffix onto the variables]
[47:13][handmade_debug.h: Introduce debug_variable_to_text_flag]
[47:44][handmade_debug.cpp: Use DEBUGVariableToText]
[52:28][Run the game and see that everything seems to be working, except for the handmade_config.h printout]
[52:59][handmade_debug.cpp: Correct the carriage return and stop printing out groups in WriteHandmadeConfig]
[55:47][handmade_debug.cpp: Introduce DEBUGVariableToText_PrettyBools]
[56:53][Run the game and find that we're getting a little closer]
[57:25][handmade_debug.cpp: Correct typos]
[58:51][handmade_debug.cpp: Print out // before the groups]
[1:00:05][Run the game and see that it all looks pretty good]
[1:00:46][handmade_debug.cpp: Create a bunch more debug variable types]
[1:04:16][Run the game, assess our progress and glimpse into the future]
[1:05:36][Q&A][:speech]
[1:06:03][@andsz_][That was pretty bools, man!]
[1:06:08][@Sharlock93][Casey, we hear cutlery. Maybe skip Q&A and eat?]
[1:06:28][@elxenoaizd][Why aren't the + and - signs not shown for the group labels?]
[1:07:21][@elxenoaizd][Instead of manually typing values of power of 2 for our debug text enums can't we just use 1 << 1, 1 << 2, etc.?]
[1:07:39][@cubercaleb][So is THIS what you meant by IMGUI?]
[1:08:07][@TheSizik][Colored text option for V4's representing colors?]
[1:08:15][@insofaras][Will you be adding string type debug variables, maybe for things like save folder location, keybindings etc.?]
[1:08:35][@elxenoaizd][Why can't we use LLVM in windows? That way we use the same compiler for our major platforms]
[1:09:13][@ifingerbangedurcat][printf comes from a library, we must implement string formatting so the stream isn't based on a lie]
[1:11:51][@insofaras][If you had to implement an encryption system, would you use a library or write it from scratch yourself?]
[1:12:01][@KRUZAA][(Off topic) How long after getting his / her number should you text / call them?]
[1:12:10][@SoysauceTheKid][Are you planning on doing user text input (i.e. spawn entity with x amount of health)?]
[1:12:15][@elxenoaizd][You missed my question twice in the prestream. Looks like it's not appearing. Is there a max question length that you filter out?]
[1:12:28][@insofaras][You can debug LLVM things using the Visual Studio UI[ref
    site="GitHub"
    page="Microsoft/MIEngine"
    url="https://github.com/Microsoft/MIEngine"]]
[1:12:45][@Longboolean][Would it be possible to compile all possible combinations of debug vars as separate binaries but then only use the one that matches the chosen debug vars, for faster switching? Is this a stupid question?]
[1:16:42][@Sharlock93][What is the end goal for the Debug GUI? Like, at what point will we say this is done?]
[1:17:02][@budsan][In case the debug variables header is messed up, can we check easily if a debug variable is not defined and set some default value?]
[1:17:20][@elxenoaizd][How would you implement your own string without having them being null terminated? Bundle the char* with a count variable?]
[1:17:38][@elxenoaizd][Handmade Certification]
[1:19:33][Wrap it up][:speech]
[/video]
