jak-project/decompiler/data/TextureDB.h
water111 df646282ab
[jak 2] fix texture lookup problem (#2373)
This should fix a bunch of texture-related issues by generating a table
of overlapping textures and just... adjusting them slightly so they
don't overlap. It's not the most elegant solution in the world, but I
think it's no worse than the existing hard-coded tpage dir stuff.
2023-03-21 19:41:14 -04:00

43 lines
1 KiB
C++

#pragma once
#include <map>
#include <set>
#include <string>
#include <unordered_map>
#include <vector>
#include "common/common_types.h"
#include "common/util/FileUtil.h"
namespace decompiler {
struct TextureDB {
struct TextureData {
u16 w, h;
std::string name;
u32 page;
u32 dest = -1;
std::vector<u32> rgba_bytes;
u32 num_mips = -1;
};
std::map<u32, TextureData> textures;
std::unordered_map<u32, std::string> tpage_names;
std::unordered_map<std::string, std::set<u32>> texture_ids_per_level;
void add_texture(u32 tpage,
u32 texid,
const std::vector<u32>& data,
u16 w,
u16 h,
const std::string& tex_name,
const std::string& tpage_name,
const std::vector<std::string>& level_names,
u32 num_mips,
u32 dest);
void replace_textures(const fs::path& path);
std::string generate_texture_dest_adjustment_table() const;
};
} // namespace decompiler