mirror of
https://github.com/open-goal/jak-project
synced 2026-06-07 03:58:11 -04:00
a8342aef31
* temp * temp * wip * more progress on the instance asm * first half of tie extraction, up to dma lists * more tie extraction * first part figured out maybe * bp1 loop seems to work, bp2 loop does not * bp1 and bp2 appear working. sadly ip is needed * ip1 outline, not working ip2 * just kidding, ip2 seems to work * extraction seems to work * basic rendering working * tie fixes * performance optimization of tie renderer * hook up tie to engine * fix more bugs * cleanup and perf improvements * fix tests * ref tests * mm256i for gcc * CLANG * windows * more compile fixes * fix fast time of day * small fixes * fix after merge * clang
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
#include "Loader.h"
|
|
#include "common/util/Timer.h"
|
|
#include "common/util/FileUtil.h"
|
|
|
|
namespace {
|
|
std::string uppercase_string(const std::string& s) {
|
|
std::string result;
|
|
for (auto c : s) {
|
|
result.push_back(toupper(c));
|
|
}
|
|
return result;
|
|
}
|
|
} // namespace
|
|
|
|
tfrag3::Level* Loader::get_tfrag3_level(const std::string& level_name) {
|
|
const auto& existing = m_tfrag3_levels.find(level_name);
|
|
if (existing == m_tfrag3_levels.end()) {
|
|
fmt::print("Loader needs to load tfrag3 level: {}\n", level_name);
|
|
Timer disk_timer;
|
|
auto data = file_util::read_binary_file(
|
|
file_util::get_file_path({fmt::format("assets/{}.fr3", uppercase_string(level_name))}));
|
|
double disk_load_time = disk_timer.getSeconds();
|
|
|
|
Timer import_timer;
|
|
auto& result = m_tfrag3_levels[level_name];
|
|
Serializer ser(data.data(), data.size());
|
|
result.serialize(ser);
|
|
double import_time = import_timer.getSeconds();
|
|
fmt::print("------------> Load from file: {:.3f}s, import {:.3f}s\n", disk_load_time,
|
|
import_time);
|
|
return &result;
|
|
} else {
|
|
return &existing->second;
|
|
}
|
|
} |