Handmade Hero»Episode Guide
Improving the Alignment Editing UI
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Recap and set the stage for the day doing, essentially, skeletal animation
🗩
0:01Recap and set the stage for the day doing, essentially, skeletal animation
🗩
0:01Recap and set the stage for the day doing, essentially, skeletal animation
🗩
5:14Set up to snap heads onto bodies and visualise snapping points, considering flexible scaling
🏃
5:14Set up to snap heads onto bodies and visualise snapping points, considering flexible scaling
🏃
5:14Set up to snap heads onto bodies and visualise snapping points, considering flexible scaling
🏃
10:51A few preliminary words on immediate-mode GUI
🗩
10:51A few preliminary words on immediate-mode GUI
🗩
10:51A few preliminary words on immediate-mode GUI
🗩
12:33Make UpdateAndRenderEntities() draw asset alignment points, introducing GetDebugColor3() and GetDebugColor4()
12:33Make UpdateAndRenderEntities() draw asset alignment points, introducing GetDebugColor3() and GetDebugColor4()
12:33Make UpdateAndRenderEntities() draw asset alignment points, introducing GetDebugColor3() and GetDebugColor4()
26:59Check out our alignment points in-game
🏃
26:59Check out our alignment points in-game
🏃
26:59Check out our alignment points in-game
🏃
27:29Make UpdateAndRenderEntities() negate the AlignmentPercentage of the alignment points
27:29Make UpdateAndRenderEntities() negate the AlignmentPercentage of the alignment points
27:29Make UpdateAndRenderEntities() negate the AlignmentPercentage of the alignment points
29:37Find that that doesn't peg the alignment point to the asset
🏃
29:37Find that that doesn't peg the alignment point to the asset
🏃
29:37Find that that doesn't peg the alignment point to the asset
🏃
30:54Make UpdateAndRenderEntities() offset the alignment point by the asset's dimensions rather than its ground position
30:54Make UpdateAndRenderEntities() offset the alignment point by the asset's dimensions rather than its ground position
30:54Make UpdateAndRenderEntities() offset the alignment point by the asset's dimensions rather than its ground position
31:26Find that our alignment point is correctly located
🏃
31:26Find that our alignment point is correctly located
🏃
31:26Find that our alignment point is correctly located
🏃
31:53Make UpdateAndRenderEntities() draw the alignment points closed to the camera
31:53Make UpdateAndRenderEntities() draw the alignment points closed to the camera
31:53Make UpdateAndRenderEntities() draw the alignment points closed to the camera
33:21Check out our pegged alignment points in-game, tweaking their size
🏃
🖮
33:21Check out our pegged alignment points in-game, tweaking their size
🏃
🖮
33:21Check out our pegged alignment points in-game, tweaking their size
🏃
🖮
35:29Enable toggling of coloured alignment points, introducing Buttonf() and EditableBooleanf() for AssetEditor() to call
35:29Enable toggling of coloured alignment points, introducing Buttonf() and EditableBooleanf() for AssetEditor() to call
35:29Enable toggling of coloured alignment points, introducing Buttonf() and EditableBooleanf() for AssetEditor() to call
43:28Try out our alignment point toggling, noting the scarcity of code required for this feature
🏃
43:28Try out our alignment point toggling, noting the scarcity of code required for this feature
🏃
43:28Try out our alignment point toggling, noting the scarcity of code required for this feature
🏃
45:36Change AssetEditor() to only permit existing alignment points to be toggled and coloured
45:36Change AssetEditor() to only permit existing alignment points to be toggled and coloured
45:36Change AssetEditor() to only permit existing alignment points to be toggled and coloured
46:10Check out our correct alignment point toggling
🏃
46:10Check out our correct alignment point toggling
🏃
46:10Check out our correct alignment point toggling
🏃
46:48Introduce ShouldDrawAlignPoint() to enable UpdateAndRenderEntities() to draw all existing alignment points
46:48Introduce ShouldDrawAlignPoint() to enable UpdateAndRenderEntities() to draw all existing alignment points
46:48Introduce ShouldDrawAlignPoint() to enable UpdateAndRenderEntities() to draw all existing alignment points
50:02Check out all our alignment points in-game, noting the need to fix the way we're drawing them closer to the camera
🏃
50:02Check out all our alignment points in-game, noting the need to fix the way we're drawing them closer to the camera
🏃
50:02Check out all our alignment points in-game, noting the need to fix the way we're drawing them closer to the camera
🏃
52:47Make PushCube() take a ZBias which UpdateAndRenderEntities() may use to elevate alignment points above entities
52:47Make PushCube() take a ZBias which UpdateAndRenderEntities() may use to elevate alignment points above entities
52:47Make PushCube() take a ZBias which UpdateAndRenderEntities() may use to elevate alignment points above entities
54:31Find that this didn't elevate our alignment points as expected
🏃
54:31Find that this didn't elevate our alignment points as expected
🏃
54:31Find that this didn't elevate our alignment points as expected
🏃
56:46See how CompileZBiasProgram() uses the ZBias
📖
56:46See how CompileZBiasProgram() uses the ZBias
📖
56:46See how CompileZBiasProgram() uses the ZBias
📖
1:00:04Make UpdateAndRenderEntities() pass a ZBias of 5.0f for alignment points
1:00:04Make UpdateAndRenderEntities() pass a ZBias of 5.0f for alignment points
1:00:04Make UpdateAndRenderEntities() pass a ZBias of 5.0f for alignment points
1:00:34Find that alignment point elevation works fine in debug camera mode, but not in regular camera mode
🏃
1:00:34Find that alignment point elevation works fine in debug camera mode, but not in regular camera mode
🏃
1:00:34Find that alignment point elevation works fine in debug camera mode, but not in regular camera mode
🏃
1:01:59Figure out how the clip planes differ in the different camera modes
📖
1:01:59Figure out how the clip planes differ in the different camera modes
📖
1:01:59Figure out how the clip planes differ in the different camera modes
📖
1:03:13Make UpdateAndRenderEntities() pass a ZBias of 3.0f for alignment points
1:03:13Make UpdateAndRenderEntities() pass a ZBias of 3.0f for alignment points
1:03:13Make UpdateAndRenderEntities() pass a ZBias of 3.0f for alignment points
1:03:32Find that our alignment points are now always elevated above assets, and visible
🏃
1:03:32Find that our alignment points are now always elevated above assets, and visible
🏃
1:03:32Find that our alignment points are now always elevated above assets, and visible
🏃
1:04:47Enable UpdateAndRenderEditor() and EditorInteract() to support asset piece picking, introducing SetActiveAsset()
1:04:47Enable UpdateAndRenderEditor() and EditorInteract() to support asset piece picking, introducing SetActiveAsset()
1:04:47Enable UpdateAndRenderEditor() and EditorInteract() to support asset piece picking, introducing SetActiveAsset()
1:13:04Try out our asset picking functionality
🏃
1:13:04Try out our asset picking functionality
🏃
1:13:04Try out our asset picking functionality
🏃
1:14:58Make UpdateAndRenderEditor() display bitmaps in our asset picker, introducing BitmapButton()
1:14:58Make UpdateAndRenderEditor() display bitmaps in our asset picker, introducing BitmapButton()
1:14:58Make UpdateAndRenderEditor() display bitmaps in our asset picker, introducing BitmapButton()
1:27:33Check out the new bitmap buttons in our UI
🏃
1:27:33Check out the new bitmap buttons in our UI
🏃
1:27:33Check out the new bitmap buttons in our UI
🏃
1:29:01Make BitmapButton() outline the selected bitmap
1:29:01Make BitmapButton() outline the selected bitmap
1:29:01Make BitmapButton() outline the selected bitmap
1:31:15Check out the outlined bitmaps in our UI
🏃
1:31:15Check out the outlined bitmaps in our UI
🏃
1:31:15Check out the outlined bitmaps in our UI
🏃
1:32:16Try out our asset alignment editor UI
🏃
1:32:16Try out our asset alignment editor UI
🏃
1:32:16Try out our asset alignment editor UI
🏃
1:33:35Q&A
🗩
1:33:35Q&A
🗩
1:33:35Q&A
🗩
1:34:41filiadelski Q: How come the near clip plane is at 5, and not closer?
🗪
1:34:41filiadelski Q: How come the near clip plane is at 5, and not closer?
🗪
1:34:41filiadelski Q: How come the near clip plane is at 5, and not closer?
🗪
1:35:18erdomina Q: Would we be showing linkages between alignment points?
🗪
1:35:18erdomina Q: Would we be showing linkages between alignment points?
🗪
1:35:18erdomina Q: Would we be showing linkages between alignment points?
🗪
1:36:30sratke Q: What would you say is crappy in your current implementation of the IMGUI?
🗪
1:36:30sratke Q: What would you say is crappy in your current implementation of the IMGUI?
🗪
1:36:30sratke Q: What would you say is crappy in your current implementation of the IMGUI?
🗪
1:38:00reductum Q: Do you think it would be useful to add mouse wrapping (like in Blender) so you can drag past the end of the screen when editing values?
🗪
1:38:00reductum Q: Do you think it would be useful to add mouse wrapping (like in Blender) so you can drag past the end of the screen when editing values?
🗪
1:38:00reductum Q: Do you think it would be useful to add mouse wrapping (like in Blender) so you can drag past the end of the screen when editing values?
🗪
1:39:00pythno Q: Isn't it an overhead when checking for "if(Button(...))" when doing that every frame?
🗪
1:39:00pythno Q: Isn't it an overhead when checking for "if(Button(...))" when doing that every frame?
🗪
1:39:00pythno Q: Isn't it an overhead when checking for "if(Button(...))" when doing that every frame?
🗪
1:40:35math_daemon_ Q: Will you ever make an emote, or just steal one of Jon's?
🗪
1:40:35math_daemon_ Q: Will you ever make an emote, or just steal one of Jon's?
🗪
1:40:35math_daemon_ Q: Will you ever make an emote, or just steal one of Jon's?
🗪
1:41:33pragmascrypt Q: What is the reason the UI loses state when you hot-reload?
🗪
1:41:33pragmascrypt Q: What is the reason the UI loses state when you hot-reload?
🗪
1:41:33pragmascrypt Q: What is the reason the UI loses state when you hot-reload?
🗪
1:43:12therealdiego Q: Can you play around with it a little more?
🗪
1:43:12therealdiego Q: Can you play around with it a little more?
🗪
1:43:12therealdiego Q: Can you play around with it a little more?
🗪
1:43:27Play around with the UI a little more
🏃
1:43:27Play around with the UI a little more
🏃
1:43:27Play around with the UI a little more
🏃
1:44:50filiadelski Q: With software rendering you can do hot regions that are redrawn when the user fiddles with the UI elements. Can anything similar be done with hardware rendering?
🗪
1:44:50filiadelski Q: With software rendering you can do hot regions that are redrawn when the user fiddles with the UI elements. Can anything similar be done with hardware rendering?
🗪
1:44:50filiadelski Q: With software rendering you can do hot regions that are redrawn when the user fiddles with the UI elements. Can anything similar be done with hardware rendering?
🗪
1:46:21ayn0n_0mus Q: Will the finished game ship with almond milk?
🗪
1:46:21ayn0n_0mus Q: Will the finished game ship with almond milk?
🗪
1:46:21ayn0n_0mus Q: Will the finished game ship with almond milk?
🗪
1:46:30filiadelski Q: You get Anna to draw something cute, like a cat, and then upload the kitty image to twitch
🗪
1:46:30filiadelski Q: You get Anna to draw something cute, like a cat, and then upload the kitty image to twitch
🗪
1:46:30filiadelski Q: You get Anna to draw something cute, like a cat, and then upload the kitty image to twitch
🗪
1:47:58tbodt_ Q: You can upload emotes from a page in the twitch dashboard
🗪
1:47:58tbodt_ Q: You can upload emotes from a page in the twitch dashboard
🗪
1:47:58tbodt_ Q: You can upload emotes from a page in the twitch dashboard
🗪
1:48:17dudeinbasement1 Q: What is the best way to add to an atlas map? Is it costly to "re-update" the image to the GPU (OpenGL)?
🗪
1:48:17dudeinbasement1 Q: What is the best way to add to an atlas map? Is it costly to "re-update" the image to the GPU (OpenGL)?
🗪
1:48:17dudeinbasement1 Q: What is the best way to add to an atlas map? Is it costly to "re-update" the image to the GPU (OpenGL)?
🗪
1:49:04flyingsolomon Q: What do you think about a tree-based undo system (where you do not lose the redo state when changing after undo, but create branches)?
🗪
1:49:04flyingsolomon Q: What do you think about a tree-based undo system (where you do not lose the redo state when changing after undo, but create branches)?
🗪
1:49:04flyingsolomon Q: What do you think about a tree-based undo system (where you do not lose the redo state when changing after undo, but create branches)?
🗪
1:50:06ayn0n_0mus Q: Thoughts on ML, will your game use it?
🗪
1:50:06ayn0n_0mus Q: Thoughts on ML, will your game use it?
🗪
1:50:06ayn0n_0mus Q: Thoughts on ML, will your game use it?
🗪
1:50:29pythno Q: You said you wouldn't use the internet at work. I'd like to do that but then I am missing MSDN and the OpenGL documentation. What do you do when you don't have this info locally available? Asking because I'd prefer not to have the internet around when coding
🗪
1:50:29pythno Q: You said you wouldn't use the internet at work. I'd like to do that but then I am missing MSDN and the OpenGL documentation. What do you do when you don't have this info locally available? Asking because I'd prefer not to have the internet around when coding
🗪
1:50:29pythno Q: You said you wouldn't use the internet at work. I'd like to do that but then I am missing MSDN and the OpenGL documentation. What do you do when you don't have this info locally available? Asking because I'd prefer not to have the internet around when coding
🗪
1:51:47onebitbrain Q: You talked about threading being hard yesterday. Would you use OpenMP if MSVC upgraded, or would you prefer something else?
🗪
1:51:47onebitbrain Q: You talked about threading being hard yesterday. Would you use OpenMP if MSVC upgraded, or would you prefer something else?
🗪
1:51:47onebitbrain Q: You talked about threading being hard yesterday. Would you use OpenMP if MSVC upgraded, or would you prefer something else?
🗪
1:55:49We're all done
🗩
1:55:49We're all done
🗩
1:55:49We're all done
🗩