mirror of
https://github.com/open-goal/jak-project
synced 2026-08-22 07:04:29 -04:00
[glb export] Export bones. (#3087)

This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include "decompiler/level_extractor/BspHeader.h"
|
||||
#include "decompiler/level_extractor/extract_actors.h"
|
||||
#include "decompiler/level_extractor/extract_collide_frags.h"
|
||||
#include "decompiler/level_extractor/extract_joint_group.h"
|
||||
#include "decompiler/level_extractor/extract_merc.h"
|
||||
#include "decompiler/level_extractor/extract_shrub.h"
|
||||
#include "decompiler/level_extractor/extract_tfrag.h"
|
||||
@@ -122,12 +123,14 @@ void extract_art_groups_from_level(const ObjectFileDB& db,
|
||||
const TextureDB& tex_db,
|
||||
const std::vector<level_tools::TextureRemap>& tex_remap,
|
||||
const std::string& dgo_name,
|
||||
tfrag3::Level& level_data) {
|
||||
tfrag3::Level& level_data,
|
||||
std::map<std::string, level_tools::ArtData>& art_group_data) {
|
||||
const auto& files = db.obj_files_by_dgo.at(dgo_name);
|
||||
for (const auto& file : files) {
|
||||
if (file.name.length() > 3 && !file.name.compare(file.name.length() - 3, 3, "-ag")) {
|
||||
const auto& ag_file = db.lookup_record(file);
|
||||
extract_merc(ag_file, tex_db, db.dts, tex_remap, level_data, false, db.version());
|
||||
extract_joint_group(ag_file, db.dts, db.version(), art_group_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,8 +276,9 @@ void extract_common(const ObjectFileDB& db,
|
||||
confirm_textures_identical(tex_db);
|
||||
|
||||
tfrag3::Level tfrag_level;
|
||||
std::map<std::string, level_tools::ArtData> art_group_data;
|
||||
add_all_textures_from_level(tfrag_level, dgo_name, tex_db);
|
||||
extract_art_groups_from_level(db, tex_db, {}, dgo_name, tfrag_level);
|
||||
extract_art_groups_from_level(db, tex_db, {}, dgo_name, tfrag_level, art_group_data);
|
||||
|
||||
std::set<std::string> textures_we_have;
|
||||
|
||||
@@ -322,7 +326,7 @@ void extract_common(const ObjectFileDB& db,
|
||||
if (dump_levels) {
|
||||
auto file_path = file_util::get_jak_project_dir() / "glb_out" / "common.glb";
|
||||
file_util::create_dir_if_needed_for_file(file_path);
|
||||
save_level_foreground_as_gltf(tfrag_level, file_path);
|
||||
save_level_foreground_as_gltf(tfrag_level, art_group_data, file_path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,12 +343,14 @@ void extract_from_level(const ObjectFileDB& db,
|
||||
return;
|
||||
}
|
||||
tfrag3::Level level_data;
|
||||
std::map<std::string, level_tools::ArtData> art_group_data;
|
||||
add_all_textures_from_level(level_data, dgo_name, tex_db);
|
||||
|
||||
// the bsp header file data
|
||||
auto bsp_header =
|
||||
extract_bsp_from_level(db, tex_db, dgo_name, config.hacks, extract_collision, level_data);
|
||||
extract_art_groups_from_level(db, tex_db, bsp_header.texture_remap_table, dgo_name, level_data);
|
||||
extract_art_groups_from_level(db, tex_db, bsp_header.texture_remap_table, dgo_name, level_data,
|
||||
art_group_data);
|
||||
|
||||
Serializer ser;
|
||||
level_data.serialize(ser);
|
||||
@@ -366,7 +372,7 @@ void extract_from_level(const ObjectFileDB& db,
|
||||
auto fore_file_path = file_util::get_jak_project_dir() / "glb_out" /
|
||||
fmt::format("{}_foreground.glb", level_data.level_name);
|
||||
file_util::create_dir_if_needed_for_file(fore_file_path);
|
||||
save_level_foreground_as_gltf(level_data, fore_file_path);
|
||||
save_level_foreground_as_gltf(level_data, art_group_data, fore_file_path);
|
||||
}
|
||||
file_util::write_text_file(entities_folder / fmt::format("{}_actors.json", level_data.level_name),
|
||||
extract_actors_to_json(bsp_header.actors));
|
||||
|
||||
Reference in New Issue
Block a user