#ifndef __URDE_CGENDESCRIPTION_HPP__ #define __URDE_CGENDESCRIPTION_HPP__ #include #include "CRealElement.hpp" #include "CIntElement.hpp" #include "CVectorElement.hpp" #include "CModVectorElement.hpp" #include "CColorElement.hpp" #include "CUVElement.hpp" #include "CEmitterElement.hpp" #include "CSpawnSystemKeyframeData.hpp" #include "CParticleDataFactory.hpp" /* Documentation at: http://www.metroid2002.com/retromodding/wiki/PART_(File_Format) */ namespace urde { class CGenDescription { public: /* Naming convention: __ */ /* Removed from demo */ // std::unique_ptr x0_PSIV; // std::unique_ptr x4_PSVM; // std::unique_ptr x8_PSOV; std::unique_ptr xc_x0_PSLT; std::unique_ptr x10_x4_PSWT; std::unique_ptr x14_x8_PSTS; std::unique_ptr x18_xc_POFS; std::unique_ptr x1c_x10_SEED; std::unique_ptr x20_x14_LENG; std::unique_ptr x24_x18_WIDT; std::unique_ptr x28_x1c_MAXP; std::unique_ptr x2c_x20_GRTE; std::unique_ptr x30_x24_COLR; std::unique_ptr x34_x28_LTME; /* Removed from demo (replaced by EMTR) */ // std::unique_ptr x38_ILOC; // std::unique_ptr x3c_IVEC; std::unique_ptr x40_x2c_EMTR; union { struct { bool x44_28_x30_28_SORT : 1; bool x44_30_x31_24_MBLR : 1; bool x44_24_x30_24_LINE : 1; bool x44_29_x30_29_LIT_ : 1; bool x44_26_x30_26_AAPH : 1; bool x44_27_x30_27_ZBUF : 1; bool x44_25_x30_25_FXLL : 1; bool x44_31_x31_25_PMAB : 1; bool x45_29_x31_31_VMD4 : 1; bool x45_28_x31_30_VMD3 : 1; bool x45_27_x31_29_VMD2 : 1; bool x45_26_x31_28_VMD1 : 1; bool x45_31_x32_25_OPTS : 1; bool x45_24_x31_26_PMUS : 1; bool x45_25_x31_27_PMOO : 1; bool x45_30_x32_24_CIND : 1; /* 0-00 additions */ bool x30_30_ORNT : 1; bool x30_31_RSOP : 1; }; uint32_t dummy1 = 0; }; std::unique_ptr x48_x34_MBSP; std::unique_ptr x4c_x38_SIZE; std::unique_ptr x50_x3c_ROTA; std::unique_ptr x54_x40_TEXR; std::unique_ptr x58_x44_TIND; SParticleModel x5c_x48_PMDL; std::unique_ptr x6c_x58_PMOP; std::unique_ptr x70_x5c_PMRT; std::unique_ptr x74_x60_PMSC; std::unique_ptr x78_x64_PMCL; std::unique_ptr x7c_x68_VEL1; std::unique_ptr x80_x6c_VEL2; std::unique_ptr x84_x70_VEL3; std::unique_ptr x88_x74_VEL4; SChildGeneratorDesc x8c_x78_ICTS; std::unique_ptr x9c_x88_NCSY; std::unique_ptr xa0_x8c_CSSD; SChildGeneratorDesc xa4_x90_IDTS; std::unique_ptr xb4_xa0_NDSY; SChildGeneratorDesc xb8_xa4_IITS; std::unique_ptr xc8_xb4_PISY; std::unique_ptr xcc_xb8_SISY; std::unique_ptr xd0_xbc_KSSM; SSwooshGeneratorDesc xd4_xc0_SSWH; std::unique_ptr xe4_xd0_SSSD; std::unique_ptr xe8_xd4_SSPO; SElectricGeneratorDesc xec_xd8_SELC; std::unique_ptr xf8_xe4_SESD; std::unique_ptr xfc_xe8_SEPO; std::unique_ptr x100_xec_LTYP; std::unique_ptr x104_xf0_LCLR; std::unique_ptr x108_xf4_LINT; std::unique_ptr x10c_xf8_LOFF; std::unique_ptr x110_xfc_LDIR; std::unique_ptr x114_x100_LFOT; std::unique_ptr x118_x104_LFOR; std::unique_ptr x11c_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; /* Custom additions */ std::unique_ptr m_bevelGradient; /* FourCC BGCL */ CGenDescription() { x45_25_x31_27_PMOO = true; } }; } #endif // __URDE_CGENDESCRIPTION_HPP__