#pragma once #include #include "Runtime/Particle/CColorElement.hpp" #include "Runtime/Particle/CEmitterElement.hpp" #include "Runtime/Particle/CIntElement.hpp" #include "Runtime/Particle/CModVectorElement.hpp" #include "Runtime/Particle/CParticleDataFactory.hpp" #include "Runtime/Particle/CRealElement.hpp" #include "Runtime/Particle/CSpawnSystemKeyframeData.hpp" #include "Runtime/Particle/CUVElement.hpp" #include "Runtime/Particle/CVectorElement.hpp" /* Documentation at: https://wiki.axiodl.com/w/PART_(File_Format) */ namespace metaforce { class CGenDescription { public: std::unique_ptr x0_PSLT; std::unique_ptr x4_PSWT; std::unique_ptr x8_PSTS; std::unique_ptr xc_POFS; std::unique_ptr x10_SEED; std::unique_ptr x14_LENG; std::unique_ptr x18_WIDT; std::unique_ptr x1c_MAXP; std::unique_ptr x20_GRTE; std::unique_ptr x24_COLR; std::unique_ptr x28_LTME; std::unique_ptr x2c_EMTR; std::unique_ptr x30_EADY; // Added in MP3 bool x30_24_LINE : 1 = false; bool x30_25_FXLL : 1 = false; bool x30_26_AAPH : 1 = false; bool x30_27_ZBUF : 1 = false; bool x30_28_SORT : 1 = false; bool x30_29_LIT_ : 1 = false; bool x30_30_ORNT : 1 = false; bool x30_31_RSOP : 1 = false; bool x31_24_MBLR : 1 = false; bool x31_25_PMAB : 1 = false; bool x31_26_PMUS : 1 = false; bool x31_27_PMOO : 1 = true; bool x31_28_VMD1 : 1 = false; bool x31_29_VMD2 : 1 = false; bool x31_30_VMD3 : 1 = false; bool x31_31_VMD4 : 1 = false; bool x32_24_CIND : 1 = false; bool x32_25_OPTS : 1 = false; std::unique_ptr x34_MBSP; std::unique_ptr x38_SIZE; std::unique_ptr x3c_ROTA; std::unique_ptr x40_TEXR; std::unique_ptr x44_TIND; SParticleModel x48_PMDL; std::unique_ptr x58_PMOP; std::unique_ptr x5c_PMRT; std::unique_ptr x60_PMSC; std::unique_ptr x64_PMCL; std::unique_ptr x68_VEL1; std::unique_ptr x6c_VEL2; std::unique_ptr x70_VEL3; std::unique_ptr x74_VEL4; SChildGeneratorDesc x78_ICTS; std::unique_ptr x88_NCSY; std::unique_ptr x8c_CSSD; SChildGeneratorDesc x90_IDTS; std::unique_ptr xa0_NDSY; SChildGeneratorDesc xa4_IITS; std::unique_ptr xb4_PISY; std::unique_ptr xb8_SISY; std::unique_ptr xbc_KSSM; SSwooshGeneratorDesc xc0_SSWH; std::unique_ptr xd0_SSSD; std::unique_ptr xd4_SSPO; SElectricGeneratorDesc xd8_SELC; std::unique_ptr xe4_SESD; std::unique_ptr xe8_SEPO; std::unique_ptr xec_LTYP; std::unique_ptr xf0_LCLR; std::unique_ptr xf4_LINT; std::unique_ptr xf8_LOFF; std::unique_ptr xfc_LDIR; std::unique_ptr x100_LFOT; std::unique_ptr x104_LFOR; std::unique_ptr x108_LSLA; std::unique_ptr x10c_ADV1; std::unique_ptr x110_ADV2; std::unique_ptr x114_ADV3; std::unique_ptr x118_ADV4; std::unique_ptr x11c_ADV5; std::unique_ptr x120_ADV6; std::unique_ptr x124_ADV7; std::unique_ptr x128_ADV8; std::unique_ptr x164_ADV9; s32 x174_DFLG = 0; // Added in MP2 s32 x178_ = 0; // In MP3, need to check MP2 s32 x17c_ = 0; // In MP3, need to check MP2 /* Custom additions */ std::unique_ptr m_bevelGradient; /* FourCC BGCL */ CGenDescription() = default; }; } // namespace metaforce