[3:06][Consider approaching alpha fade and upgrading our understanding of the camera]
[5:48][Run the game to assess our current situation]
[8:44][Determine to fix the camera code]
[9:41][handmade_world_mode.cpp and handmade_render_group.cpp: Make PlayWorld() generate fewer rooms and SetCameraTransform() disable the fog in debug mode]
[12:39][Run the game to see that the fog is disabled, and consider how to define the extents of a room]
[16:10][Determine to extend the debug rectangles into the third dimension as per @Miblo's request]
[17:39][Blackboard: Drawing rectangles on sheets]
[18:29][handmade_render_group.cpp: Introduce PushVolumeOutline() based on PushCube()]
[22:06][Blackboard: Cube edges, faces and vertices]
[23:09][handmade_render_group.cpp: Enable PushVolumeOutline() to set the cube vertices]
[25:16][Blackboard: Defining cube vertices and edges]
[28:14][handmade_render_group.cpp: Enable PushVolumeOutline() to call PushLineSegment() for each edge]
[41:36][Blackboard: Computing thickness for our line segment, an end user-facing approach being to use a distance field in a shader, but using the cross product in a debug scenario]
[45:03][Blackboard: Differential Geometry (gradient, divergence and curl) and Geometric Algebra (dot and cross product)]
[51:00][Blackboard: Inner / dot product]
[53:04][Blackboard: Cross product]
[1:00:07][Blackboard: Solving for the cross product vectors that go in the same direction]
[1:06:15][Hunt for a computer algebra system to solve our equation]
[2:06:24][@insofaras][hmd_bot handles the Q&A message and seems to be dead]
[2:06:54][@desuused][Here's your equations solved in Maxima \[image\], and here's your equations solved with expanding (sinθ)^2 through dot product: \[image\]. I think this approach is completely wrong when trying to derive cross product]
[2:07:50][@ingenero][What would be the downside of drawing your debug lines as 3D cylinders or extruded rectangles? It seems like that would look a little nice when viewed from all angles]
[2:10:18][@vaualbus][Also shall we draw the cubes around the room?]
[2:10:47][handmade_entity.cpp: Make UpdateAndRenderEntities() draw collision volumes]
[2:12:06][Run the game to see what that does]
[2:12:37][handmade_render_group.cpp: Make PushVolumeOutline() take the ObjectTransform into account]
[2:13:32][Run the game to see the collision volumes]
[2:15:10][handmade_render_group.cpp: Enable SetCameraTransform() to set the DebugXForm in both modes, and run the game to see the collision volumes in the game mode]
[2:16:44][@desuused][You mentioned that you use discriminated unions. Have you seen Rust's implementation of sum types?]
[2:16:59][@jezzi23][I was looking at how the vector types are set up in Handmade Hero as unions. As far as I know, it's undefined behaviour to write value to one type of a union and then read as another type. Is doing something like this well defined - vec1.x = 5.0f and then read as vec1.E\[0\] - or is it one of the cases where we rely that a reasonable compiler will do the right thing?]
[2:20:39][@desuused][Would you describe discriminated union to the general public?]
[2:20:50][Blackboard: Struct, as a representations of data in memory]
[2:24:12][Blackboard: Union, as a combination of structs]
[2:26:21][Blackboard: Discriminated union, as a union containing a type field]
[2:30:03][Blackboard: Inheritance in C++]
[2:32:32][@graham1642][Can you give a motivating example for these discriminating unions?]
[2:33:11][Blackboard: A "single dispatch" example in which a discriminated union and inheritance work equally well]
[2:38:54][Blackboard: The tractability of Single vs Double Dispatch]
[2:40:00][Blackboard: A "double dispatch" example in which a discriminated union excels]
[2:46:06][Blackboard: Generating a sparse matrix containing the cases you care about]
[2:49:34][Blackboard: Discriminated unions shine in enabling the ability to write code which looks at the way in which types are set among more than one object]
[2:53:44][@cubercaleb][How would you feel if you wrote the functions for colliding each pair or types, and allowed the compiler to generate the sparse matrix of function calls for you?]
[2:55:09][Recommend researching category theory, with a call for @Pseudonym73]
[3:00:12][@cynokron][Are you hoping JAI will have discriminated unions?]