[video output=day311 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Allowing Manual Sorting" vod_platform=youtube id=SkTRPn7pjfw annotator=Miblo]
[0:10][Recap and set the stage for the day]
[4:28][Plan to provide the ability to sort a collection of sprites]
[5:38][Blackboard: Our options for sorting a collection of sprites]
[11:12][Run the game and see our current situation]
[12:18][handmade_render_group.cpp: Remove NewElement from PushRenderElement_(), and introduce the notion of a writeback for the SortKey which overwrites a previously written SortKey with new information]
[16:13][handmade_render_group.cpp: Consider making PushBitmap() return something for PushRenderElement_() to take and modify]
[17:31][handmade_entity.cpp: Make UpdateAndRenderEntities() call BeginAggregateSortKey() and EndAggregateSortKey() which marks which entities share a SortKey]
[23:02][handmade_render_group.cpp: Implement BeginAggregateSortKey() and EndAggregateSortKey()]
[30:25][handmade_render_group.cpp: Enable PushRenderElement_() to correctly set the AggregateBound for Y- and Z-sprites]
[31:50][handmade_render.cpp: Introduce IsYSprite()]
[36:18][Run the game and see that it actually looks somewhat workable]
[37:35][handmade_render_group.h: Remove the daisy-chaining from the render_group_entry_header struct]
[39:52][Run the game and consider the question of what order we put the hero sprites in]
[40:11][handmade_world_mode.cpp: Reorder the AddPiece() calls in AddPlayer()]
[40:44][handmade_world_mode.cpp: Stop those AddPiece() calls from taking such tweaky values]
[42:36][Consider how to articulate the intention that one sprite (e.g. the head) must always draw in front of another (e.g. the aggregated body)]
[49:55][Blackboard: Manual Edge Specification]
[53:48][Q&A][:speech]
[56:18][@cmuratori][How do I get insobot to ask a question?]
[56:54]["insobot is kind of a national treasure"][:speech][quote 502]
[56:58][Close it down][:speech]
[/video]
