2016-04-10 21:22:59 +00:00
|
|
|
#ifndef __PSHAG_IANIMREADER_HPP__
|
|
|
|
#define __PSHAG_IANIMREADER_HPP__
|
|
|
|
|
2016-04-11 03:59:54 +00:00
|
|
|
#include "RetroTypes.hpp"
|
|
|
|
#include "CCharAnimTime.hpp"
|
|
|
|
#include "zeus/CVector3f.hpp"
|
|
|
|
#include "zeus/CQuaternion.hpp"
|
2016-04-12 06:15:32 +00:00
|
|
|
#include "CParticleData.hpp"
|
2016-04-11 03:59:54 +00:00
|
|
|
|
2016-04-10 21:22:59 +00:00
|
|
|
namespace urde
|
|
|
|
{
|
2016-04-11 03:59:54 +00:00
|
|
|
class CSegId;
|
|
|
|
class CBoolPOINode;
|
|
|
|
class CInt32POINode;
|
|
|
|
class CParticlePOINode;
|
|
|
|
class CSoundPOINode;
|
|
|
|
class CSegIdList;
|
|
|
|
class CSegStatementSet;
|
|
|
|
|
|
|
|
struct SAdvancementResults
|
|
|
|
{
|
2016-04-11 07:10:28 +00:00
|
|
|
CCharAnimTime x0_remTime;
|
2016-04-11 03:59:54 +00:00
|
|
|
zeus::CVector3f x8_posDelta;
|
|
|
|
zeus::CQuaternion x14_rotDelta;
|
|
|
|
};
|
2016-04-10 21:22:59 +00:00
|
|
|
|
|
|
|
class IAnimReader
|
|
|
|
{
|
2016-04-11 03:59:54 +00:00
|
|
|
public:
|
|
|
|
virtual ~IAnimReader() = default;
|
|
|
|
virtual bool IsCAnimTreeNode() const {return false;}
|
2016-04-11 07:10:28 +00:00
|
|
|
virtual SAdvancementResults VAdvanceView(const CCharAnimTime& a)=0;
|
2016-04-11 07:47:21 +00:00
|
|
|
virtual CCharAnimTime VGetTimeRemaining() const=0;
|
2016-04-11 03:59:54 +00:00
|
|
|
virtual void VGetSteadyStateAnimInfo() const=0;
|
|
|
|
virtual bool VHasOffset(const CSegId& seg) const=0;
|
2016-04-12 06:15:32 +00:00
|
|
|
virtual zeus::CVector3f VGetOffset(const CSegId& seg) const=0;
|
|
|
|
virtual zeus::CQuaternion VGetRotation(const CSegId& seg) const=0;
|
2016-04-11 07:47:21 +00:00
|
|
|
virtual u32 VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
|
|
|
|
virtual u32 VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const=0;
|
|
|
|
virtual u32 VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
|
|
|
|
virtual u32 VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
|
2016-04-12 06:15:32 +00:00
|
|
|
virtual bool VGetBoolPOIState(const char*) const=0;
|
|
|
|
virtual s32 VGetInt32POIState(const char*) const=0;
|
|
|
|
virtual CParticleData::EParentedMode VGetParticlePOIState(const char*) const=0;
|
2016-04-11 03:59:54 +00:00
|
|
|
virtual void VGetSegStatementSet(const CSegIdList& list, CSegStatementSet& setOut) const=0;
|
|
|
|
virtual void VGetSegStatementSet(const CSegIdList& list, CSegStatementSet& setOut, const CCharAnimTime& time) const=0;
|
2016-04-12 06:15:32 +00:00
|
|
|
virtual std::shared_ptr<IAnimReader> VClone() const=0;
|
2016-04-11 23:35:37 +00:00
|
|
|
virtual std::shared_ptr<IAnimReader> VSimplified() {return {};}
|
2016-04-11 03:59:54 +00:00
|
|
|
virtual void VSetPhase(float)=0;
|
|
|
|
virtual SAdvancementResults VGetAdvancementResults(const CCharAnimTime& a, const CCharAnimTime& b) const;
|
2016-04-11 07:10:28 +00:00
|
|
|
|
2016-04-11 07:47:21 +00:00
|
|
|
u32 GetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const;
|
|
|
|
u32 GetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const;
|
|
|
|
u32 GetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const;
|
|
|
|
u32 GetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const;
|
2016-04-10 21:22:59 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __PSHAG_IANIMREADER_HPP__
|