#pragma once #include "DataSpec/DNACommon/DNACommon.hpp" #include "DNAMP1.hpp" namespace DataSpec::DNAMP1 { struct EVNT : BigDNA { AT_DECL_EXPLICIT_DNA_YAML Value version; struct POINode : BigDNA { AT_DECL_DNA_YAML Value unk0; String<-1> name; Value type; struct CharAnimTime : BigDNA { enum class Type : atUint32 { NonZero, ZeroIncreasing, ZeroSteady, ZeroDecreasing, Infinity }; AT_DECL_DNA_YAML Value time; Value type; }; CharAnimTime animTime; Value idx; Value unk2; Value weight; Value charIdx; Value flags; }; struct BoolPOINode : POINode { AT_DECL_DNA_YAML Value value; }; Value boolPOICount; Vector boolPOINodes; struct Int32POINode : POINode { AT_DECL_DNA_YAML Value value; String<-1> locator; }; Value int32POICount; Vector int32POINodes; struct ParticlePOINode : POINode { AT_DECL_DNA_YAML Value duration; DNAFourCC ptype; UniqueID32 id; String<-1> locator; Value scale; Value parentMode; }; Value particlePOICount; Vector particlePOINodes; struct SoundPOINode : POINode { AT_DECL_DNA_YAML Value soundId; Value falloff; Value maxDist; }; Value soundPOICount; Vector soundPOINodes; static bool Extract(PAKEntryReadStream& rs, const hecl::ProjectPath& outPath) { EVNT evnt; evnt.read(rs); athena::io::FileWriter writer(outPath.getAbsolutePath()); athena::io::ToYAMLStream(evnt, writer); return true; } static bool Cook(const hecl::ProjectPath& inPath, const hecl::ProjectPath& outPath) { EVNT evnt; athena::io::FileReader reader(inPath.getAbsolutePath()); athena::io::FromYAMLStream(evnt, reader); athena::io::FileWriter ws(outPath.getAbsolutePath()); evnt.write(ws); return true; } void gatherDependencies(std::vector& pathsOut) const { for (const ParticlePOINode& node : particlePOINodes) g_curSpec->flattenDependencies(node.id, pathsOut); } }; }