2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 04:27:42 +00:00

Add CPOINode family of classes

This commit is contained in:
Jack Andersen
2016-04-10 21:10:28 -10:00
parent 8242c3edda
commit 64d85d7427
28 changed files with 351 additions and 14 deletions

View File

@@ -2,6 +2,7 @@
#define __PSHAG_IMETAANIM_HPP__
#include "../RetroTypes.hpp"
#include "CCharAnimTime.hpp"
#include <set>
namespace urde
@@ -10,6 +11,7 @@ class CAnimTreeNode;
class CAnimSysContext;
class CMetaAnimTreeBuildOrders;
class CPrimitive;
class IAnimReader;
enum class EMetaAnimType
{
@@ -20,16 +22,35 @@ enum class EMetaAnimType
Sequence
};
class CPreAdvanceIndicator
{
bool x0_isTime;
CCharAnimTime x4_time;
const char* xc_string;
public:
CPreAdvanceIndicator(const CCharAnimTime& time)
: x0_isTime(true), x4_time(time) {}
CPreAdvanceIndicator(const char* string)
: x0_isTime(false), xc_string(string) {}
const char* GetString() const {return xc_string;}
bool IsString() const {return !x0_isTime;}
const CCharAnimTime& GetTime() const {return x4_time;}
bool IsTime() const {return x0_isTime;}
};
class IMetaAnim
{
public:
virtual ~IMetaAnim() = default;
virtual std::shared_ptr<CAnimTreeNode> GetAnimationTree(const CAnimSysContext& animSys,
const CMetaAnimTreeBuildOrders& orders) const=0;
const CMetaAnimTreeBuildOrders& orders) const;
virtual void GetUniquePrimitives(std::set<CPrimitive>& primsOut) const=0;
virtual EMetaAnimType GetType() const=0;
virtual std::shared_ptr<CAnimTreeNode> VGetAnimationTree(const CAnimSysContext& animSys,
const CMetaAnimTreeBuildOrders& orders) const=0;
static void AdvanceAnim(IAnimReader& anim, const CCharAnimTime& dt);
CCharAnimTime GetTime(const CPreAdvanceIndicator& ind, const IAnimReader& anim);
};
}