[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]