[video output=day505 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Placing Multiple Entities at a Time" vod_platform=youtube id=_AGAW_82e0w annotator=Miblo]
[0:00][Recap and set the stage for the first day in the new office, only possible today thanks to [@naysayer88 Jon] and [@aerettberg Anna]][:speech]
[4:00][Show our proportional derivative controlled :camera behaviour][:run]
[6:17][Plan to clean out the :camera wobble in Z, cap the speed at which the camera considers changes and re-enable the debug camera][:run]
[10:01][Hit the InvalidCodePath in BeginWorldChange()][:"procedural generation" :run]
[11:21][Restart to get the correct font size in ~4coder, and reset the timer][:admin]
[14:46][Increase the MaxEntityCount and MaxBrainCount in BeginWorldChange()][:"procedural generation"]
[15:59][Consider introducing a special :camera for NPC interactions][:run]
[16:38][Special :camera][:research]
[22:40][Enable UpdateCameraForEntityMovement() to handle special :camera regions inside rooms more specifically]
[24:49][Change UpdateCameraForEntityMovement() to offset special cameras relative to the enclosure, rather than the simulation centre][:camera]
[28:52][Special :camera triggers][:research]
[32:27][Set up to enable GenerateRoom() to query entity placement, introducing gen_room_grid][:"procedural generation"]
[54:34][Introduce gen_entity_group for GenerateRoom() to place and tag grouped entities][:"procedural generation"]
[1:04:56][Grouping entities, introducing AddEntityGroup() and a version of PlaceEntity() that chains entities onto a group][:"entity system" :"procedural generation"]
[1:21:19][Introduce FindPlaceToPutEntityGroup()][:"entity system" :"procedural generation"]
[1:27:04][Find that we placed our entities correctly][:"entity system" :"procedural generation" :run]
[1:27:23][Plausible placement of entity group members][:"entity system" :"procedural generation" :speech]
[1:28:20][Remove P from gen_room_tile_query][:"entity system" :"procedural generation"]
[1:30:51][Dual-entity and special :camera placement][:"entity system" :"procedural generation" :speech]
[1:32:01][Introduce RecursiveOpenTileSearch() to place an entire entity group][:"entity system" :"procedural generation"]
[1:52:25][Introduce a version of + for gen_v3][:mathematics]
[1:53:27][Find that the game works][:run]
[1:54:13][Try making PlaceOrphan() place a cat to the south of each orphan, to test our entity grouping][:"entity system" :"procedural generation"]
[1:58:52][Fix RecursiveOpenTileSearch() to set Tile->Open to true if it couldn't place an entity][:"entity system" :"procedural generation"]
[2:00:29][Find cats positioned to the south of orphans][:"entity system" :"procedural generation" :run]
[2:00:42][Try making PlaceOrphan() place a cat to the north of each orphan][:"entity system" :"procedural generation"]
[2:00:56][Find cats positioned to the north of orphans][:"entity system" :"procedural generation" :run]
[2:01:11][Q&A][:speech]
[2:02:39][@thebirkisreal][Q: Haven't done much on dumpview lately as it's pending a rewrite in ~Odin. But I did just get to use dumpview for the first time today. Here is some usage code.[ref
    site=Pastebin
    url=https://pastebin.com/DdYM4M4D] And for those asking this is not Jai, it's ~Odin]
[2:02:53][@davechat][Q: Could you make an elevator in the game?]
[2:03:24][@iwrestledabeer][Q: Hey [@cmuratori Casey]! Off-topic: Is it beneficial performance-wise to use switch statements instead of if-else blocks? As far as I could understand from disassembly, using switch statement allows to compute where to jump to directly, without invoking the cmp instruction for each case. Is that correct?][:language :performance]
[2:05:00][@genericfeller][Off-topic, but I watched your 30 Million Lines of Code,[ref
    site="Handmade Miscellany"
    page="The Thirty-Million Line Problem"
    url=https://guide.handmadehero.org/misc/30mlocp/] and was wondering whether you think that Intel and other hardware manufacturers would be more likely to adopt an :ISA as a response to consumer-unfriendly policies from Microsoft (if they're scared of consumer PC markets collapsing)?]
[2:08:30][@wheeel][Q: Are all rooms going to be procedurally generated or are they gonna be hand-cranked and then just populated with certain entities procedurally?][:"procedural generation"]
[2:08:34][@gaius_is_best_colossus][Q: Have you played any of the Souls games? What do you think of them? (I don't know if I asked this question before)]
[2:08:50][@thecrypticmind][Is the game going to contain both 2D and 3D assets? Or are the cubes only for testing purposes?]
[2:09:24][@pythno][Q: Regarding Intel shipping their own "platform that just runs": How would that look? Would there be a minimalistic OS boot up once you power on the machine? Sorry, if this is obvious but I don't quite get it]
[2:12:38][@thegeekpirate][Q: Favourite cheese?]
[2:13:06][@aidsjorb][Q: Any more office moving drama / insanity to share? Has the reason for the move been talked about?]
[2:13:48][Wrap it up][:speech]
[/video]
