mirror of
https://github.com/open-goal/jak-project
synced 2026-08-22 07:04:29 -04:00
use only the real level name in the Loader (#3495)
This fixes issues with certain Jak 3 levels not rendering because there is a mismatch between the DGO name, nickname and real level name (bsp name). FR3s use a different filename, so you can delete the ones you have after this is merged. This affects custom levels, but I don't have that toolchain set up so someone else will have to test that.
This commit is contained in:
@@ -168,9 +168,8 @@ level_tools::BspHeader extract_bsp_from_level(const ObjectFileDB& db,
|
||||
lg::warn("Skipping extract for {} because the BSP file was not found", dgo_name);
|
||||
return {};
|
||||
}
|
||||
std::string level_name = bsp_rec->name;
|
||||
|
||||
lg::info("Processing level {} ({})", dgo_name, level_name);
|
||||
lg::info("Processing {}...", dgo_name);
|
||||
const auto& bsp_file = db.lookup_record(*bsp_rec);
|
||||
bool ok = is_valid_bsp(bsp_file.linked_data);
|
||||
ASSERT(ok);
|
||||
@@ -207,7 +206,7 @@ level_tools::BspHeader extract_bsp_from_level(const ObjectFileDB& db,
|
||||
auto as_tfrag_tree = dynamic_cast<level_tools::DrawableTreeTfrag*>(draw_tree.get());
|
||||
ASSERT(as_tfrag_tree);
|
||||
std::vector<std::pair<int, int>> expected_missing_textures;
|
||||
auto it = hacks.missing_textures_by_level.find(level_name);
|
||||
auto it = hacks.missing_textures_by_level.find(bsp_header.name);
|
||||
if (it != hacks.missing_textures_by_level.end()) {
|
||||
expected_missing_textures = it->second;
|
||||
}
|
||||
@@ -219,7 +218,7 @@ level_tools::BspHeader extract_bsp_from_level(const ObjectFileDB& db,
|
||||
}
|
||||
extract_tfrag(as_tfrag_tree, fmt::format("{}-{}", dgo_name, i++),
|
||||
bsp_header.texture_remap_table, tex_db, expected_missing_textures, level_data,
|
||||
false, level_name, atest_disable_flag);
|
||||
false, bsp_header.name, atest_disable_flag);
|
||||
} else if (draw_tree->my_type() == "drawable-tree-instance-tie") {
|
||||
auto as_tie_tree = dynamic_cast<level_tools::DrawableTreeInstanceTie*>(draw_tree.get());
|
||||
ASSERT(as_tie_tree);
|
||||
@@ -250,7 +249,7 @@ level_tools::BspHeader extract_bsp_from_level(const ObjectFileDB& db,
|
||||
extract_collide_frags(bsp_header.collide_hash, all_ties, config,
|
||||
fmt::format("{}-{}-collide", dgo_name, i++), db.dts, level_data);
|
||||
}
|
||||
level_data.level_name = level_name;
|
||||
level_data.level_name = bsp_header.name;
|
||||
|
||||
return bsp_header;
|
||||
}
|
||||
@@ -358,13 +357,12 @@ void extract_from_level(const ObjectFileDB& db,
|
||||
level_data.serialize(ser);
|
||||
auto compressed =
|
||||
compression::compress_zstd(ser.get_save_result().first, ser.get_save_result().second);
|
||||
lg::info("stats for {}", dgo_name);
|
||||
lg::info("stats for {}", level_data.level_name);
|
||||
print_memory_usage(level_data, ser.get_save_result().second);
|
||||
lg::info("compressed: {} -> {} ({:.2f}%)", ser.get_save_result().second, compressed.size(),
|
||||
100.f * compressed.size() / ser.get_save_result().second);
|
||||
file_util::write_binary_file(
|
||||
output_folder / fmt::format("{}.fr3", dgo_name.substr(0, dgo_name.length() - 4)),
|
||||
compressed.data(), compressed.size());
|
||||
file_util::write_binary_file(output_folder / fmt::format("{}.fr3", level_data.level_name),
|
||||
compressed.data(), compressed.size());
|
||||
|
||||
if (config.rip_levels) {
|
||||
auto back_file_path = file_util::get_jak_project_dir() / "glb_out" /
|
||||
|
||||
Reference in New Issue
Block a user