[video output=day644 member=cmuratori stream_platform=twitch stream_username=handmade_hero  project=code title="Stepping Through Diagrams" vod_platform=youtube id=p4CO7o2D-AI annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[0:20][Try to reproduce our tunnelling bug][:collision :run]
[2:36][Hit a corner embedding bug][:collision :run]
[5:12][Diagramming displacement upon camera re-centering][:camera :collision :"debug visualisation" :run]
[10:40][Double-check that we checked Day 643][:admin]
[11:21][Consider re-centering the :"debug visualisation" with the :camera][:research]
[13:11][Introduce OffsetDebugDiagrams() for UpdateAndRenderWorld() to call][:camera :"debug visualisation"]
[17:48][Reacquaint ourselves with the :lighting re-centering code][:camera :research]
[20:10][Unify the :camera offset, introducing DIAGRAM_SetOrigin() and augmenting diagram_group with LastOriginP][:"data structure" :"debug visualisation"]
[27:49][Our diagram offsetting is slightly off][:camera :"debug visualisation" :run]
[27:58][Fix the Diagram_Sphere case in DIAGRAM_SetOrigin()][:camera :"debug visualisation"]
[28:27][Our diagram offsetting remains slightly off][:camera :"debug visualisation" :run]
[28:36][Invert the Offset computation in DIAGRAM_SetOrigin()][:camera :"debug visualisation"]
[29:02][Our diagram offsetting remains slightly off][:camera :"debug visualisation" :run]
[29:26][Investigate our incorrect offsetting in DIAGRAM_SetOrigin()][:camera :"debug visualisation" :research]
[32:49][Revert the orientation of the Offset computation in DIAGRAM_SetOrigin()][:camera :"debug visualisation"]
[33:04][Try to understand our offsetting incorrectness][:camera :"debug visualisation" :run]
[35:37][Investigate our incorrect offsetting in DIAGRAM_SetOrigin() (cont.)][:camera :"debug visualisation" :research]
[37:08][Step in to DIAGRAM_SetOrigin()][:camera :"debug visualisation" :run]
[39:11][Make DIAGRAM_SetOrigin() offset the diagrams when LastOriginP and OriginP differ][:camera :"debug visualisation"]
[39:47][Our diagram offsetting is now perfect][:camera :"debug visualisation" :run]
[40:30][Demo the need for stepping through diagrams][:"debug visualisation" :run]
[41:31][Plan to support stepping through diagrams][:"debug visualisation" :research]
[43:15][Enable RenderDiagrams() to filter diagrams][:"debug visualisation"]
[54:27][We see no diagrams][:"debug visualisation" :run]
[54:41][Make RenderDiagrams() initialise ShouldDraw to true][:"debug visualisation"]
[55:01][We see diagrams][:"debug visualisation" :run]
[55:08][Discover ~4coder Fleury right-clicking purple][:admin]
[56:10][Make CollisionEditor() create diagram filter hierarchy stepping buttons][:"debug visualisation" :ui]
[1:01:49][Try out our diagram filter buttons][:"debug visualisation" :ui :run]
[1:02:38][Make CollisionEditor() draw the Up / Down buttons on the same line][:"debug visualisation" :ui]
[1:03:03][Try out our diagram filter buttons][:"debug visualisation" :ui :run]
[1:03:18][Make CollisionEditor() create a diagram stepping slider][:"debug visualisation" :ui]
[1:05:10][Hit a read access violation in EditablePx()][:"debug visualisation" :run :ui]
[1:05:30][Fix CollisionEditor() to only create the diagram stepping slider when valid][:"debug visualisation" :ui]
[1:05:46][Try out our diagram stepping slider][:"debug visualisation" :ui :run]
[1:06:08][Fix CollisionEditor() to print the filter max depth as a u32][:"debug visualisation" :ui]
[1:06:28][Try out our diagram stepping slider][:"debug visualisation" :ui :run]
[1:07:11][Scour RenderDiagrams() for bugs][:"debug visualisation" :ui :research]
[1:08:49][Reduce the verbosity of RenderDiagrams()][:"debug visualisation" :ui]
[1:09:25][Scour RenderDiagrams() for bugs (cont.)][:"debug visualisation" :ui :research]
[1:10:23][Fix RenderDiagrams() to set whether we ShouldDraw a filter level, before preparing ShouldDraw for the next filter level][:"debug visualisation" :ui]
[1:10:43][Try out our diagram filtering buttons and stepping slider][:"debug visualisation" :ui :run]
[1:11:56][Make EditablePx() take a specified dX value][:"debug visualisation" :ui]
[1:12:58][Try out our more precise diagram stepping slider][:"debug visualisation" :ui :run]
[1:13:14][Surpassing the total diagram count is problematic][:"debug visualisation" :ui :run]
[1:14:02][Scour RenderDiagrams() for diagram stepping bugs (cont.)][:"debug visualisation" :ui :research]
[1:15:35][Make RenderDiagrams() assert that DiagramDepth ends up 0][:"debug visualisation"]
[1:15:55][Hit that assertion in RenderDiagrams()][:"debug visualisation" :run]
[1:16:01][Check if our DIAGRAM_Begin() and DIAGRAM_End() calls are balanced][:"debug visualisation" :research]
[1:17:13][Hit that assertion in RenderDiagrams() and see that DiagramDepth ends up 1][:"debug visualisation" :run]
[1:19:10][Consider how best to balance the DIAGRAM_Begin() and DIAGRAM_End() calls in the "Collision Voxel" loop of MoveEntity()][:"debug visualisation" :research]
[1:21:42][Balance the DIAGRAM_Begin() and DIAGRAM_End() calls in the "Collision Voxel" loop of MoveEntity()][:"debug visualisation"]
[1:22:29][Still hit the DiagramDepth == 0 assertion in RenderDiagrams()][:"debug visualisation" :run]
[1:23:24][Double-check that our DIAGRAM_Begin() and DIAGRAM_End() calls are balanced][:"debug visualisation" :research]
[1:24:23][Try unsuccessfully to hit our DiagramDepth == 0 assertion in -Od][:"debug visualisation" :run]
[1:25:42][Hit the DiagramDepth == 0 assertion in -O2 and see from the :asm that DiagramDepth ends up 1][:"debug visualisation" :run]
[1:26:36][Double-check that our DIAGRAM_Begin() and DIAGRAM_End() calls are balanced][:"debug visualisation" :research]
[1:27:32][Fix MoveEntity() to call DIAGRAM_End() before DIAGRAM_Capture()][:"debug visualisation"]
[1:27:58][Try stepping through our diagrams][:"debug visualisation" :run]
[1:29:31][Scour RenderDiagrams() for diagram filtering bugs][:"debug visualisation" :research]
[1:31:23][Fix RenderDiagrams() to reset the DiagramIndex to 0 on Diagram_End][:"debug visualisation"]
[1:32:07][Try stepping through our diagrams at various filter levels][:"debug visualisation" :run]
[1:34:49][Try setting FundamentalUnit to 1.375 in PlayWorld(), to make that and MOTION_DISPLACEMENT_SIZE well-defined in relation to each other][:"entity system"]
[1:37:00][Our glove still gets stuck][:collision :run]
[1:37:14][Our simulation centres don't move by an even amount][:collision :research]
[1:37:52][Consider fixing our :collision voxel sliding issue][:run]
[1:38:17][Reacquaint ourselves with the simulation centering code in UpdateCameraForEntityMovement()][:"entity system" :research]
[1:39:17][Consider rounding the SimulationCenter to the FundamentalUnit][:"entity system" :research]
[1:41:04][Revert the FundamentalUnit to 1.4 in PlayWorld(), and make UpdateCameraForEntityMovement() round the SimulationCenter to the MOTION_DISPLACEMENT_SIZE][:"entity system"]
[1:42:22][No longer hit that :camera movement-based sticking bug][:collision :"entity system" :run]
[1:43:09][Embed in a wall, and step through the diagrams][:collision :run]
[1:44:48][Introduce AlignToMovementVoxel() for UpdateCameraForEntityMovement() to call][:"entity system"]
[1:48:12][Reflect on our diagram stepping][:"debug visualisation" :run]
[1:49:03][Hit a :collision detection bug][:"debug visualisation" :run]
[1:50:02][Investigate our :collision detection bug][:research]
[1:51:35][Reproduce a :collision detection bug][:"debug visualisation" :run]
[1:52:29][Consider enabling ShapesCollide() to dump the diagram data][:"debug visualisation" :run]
[1:57:14][Q&A][:speech]
[1:57:35][@sir_klausi][Maybe it's a gigantic box and not a little one?][:collision]
[1:57:49][@mindmark42][Q: Could it be the hero's head? Odd it's not drawing it][:collision]
[1:58:11][@centhusiast][Q: Can we move diagonally in the game?][:movement]
[1:58:25][@vaualbus][Q: Can we not write somewhere like in the debug output the box P and size?]
[1:59:27][@mindmark42][Q: Is the refinement still running?]
[1:59:43][@longboolean][Q: So is the bug that it got this bug in the corner and then it got launched into the wall, explaining the tunneling?][:collision]
[1:59:57][@centhusiast][Q: Do we still use the entity cache system? I remember it was a cool thing introduced in [~hero Handmade Hero]][:"entity system"]
[2:00:45][@longboolean][Q: So you don't think the mystery box pushed it into the wall?][:collision]
[2:01:57][@sagian2005][Q: Maybe the opposite is happening here: It's colliding then the :camera is moving?][:collision]
[2:02:03][Try to reproduce our :collision detection bug][:"debug visualisation" :run]
[2:05:12][@okprogamer][Q: We can ask general questions now?]
[2:05:33][Try to reproduce our :collision detection bug (cont.)][:"debug visualisation" :run]
[2:06:00][Step through the diagrams of our :collision detection bug][:"debug visualisation" :run]
[2:08:51][@sagian2005][Q: What is that line going off to the left?][:collision :"debug visualisation"]
[2:09:34][@ablindorphan][Q: Are the direction indicators normalised? Any way to also visualise the magnitude?][:collision :"debug visualisation"]
[2:11:40][Investigate the possibility of us having an inverted phantom box][:collision :research]
[2:12:29][Assert in ShapesCollide() that each box HasArea()][:collision]
[2:13:04][Hit our assertion in ShapesCollide()][:collision :run]
[2:13:37][Hit our assertion in ShapesCollide() in -Od and inspect the phantom boxes][:collision :run]
[2:15:04][Make CollidesAtP() only check for collisions if the TestEntity->CollisionVolume HasArea()][:collision]
[2:16:44][Provisionally consider our :collision detection bug to be fixed][:"debug visualisation" :run]
[2:18:26][Wrap it up with a plug of Meow the Infinite: Book Two[ref
    site=Kickstarter
    page="Meow the Infinite: Book Two"
    url=https://www.kickstarter.com/projects/annarettberg/meow-the-infinite-book-two]][:speech]
[2:19:46][@sagian2005][Your camera is still flipped. Meow is backwards]
[2:20:19][Finish wrapping it up with the determination to see what those phantom entities were, and plugs of the Cryptocurrency interviews and Babylon 5 season one recap with Jonas Kyratzes][:speech]
[/video]
