mirror of https://github.com/PrimeDecomp/prime.git
34 lines
1011 B
C++
34 lines
1011 B
C++
|
#ifndef _IMETAANIM
|
||
|
#define _IMETAANIM
|
||
|
|
||
|
#include "rstl/rc_ptr.hpp"
|
||
|
#include "rstl/set.hpp"
|
||
|
|
||
|
enum EMetaAnimType { kMAT_Play, kMAT_Blend, kMAT_PhaseBlend, kMAT_Random, kMAT_Sequence };
|
||
|
|
||
|
class CAnimTreeNode;
|
||
|
class CPrimitive;
|
||
|
class CCharAnimTime;
|
||
|
class IAnimReader;
|
||
|
class CAnimSysContext;
|
||
|
class CMetaAnimTreeBuildOrders;
|
||
|
class CPreAdvanceIndicator;
|
||
|
|
||
|
class IMetaAnim {
|
||
|
public:
|
||
|
virtual ~IMetaAnim();
|
||
|
|
||
|
virtual rstl::rc_ptr< CAnimTreeNode >
|
||
|
GetAnimationTree(const CAnimSysContext& animSys, const CMetaAnimTreeBuildOrders& orders) const;
|
||
|
virtual void GetUniquePrimitives(rstl::set< CPrimitive >& primsOut) const = 0;
|
||
|
virtual EMetaAnimType GetType() const = 0;
|
||
|
virtual rstl::rc_ptr< CAnimTreeNode >
|
||
|
VGetAnimationTree(const CAnimSysContext& animSys,
|
||
|
const CMetaAnimTreeBuildOrders& orders) const = 0;
|
||
|
|
||
|
static void AdvanceAnim(IAnimReader& anim, const CCharAnimTime& dt);
|
||
|
static CCharAnimTime GetTime(const CPreAdvanceIndicator& ind, const IAnimReader& anim);
|
||
|
};
|
||
|
|
||
|
#endif // _IMETAANIM
|