#pragma once #include "IOStreams.hpp" #include "CPASDatabase.hpp" #include "zeus/CAABox.hpp" #include "CEffectComponent.hpp" namespace urde { class CCharacterInfo { friend class CAnimData; public: struct CParticleResData { std::vector x0_part; std::vector x10_swhc; std::vector x20_elsc; std::vector x30_elsc; CParticleResData(CInputStream& in, u16 tableCount); }; private: u16 x0_tableCount; std::string x4_name; CAssetId x14_cmdl; CAssetId x18_cskr; CAssetId x1c_cinf; std::vector>> x20_animInfo; CPASDatabase x30_pasDatabase; CParticleResData x44_partRes; u32 x84_unk; std::vector> x88_aabbs; std::vector>> x98_effects; CAssetId xa8_cmdlOverlay = 0; CAssetId xac_cskrOverlay = 0; std::vector xb0_animIdxs; public: CCharacterInfo(CInputStream& in); std::string_view GetCharacterName() const { return x4_name; } CAssetId GetModelId() const { return x14_cmdl; } CAssetId GetSkinRulesId() const { return x18_cskr; } CAssetId GetCharLayoutInfoId() const { return x1c_cinf; } const std::vector>& GetAnimBBoxList() const { return x88_aabbs; } const std::vector>>& GetEffectList() const { return x98_effects; } CAssetId GetIceModelId() const { return xa8_cmdlOverlay; } CAssetId GetIceSkinRulesId() const { return xac_cskrOverlay; } const CParticleResData& GetParticleResData() const { return x44_partRes; } s32 GetAnimationIndex(s32 idx) const { return xb0_animIdxs.at(idx); } const CPASDatabase& GetPASDatabase() const { return x30_pasDatabase; } const s32 GetAnimationIndex(std::string_view) const; }; } // namespace urde