#ifndef _CANIMATIONDATABASEGAME #define _CANIMATIONDATABASEGAME #include "Kyoto/TToken.hpp" #include "rstl/optional_object.hpp" #include "rstl/rc_ptr.hpp" #include "rstl/set.hpp" #include "rstl/string.hpp" #include "rstl/vector.hpp" class CPrimitive; class CAnimation; class IMetaAnim; class CAnimationDatabase { public: CAnimationDatabase() : x4_(false ? rstl::optional_object< CToken >() : rstl::optional_object_null()) {} virtual ~CAnimationDatabase(); virtual const rstl::rc_ptr< IMetaAnim >& GetMetaAnim(uint idx) const = 0; virtual uint GetNumMetaAnims() const = 0; virtual rstl::string GetMetaAnimName(uint idx) const = 0; virtual void GetAllUniquePrimitives(rstl::vector< CPrimitive >& primsOut) const = 0; virtual void GetUniquePrimitivesFromMetaAnim(rstl::set< CPrimitive >& primsOut, const rstl::string& name) const = 0; private: rstl::optional_object< CToken > x4_; }; class CAnimationDatabaseGame final : public CAnimationDatabase { public: explicit CAnimationDatabaseGame(const rstl::vector< CAnimation >& anims); const rstl::rc_ptr< IMetaAnim >& GetMetaAnim(uint idx) const override; uint GetNumMetaAnims() const override; rstl::string GetMetaAnimName(uint idx) const override; void GetAllUniquePrimitives(rstl::vector< CPrimitive >& primsOut) const override; void GetUniquePrimitivesFromMetaAnim(rstl::set< CPrimitive >& primsOut, const rstl::string& name) const override; private: rstl::vector< rstl::rc_ptr< IMetaAnim > > x10_anims; }; #endif // _CANIMATIONDATABASEGAME