[45:07][Make UpdateBest() draw cells based on their consideration and occupancy][:collision :"debug visualisation"]
[47:10][A flash of red may precede interpenetration][:collision :"debug visualisation" :run]
[48:17][Scour MoveEntity() and CollidesAtP() for bugs][:collision :research]
[51:37][Remove OccupiedCount from MoveEntity()][:collision]
[51:53][Scour MoveEntity() for bugs (cont.)][:collision :research]
[56:40][@jskrist][It looks like the test volume is so small that it is only colliding at the wall boundary, and when the test cell pushes far enough into the wall, it is no longer detecting a :collision]
[59:05][@mindmark42][Doesn't CollidesAtP() need to grow each :collision volume with the moving entity's collision volume?]
[59:40][Plan to capture :collision][:run]
[1:00:18][Hunt the code for the F-key handling][:"input handling" :research]
[1:01:29][Add a DevMode_collision action on F9][:collision :"input handling"]
[1:02:20][Introduce CollisionEditor() for UpdateAndRenderEditor() to call, augmenting game_mode_world with TimeStepScale][:collision :"debug system"]
[1:06:31][Time does not flow][:run]
[1:06:40][Make PlayWorld() initialise TimeStepScale to 1.0f]
[1:07:30][Time flows but F9 doesn't work][:run]
[1:07:44][Elevate DevMode_collision into the editor section of dev_mode][:collision :"debug system"]
[1:08:55][F9 is still a little weird][:run]
[1:09:04][Set DevMode_last_editor to DevMode_collision][:collision :"debug system"]
[1:09:18][Slow down the TimeStep in Collision Recorder][:collision :"debug system" :run]
[1:10:22][Our configuration of :collision boxes seems wrong][:"debug visualisation" :run]
[1:17:44][Try to provoke stickiness][:collision :"debug visualisation" :run]
[1:18:42][Make MoveEntity() finish by calling RefineVoxelPlacement()][:collision]
[1:19:04][Determine to set up a test case][:collision :"debug visualisation" :run]
[1:19:16][Make CreateWorld() place the player in their bedroom][:"procedural generation"]
[1:19:53][Try to penetrate the bedroom wall at different timesteps][:collision :"debug visualisation" :run]
[1:22:05][Investigate why ToP is erroneously affecting the :collision detection][:research]
[1:23:57][Add a lerp sanitation assertion in RefineVoxelPlacement()][:collision :mathematics]
[1:24:44][Never hit that assertion][:collision :mathematics :run]
[1:24:57][Make RefineVoxelPlacement() draw the lerp test in cyan (can place) or magenta (cannot place)][:collision :"debug visualisation" :mathematics]
[1:26:58][Check out our refinement placement][:collision :"debug visualisation" :mathematics :run]
[1:27:41][Add a "Single Stepping" boolean button to CollisionEditor(), augmenting game_mode_world with SingleStep][:collision :"debug system" :ui]
[1:33:41][Single Stepping does not work][:collision :"debug system" :run]
[1:33:51][Change CollisionEditor() to draw a Red / Green "Single Stepping" button][:collision :"debug system" :ui]
[2:07:52][Let MoveEntity() compute the occupancy of all surrounding cells][:collision]
[2:08:12][Our combined corner Occupied checking is rock solid][:collision :run]
[2:08:29][Toggle on the individual x, y and z Occupied checking in MoveEntity()][:collision]
[2:08:39][Our :collision is much more stable][:run]
[2:11:31][Determine to improve gliding][:collision :run]
[2:13:01][Q&A][:speech]
[2:13:12][@jskrist][Can you still hop / push the glove into the wall?][:collision]
[2:13:14][Hopping no longer pushes the glove through the wall][:collision :run]
[2:16:10][@buildervanished][@handmade_hero Shouldn't you also add Eps to the min side in the conservative test?][:collision :geometry]
[2:17:29][TODO(casey): RectanglesIntersect should probably be changed to be properly >= and < instead of >= and <= ??][:geometry]
[2:18:18][@fat_dratini][@handmade_hero What kind of :pathfinding would you use for the glove's return path? A* or do you use something simpler?][:collision]
[2:18:58][@miscellus][@handmade_hero What would you do differently for :collision detection in non AABB :geometry?]
[2:19:26][@centhusiast][Q: I think this C model of programming is a bit time consuming in that we need to compile and look at the result and go back and forth to fix a problem. Do you think what would be a better model of programming and I also don't mean the scripting :language]
[2:19:42][Demo :"hot reloading"][:run]
[2:21:56][@emperormetallix][In retrospect, would it have been worth it to make a visualiser for :collision code before actually writing it?][:"debug visualisation"]
[2:23:11][The glove can stick and fail to glide][:collision :run]
[2:24:20][Make MoveEntity() only tell UpdateBest() that Occupied is true if all (rather than any) sides are occupied][:collision]
[2:25:03][Gliding happens more nicely][:collision :run]
[2:28:28][@mindmark42][Q: Would :collision cylinders have rounded caps or flat?]
[2:28:59][@d0g_me4t][Q: Couldn't you simply clamp to X,Y. What does having Z axis movement on the glove in this problem space accomplish?][:collision :geometry]
[2:29:06][Demo :movement in Z][:collision :run]
[2:30:53][@jskrist][The :collision could have a max z delta]
[2:32:12][Wrap it up with a glimpse into the future][:speech]