prime/include/Kyoto/Animation/IMetaAnim.hpp

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