prime/include/MetroidPrime/CAnimationDatabaseGame.hpp

49 lines
1.5 KiB
C++

#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 : public CAnimationDatabase {
public:
explicit CAnimationDatabaseGame(const rstl::vector< CAnimation >& anims);
const rstl::rc_ptr< IMetaAnim >& GetMetaAnim(uint idx) const;
uint GetNumMetaAnims() const;
rstl::string GetMetaAnimName(uint idx) const;
void GetAllUniquePrimitives(rstl::vector< CPrimitive >& primsOut) const;
void GetUniquePrimitivesFromMetaAnim(rstl::set< CPrimitive >& primsOut,
const rstl::string& name) const;
private:
rstl::vector< rstl::rc_ptr< IMetaAnim > > x10_anims;
};
#endif // _CANIMATIONDATABASEGAME