[video output=day300 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Changing from Sort Keys to Sort Rules" vod_platform=youtube id=jrKVyIfv1ek annotator=Miblo]
[0:49][How 2.5D Sorting Works in River City Ransom: Underground[ref
    site="Andrew Russell"
    page="How 2.5D Sorting Works in River City Ransom: Underground"
    url="http://andrewrussell.net/2016/06/how-2-5d-sorting-works-in-river-city-ransom-underground"]]
[9:49][On doing a semantic sort]
[12:51][handmade_render_group.h: Consider separating out the topological sorting from the render group]
[14:48][handmade_entity.cpp: Consider making UpdateAndRenderEntities() draw pieces in front of other pieces]
[17:58][Blackboard: Sorting Rules]
[20:26][Blackboard: Considering the fact that we only need to sort sprites that overlap]
[21:25][Blackboard: The three nominal cases involving Z planar and Y planar sprites]
[22:59][Blackboard: Z overlaps Z]
[30:45][Blackboard: Y overlaps Z]
[34:43][Blackboard: Y overlaps Y]
[39:03][Blackboard: Consolidating these cases]
[44:43][Blackboard: Considering whether this scheme will allow us to sort completely]
[50:32][handmade_sort.cpp: Introduce sort_sprite_bound and make MergeSort() take it]
[52:59][handmade_sort.cpp: Introduce IsInFrontOf() in order to handle our three cases]
[1:02:07][handmade_sort.cpp: Introduce a Swap() that takes sort_sprite_bound]
[1:02:38][Q&A][:speech]
[1:02:58][@thesizik][Isn't it Y (vertical) sprites that have YMin == YMax?]
[1:03:17][handmade_sort.cpp: Correct the sense of BothZSprites in IsInFrontOf()]
[1:03:31][@zouchk42][You always do == float comparisons. How can you ensure those will ever return true because of float precision?]
[1:05:01][@longboolean][In the Y overlaps Z case, what about cliff sides that are holding up the ground sprites (so elevated ground isn't just floating there)? Would that cause an issue with anything?]
[1:05:20][Blackboard: Breaking problematic sprites into two pieces]
[1:06:37][@mvandevander][I literally did the "float ==" thing last week and considered it acceptable for that exact reason, because I was just checking if a value had just been set by me to an exact value on the previous frame or whatever]
[1:09:29][Close it down][:speech]
[/video]
