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

Massive template-based DNA refactor

This commit is contained in:
Jack Andersen
2018-02-21 21:24:51 -10:00
parent b405f33ded
commit e4ff23c279
265 changed files with 3993 additions and 5773 deletions

View File

@@ -11,9 +11,9 @@ namespace DataSpec::DNAMP1
struct ANIM : BigDNA
{
Delete expl;
AT_DECL_EXPLICIT_DNA
struct IANIM : BigDNA
struct IANIM : BigDNAV
{
Delete expl;
atUint32 m_version;
@@ -32,12 +32,13 @@ struct ANIM : BigDNA
struct ANIM0 : IANIM
{
DECL_EXPLICIT_DNA
AT_DECL_EXPLICIT_DNA
AT_DECL_DNAV
ANIM0() : IANIM(0) {}
struct Header : BigDNA
{
DECL_DNA
AT_DECL_DNA
Value<float> duration;
Value<atUint32> unk0;
Value<float> interval;
@@ -50,12 +51,13 @@ struct ANIM : BigDNA
struct ANIM2 : IANIM
{
DECL_EXPLICIT_DNA
AT_DECL_EXPLICIT_DNA
AT_DECL_DNAV
ANIM2(bool pc) : IANIM(pc ? 3 : 2) {}
struct Header : BigDNA
{
DECL_DNA
AT_DECL_DNA
Value<atUint32> scratchSize;
UniqueID32 evnt;
Value<atUint32> unk0 = 1;
@@ -194,39 +196,6 @@ struct ANIM : BigDNA
};
std::unique_ptr<IANIM> m_anim;
void read(athena::io::IStreamReader& reader)
{
atUint32 version = reader.readUint32Big();
switch (version)
{
case 0:
m_anim.reset(new struct ANIM0);
m_anim->read(reader);
break;
case 2:
m_anim.reset(new struct ANIM2(false));
m_anim->read(reader);
break;
case 3:
m_anim.reset(new struct ANIM2(true));
m_anim->read(reader);
break;
default:
Log.report(logvisor::Error, "unrecognized ANIM version");
break;
}
}
void write(athena::io::IStreamWriter& writer) const
{
writer.writeUint32Big(m_anim->m_version);
m_anim->write(writer);
}
size_t binarySize(size_t __isz) const
{
return m_anim->binarySize(__isz + 4);
}
void sendANIMToBlender(hecl::blender::PyOutStream& os, const DNAANIM::RigInverter<CINF>& rig, bool) const
{