custom levels: support custom regions in jak2/3 (#4300)

This adds support for generating pairs with `DataObjectGenerator` and
defining your own regions and `actor-group`s in custom levels.
This commit is contained in:
Hat Kid
2026-06-03 18:39:21 +02:00
committed by GitHub
parent e00bc479f4
commit 1254d93fbe
22 changed files with 2111 additions and 46 deletions
+5 -2
View File
@@ -66,7 +66,7 @@ size_t generate_u32_array(const std::vector<u32>& array, DataObjectGenerator& ge
return result;
}
std::vector<u8> LevelFile::save_object_file() const {
std::vector<u8> LevelFile::save_object_file() {
DataObjectGenerator gen;
gen.add_type_tag("bsp-header");
@@ -78,7 +78,6 @@ std::vector<u8> LevelFile::save_object_file() const {
//(info file-info :offset 4)
auto file_info_slot = info.add_to_object_file(gen);
gen.link_word_to_byte(1, file_info_slot);
//(bsphere vector :inline :offset-assert 16)
//(all-visible-list (pointer uint16) :offset-assert 32)
//(visible-list-length int32 :offset-assert 36)
@@ -114,8 +113,12 @@ std::vector<u8> LevelFile::save_object_file() const {
//(light-hash light-hash :offset-assert 176)
//(nav-meshes (array entity-nav-mesh) :offset-assert 180)
//(actor-groups (array actor-group) :offset-assert 184)
gen.link_word_to_byte(184 / 4, generate_actor_group_array(gen, actor_groups));
//(region-trees (array drawable-tree-region-prim) :offset-assert 188)
gen.link_word_to_byte(188 / 4,
generate_drawable_tree_region_prim_array(gen, region_array, region_trees));
//(region-array region-array :offset-assert 192)
gen.link_word_to_byte(192 / 4, region_array.slot);
//(collide-hash collide-hash :offset-assert 196)
gen.link_word_to_byte(196 / 4, add_to_object_file(collide_hash, gen));
//(wind-array uint32 :offset 200)