2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 03:47:43 +00:00

Update submodules, initial CTextureCache

This commit is contained in:
2019-12-10 20:51:33 -08:00
parent 4e5921c952
commit 1a13f7e4ee
20 changed files with 213 additions and 114 deletions

View File

@@ -1,10 +1,47 @@
//
// Created by antidote on 12/3/19.
//
#pragma once
#include "Runtime/RetroTypes.hpp"
#include "Runtime/Graphics/CTexture.hpp"
namespace urde {
class CPaletteInfo {
u32 m_format;
u32 m_elementCount;
u64 m_dolphinHash;
#ifndef URDE_CTEXTURECACHE_HPP
#define URDE_CTEXTURECACHE_HPP
public:
CPaletteInfo(CInputStream& in)
: m_format(in.readUint32Big()), m_elementCount(in.readUint32Big()), m_dolphinHash(in.readUint64Big()) {}
};
class CTextureInfo {
ETexelFormat m_format;
u32 m_mipCount;
u16 m_width;
u16 m_height;
u64 m_dolphinHash;
std::optional<CPaletteInfo> m_paletteInfo;
class CTextureCache {};
public:
CTextureInfo(CInputStream& in)
: m_format(ETexelFormat(in.readUint32Big()))
, m_mipCount(in.readUint32Big())
, m_width(in.readUint16Big())
, m_height(in.readUint16Big())
, m_dolphinHash(in.readUint64Big()) {
bool hasPal = in.readBool();
if (hasPal)
m_paletteInfo.emplace(in);
}
};
class CTextureCache {
public:
std::map<CAssetId, CTextureInfo> m_textureInfo;
#endif // URDE_CTEXTURECACHE_HPP
public:
CTextureCache(CInputStream& in);
const CTextureInfo* GetTextureInfo(CAssetId id) const;
};
CFactoryFnReturn FTextureCacheFactory(const urde::SObjectTag& tag, CInputStream& in,
const urde::CVParamTransfer& vparms, CObjectReference* selfRef);
}