#pragma once #include #include #include #include #include "ZFile.h" class ZKeyFrameSkel; typedef struct { int16_t frame; int16_t value; int16_t velocity; } KeyFrame; class ZKeyFrameAnim : public ZResource { public: ZKeyFrameSkel* skel; std::vector bitFlags; // Standard only std::vector bitFlagsFlex; // Flex only std::vector keyFrames; std::vector kfNums; std::vector presetValues; uint16_t unk_10; int16_t duration; ZKeyFrameAnim(ZFile* nParent); ~ZKeyFrameAnim(); void ParseXML(tinyxml2::XMLElement* reader) override; void DeclareReferencesLate(const std::string& prefix) override; void ParseRawDataLate() override; std::string GetBodySourceCode() const override; std::string GetSourceTypeName() const override; ZResourceType GetResourceType() const override; size_t GetRawDataSize() const override; private: offset_t skelOffset; segptr_t bitFlagsAddr; segptr_t keyFramesAddr; segptr_t kfNumsAddr; segptr_t presentValuesAddr; template uint32_t GetSetBits(T data) const; };