#pragma once #include "DNAMP3.hpp" #include "DataSpec/DNACommon/ANIM.hpp" #include "DataSpec/DNACommon/RigInverter.hpp" #include "CINF.hpp" #include "DataSpec/DNACommon/ANCS.hpp" namespace DataSpec::DNAMP3 { struct ANIM : BigDNA { AT_DECL_EXPLICIT_DNA struct IANIM : BigDNAV { Delete expl; atUint32 m_version; IANIM(atUint32 version) : m_version(version) {} std::vector>> bones; std::vector frames; std::vector channels; std::vector> chanKeys; float mainInterval = 0.0; bool looping = false; void sendANIMToBlender(hecl::blender::PyOutStream&, const DNAANIM::RigInverter& rig, bool additive) const; }; struct ANIM0 : IANIM { AT_DECL_EXPLICIT_DNA AT_DECL_DNAV ANIM0() : IANIM(0) {} struct Header : BigDNA { AT_DECL_DNA Value unkS; Value duration; Value unk0; Value interval; Value unk1; Value keyCount; Value unk2; Value boneSlotCount; }; }; struct ANIM1 : IANIM { AT_DECL_EXPLICIT_DNA AT_DECL_DNAV ANIM1() : IANIM(1) {} struct Header : BigDNA { AT_DECL_DNA Value unk1; Value unk2; Value unk3; Value unk4[3]; Value translationMult; Value scaleMult; Value unk7; Value unk8; Value unk9; Value duration; Value keyCount; Value blobSize; Value unk10; Value floatsSize; Value flagsSize; Value initBlockSize; Value streamSize; Value unk11; Value boneCount; }; }; std::unique_ptr m_anim; void sendANIMToBlender(hecl::blender::PyOutStream& os, const DNAANIM::RigInverter& rig, bool additive) const { m_anim->sendANIMToBlender(os, rig, additive); } void extractEVNT(const DNAANCS::AnimationResInfo& animInfo, const hecl::ProjectPath& outPath, PAKRouter& pakRouter, bool force) const {} }; }