From e4d510fb37dae1e0e053c3fd4d091f1df6adee99 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Tue, 15 Jun 2021 15:48:03 +0100 Subject: [PATCH] Index hero/code637 --- cmuratori/hero/code/code637.hmml | 69 ++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 cmuratori/hero/code/code637.hmml diff --git a/cmuratori/hero/code/code637.hmml b/cmuratori/hero/code/code637.hmml new file mode 100644 index 0000000..de63bf7 --- /dev/null +++ b/cmuratori/hero/code/code637.hmml @@ -0,0 +1,69 @@ +[video output=day637 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Adding Collision Spheres" vod_platform=youtube id=HAHcu69HlK0 annotator=Miblo] +[0:01][Welcome with thanks to our sponsor the Rust Recovery Foundation][:speech] +[1:25][Recap and set the stage for the day][:collision :speech] +[2:16][Demo our :collision system][:run] +[3:00][:Collision system clean-up phase: 1) Spatial partition][:performance :run] +[5:33][:Collision system clean-up phase: 2) Spherical collision volume][:performance :run] +[8:17][:Collision system clean-up phase: 3) Partial embedding][:performance :run] +[9:25][Determine to add :collision spheres][:research] +[11:39][Set up CollidesAtP() to support :collision spheres] +[15:54][Respecify CollidesAtP() to compute :collision of various shapes in the same branch] +[18:22][@ronin825][Branchless programming?] +[19:09][Introduce ShapesCollide()][:collision :geometry] +[20:10][@abecderic][If less code is better, isn't no code at all most best? Why are we even doing programming then?] +[22:29][Implement ShapesCollide()][:collision :geometry] +[33:59][Describe ShapesCollide()][:collision :geometry :research] +[35:34][Add EntityFlag_SphereCollision and fix compile errors][:collision] +[36:07][Rectangular :collision continues working][:run] +[37:14][Make the Glove use SphereCollision in AddPlayer()][:collision] +[37:45][We don't know if our Glove is a sphere][:collision :geometry :run] +[38:25][Make UpdateAndRenderEntities() draw SphereCollision entities in orange][:collision :"debug visualisation" :geometry] +[39:19][Our Glove is a sphere][:collision :"debug visualisation" :geometry :run] +[40:45][Double-check CollidesAtP() and ShapesCollide()][:collision :geometry :research] +[45:53][Consider diagramming spherical :collision][:"debug visualisation" :geometry :research] +[49:17][Determine to enable CollidesAtP() to use the repulsion direction computed by ShapesCollide()][:collision :geometry :research] +[52:33][Consider adding spherical drawing to the renderer][:"debug visualisation" :geometry :research] +[55:34][Change ShapesCollide() to use CenterDelta and Radius for its rectangle vs rectangle test][:"debug visualisation" :collision :geometry] +[1:00:37][The Glove's spring is wild][:collision :geometry :run] +[1:01:11][Make the rectangle vs rectangle :collision test less permissive in ShapesCollide()][:"debug visualisation" :geometry] +[1:01:48][Familiar movement is still broken][:collision :geometry :run] +[1:02:14][Double-check the rectangle vs rectangle :collision test in ShapesCollide()][:geometry :research] +[1:02:23][Use Square() in the rectangle vs rectangle :collision test in ShapesCollide()][:geometry] +[1:03:36][@Molly][Meow][:speech] +[1:05:20][Our familiar does move and collide fine][:collision :geometry :run] +[1:05:59][Reflect on ShapesCollide()][:collision :geometry :research] +[1:07:08][@Molly][Scrolling around][:speech] +[1:08:18][Consider improvements to ShapesCollide()][:collision :geometry :research] +[1:09:57][@Molly][Put the mouse out of action][:speech] +[1:10:51][Suspect improvements to shape vs shape :collision][:research] +[1:11:52][Instrument ShapesCollide() to diagram various shaped collisions][:collision :"debug visualisation" :geometry] +[1:20:39][Set up MoveEntity() to call DIAGRAM_Phase()][:collision :"debug visualisation" :geometry] +[1:22:34][Create handmade_diagram.h with stubs of the various DIAGRAM_*() functions][:"debug visualisation"] +[1:27:44][Q&A][:speech] +[1:27:51][@thesandvichmaker][@handmade_hero I just tested and ~4coder 4.1.8 does fix the indentation. It's a one-line diff] +[1:28:14][@an0nymal][const? Did I see him instinctively type const][:language] +[1:30:32][@emperormetallix][Q: Why is a new diagramming system needed? Why not just use the existing renderer?][:"debug visualisation"] +[1:30:46][Demo the current :"debug visualisation"][:run] +[1:32:20][@tfnw][@handmade_hero Off-topic: Should the PushArray() for SpatialGridLeaves in handmade_lighting.cpp be aligned to 16 bytes, for movaps on 128-bit memory operands?][:lighting :memory] +[1:34:37][Make GridBuildSpatialPartition() align the SpatialGridLeaves PushArray() to 16 bytes][:lighting :memory] +[1:35:12][The :lighting remains fine][:memory :run] +[1:37:04][@mindmark42][Q: Are we still planning on adding cylinder or capsule collisions?][:collision] +[1:37:28][@tfnw][@handmade_hero Should the ID.Value be checked to be not null in handmade_asset.cpp?][:"asset system"] +[1:38:07][@tfnw][LoadFont()][:"asset system"] +[1:38:51][Make LoadFont() check that ID.Value is not null][:"asset system"] +[1:41:33][@mooofdoom][@handmade_hero Hi [@cmuratori Casey]! First time catching your stream live after I finally caught up on every [~hero Handmade Hero] episode. Wanted to tell you it's been really fun and very enlightening following along. Super looking forward to Star Code Galaxy as well!] +[1:41:55][@thesandvichmaker][@handmade_hero For the upgrade to ~4coder 4.1.8, it seems to break something with modal bindings] +[1:42:41][@centhusiast][Q: Could you explain flood fill algorithm as it was used in the Minesweeper game? Thanks!] +[1:43:15][@thesandvichmaker][@handmade_hero The fix for the auto indentation is one line. You could apply it to your current ~4coder] +[1:43:24][@mooofdoom][Q: Any reason you only have the xyz-diagonal case in the voxel :collision system? Wouldn't you want xy-, xz-, and yz-diagonal motion as well?] +[1:44:54][TODO(casey): Try having edge-diagonal motion as well as corner-diagonal motion?][:collision] +[1:45:19][@emperormetallix][Q: Does [~hero Handmade Hero] really not have a sphere drawing routine?][:rendering] +[1:46:48][@sagian2005][Q: Couldn't you just apply a circle to a camera-facing quad to fake a sphere?][:rendering] +[1:47:18][@centhusiast][Q: This algorithm[ref + site=Wikipedia + page="Flood fill" + url=https://en.wikipedia.org/wiki/Flood_fill]] +[1:48:25][@centhusiast][Q: How does it work?] +[1:51:37][@thesandvichmaker][Will it be finished before Cyberpunk 2077?] +[1:52:42][Thanks, everyone][:speech] +[/video]