Files
jak-project/game/graphics/opengl_renderer/Loader.cpp
T
water111 a8342aef31 [graphics] TIE extractor (#1026)
* 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
2021-12-26 12:33:51 -05:00

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;
}
}