2016-04-13 06:07:23 +00:00
|
|
|
#ifndef __URDE_CGENDESCRIPTION_HPP__
|
|
|
|
#define __URDE_CGENDESCRIPTION_HPP__
|
2016-02-05 01:27:03 +00:00
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
#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"
|
|
|
|
|
2016-03-03 01:06:42 +00:00
|
|
|
/* Documentation at: http://www.metroid2002.com/retromodding/wiki/PART_(File_Format) */
|
|
|
|
|
2016-03-04 23:04:53 +00:00
|
|
|
namespace urde
|
2016-02-05 01:27:03 +00:00
|
|
|
{
|
|
|
|
|
2016-02-13 05:49:59 +00:00
|
|
|
class CGenDescription
|
2016-02-05 01:27:03 +00:00
|
|
|
{
|
|
|
|
public:
|
2016-03-03 01:06:42 +00:00
|
|
|
/* Naming convention: <demo-offset>_<retail-offset>_<name> */
|
|
|
|
|
|
|
|
/* Removed from demo */
|
2016-03-04 01:01:37 +00:00
|
|
|
// std::unique_ptr<CVectorElement> x0_PSIV;
|
|
|
|
// std::unique_ptr<CModVectorElement> x4_PSVM;
|
|
|
|
// std::unique_ptr<CVectorElement> x8_PSOV;
|
2016-03-03 01:06:42 +00:00
|
|
|
std::unique_ptr<CIntElement> xc_x0_PSLT;
|
|
|
|
std::unique_ptr<CIntElement> x10_x4_PSWT;
|
|
|
|
std::unique_ptr<CRealElement> x14_x8_PSTS;
|
2016-03-04 01:01:37 +00:00
|
|
|
std::unique_ptr<CVectorElement> x18_xc_POFS;
|
|
|
|
std::unique_ptr<CIntElement> x1c_x10_SEED;
|
|
|
|
std::unique_ptr<CRealElement> x20_x14_LENG;
|
|
|
|
std::unique_ptr<CRealElement> x24_x18_WIDT;
|
|
|
|
std::unique_ptr<CIntElement> x28_x1c_MAXP;
|
|
|
|
std::unique_ptr<CRealElement> x2c_x20_GRTE;
|
|
|
|
std::unique_ptr<CColorElement> x30_x24_COLR;
|
|
|
|
std::unique_ptr<CIntElement> x34_x28_LTME;
|
2016-03-03 01:06:42 +00:00
|
|
|
/* Removed from demo (replaced by EMTR) */
|
|
|
|
// std::unique_ptr<CVectorElement> x38_ILOC;
|
|
|
|
// std::unique_ptr<CVectorElement> x3c_IVEC;
|
|
|
|
std::unique_ptr<CEmitterElement> x40_x2c_EMTR;
|
2016-02-05 01:27:03 +00:00
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
2016-03-03 01:06:42 +00:00
|
|
|
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;
|
2016-02-05 01:27:03 +00:00
|
|
|
};
|
2016-03-03 01:06:42 +00:00
|
|
|
uint32_t dummy1 = 0;
|
2016-02-05 01:27:03 +00:00
|
|
|
};
|
2016-03-03 01:06:42 +00:00
|
|
|
std::unique_ptr<CIntElement> x48_x34_MBSP;
|
|
|
|
std::unique_ptr<CRealElement> x4c_x38_SIZE;
|
|
|
|
std::unique_ptr<CRealElement> x50_x3c_ROTA;
|
|
|
|
std::unique_ptr<CUVElement> x54_x40_TEXR;
|
|
|
|
std::unique_ptr<CUVElement> x58_x44_TIND;
|
|
|
|
SParticleModel x5c_x48_PMDL;
|
|
|
|
std::unique_ptr<CVectorElement> x6c_x58_PMOP;
|
|
|
|
std::unique_ptr<CVectorElement> x70_x5c_PMRT;
|
|
|
|
std::unique_ptr<CVectorElement> x74_x60_PMSC;
|
|
|
|
std::unique_ptr<CColorElement> x78_x64_PMCL;
|
|
|
|
std::unique_ptr<CModVectorElement> x7c_x68_VEL1;
|
|
|
|
std::unique_ptr<CModVectorElement> x80_x6c_VEL2;
|
|
|
|
std::unique_ptr<CModVectorElement> x84_x70_VEL3;
|
|
|
|
std::unique_ptr<CModVectorElement> x88_x74_VEL4;
|
|
|
|
SChildGeneratorDesc x8c_x78_ICTS;
|
|
|
|
std::unique_ptr<CIntElement> x9c_x88_NCSY;
|
|
|
|
std::unique_ptr<CIntElement> xa0_x8c_CSSD;
|
|
|
|
SChildGeneratorDesc xa4_x90_IDTS;
|
|
|
|
std::unique_ptr<CIntElement> xb4_xa0_NDSY;
|
|
|
|
SChildGeneratorDesc xb8_xa4_IITS;
|
|
|
|
std::unique_ptr<CIntElement> xc8_xb4_PISY;
|
|
|
|
std::unique_ptr<CIntElement> xcc_xb8_SISY;
|
|
|
|
std::unique_ptr<CSpawnSystemKeyframeData> xd0_xbc_KSSM;
|
|
|
|
SSwooshGeneratorDesc xd4_xc0_SSWH;
|
|
|
|
std::unique_ptr<CIntElement> xe4_xd0_SSSD;
|
|
|
|
std::unique_ptr<CVectorElement> xe8_xd4_SSPO;
|
|
|
|
SElectricGeneratorDesc xec_xd8_SELC;
|
|
|
|
std::unique_ptr<CIntElement> xf8_xe4_SESD;
|
|
|
|
std::unique_ptr<CVectorElement> xfc_xe8_SEPO;
|
|
|
|
std::unique_ptr<CIntElement> x100_xec_LTYP;
|
|
|
|
std::unique_ptr<CColorElement> x104_xf0_LCLR;
|
|
|
|
std::unique_ptr<CRealElement> x108_xf4_LINT;
|
|
|
|
std::unique_ptr<CVectorElement> x10c_xf8_LOFF;
|
|
|
|
std::unique_ptr<CVectorElement> x110_xfc_LDIR;
|
|
|
|
std::unique_ptr<CIntElement> x114_x100_LFOT;
|
|
|
|
std::unique_ptr<CRealElement> x118_x104_LFOR;
|
|
|
|
std::unique_ptr<CRealElement> x11c_x108_LSLA;
|
2016-02-05 01:27:03 +00:00
|
|
|
std::unique_ptr<CRealElement> x10c_ADV1;
|
|
|
|
std::unique_ptr<CRealElement> x110_ADV2;
|
|
|
|
std::unique_ptr<CRealElement> x114_ADV3;
|
|
|
|
std::unique_ptr<CRealElement> x118_ADV4;
|
|
|
|
std::unique_ptr<CRealElement> x11c_ADV5;
|
|
|
|
std::unique_ptr<CRealElement> x120_ADV6;
|
|
|
|
std::unique_ptr<CRealElement> x124_ADV7;
|
|
|
|
std::unique_ptr<CRealElement> x128_ADV8;
|
|
|
|
|
2016-02-15 19:12:55 +00:00
|
|
|
|
|
|
|
/* Custom additions */
|
|
|
|
std::unique_ptr<CColorElement> m_bevelGradient; /* FourCC BGCL */
|
|
|
|
|
2016-02-05 01:27:03 +00:00
|
|
|
CGenDescription()
|
|
|
|
{
|
2016-03-03 01:06:42 +00:00
|
|
|
x45_25_x31_27_PMOO = true;
|
2016-02-05 01:27:03 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-04-13 06:07:23 +00:00
|
|
|
#endif // __URDE_CGENDESCRIPTION_HPP__
|