#pragma once #include "StarRoot.hpp" #include "StarAssets.hpp" namespace Star { STAR_STRUCT(DanceStep); STAR_STRUCT(Dance); STAR_CLASS(DanceDatabase); struct DanceStep { Maybe bodyFrame; Maybe frontArmFrame; Maybe backArmFrame; Vec2F headOffset; Vec2F frontArmOffset; Vec2F backArmOffset; float frontArmRotation; float backArmRotation; }; struct Dance { String name; List states; float cycle; bool cyclic; float duration; List steps; }; class DanceDatabase { public: DanceDatabase(); DancePtr getDance(String const& name) const; private: static DancePtr readDance(String const& path); StringMap m_dances; }; }