Files
jak-project/game/graphics/opengl_renderer/Loader.cpp
T
water111 083202929c [graphics] tfrag3 renderer (#978)
* begin work

* work

* working objs

* exporting

* it works

* before some time of day fixes

* add time of day interp and also fix zbuffer

* some small blending fixes

* improve randomess

* clean up extraction and missing blend mode

* culling, time of day, more level fixes

* more cleanup

* cleanup memory usage

* windows fix
2021-12-04 12:33:18 -05:00

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