/********************************************************************
*
* Created: 13/3/2014 16:55
*
* File: fsCAnimationDataPlayfirst.h
*
* Author: Mick Waites
*
* Purpose: Shared data from which AnimatingSprites are created.
*
*********************************************************************/
#ifndef fsCAnimationDataPlayfirsthdr
#define fsCAnimationDataPlayfirsthdr
#include <vector>
#include <fsCore/src/xml/fsIXmlNode.h>
#include <fsCore/fsAffineMtx2d.h>
#include "../../fsIAnimationData.h"
class fsCResourceName;
class fsCSpriteFrame;
class fsCAnimationTimeline;
class fsCBrush;
class fsCAnimationDataPlayfirst : public fsIAnimationData
{
friend class fsCAnimationDataManager;
friend class fsCAnimatingSpritePlayfirst;
friend class fsCSpriteFrame;
public:
fsS32 blendModeGet() const;
virtual ~fsCAnimationDataPlayfirst();<--- Destructor in derived class
protected:
struct sSpriteFrameInfo
{
sSpriteFrameInfo() : mAlpha(0.0f)
{
}
sSpriteFrameInfo(std::shared_ptr<fsCBrush> pBrush, fsF32 pAlpha, const fsAffineMtx2d& pMtx) :
mBrush(pBrush),
mAlpha(pAlpha),
mMtx(pMtx)
{
}
std::shared_ptr<fsCBrush> mBrush;
fsF32 mAlpha;
fsAffineMtx2d mMtx;
};
fsCAnimationDataPlayfirst();
void initialiseDo(const fsCResourceName& pFileName, fsBool pHitMap) override;
void framesParse(fsIXmlNode::_iterRef pParent);
void timelineParse(fsIXmlNode::_iterRef pParent);
std::vector<std::shared_ptr<sSpriteFrameInfo>> mSpriteFramesInfo;
std::vector<std::shared_ptr<fsCAnimationTimeline>> mTimelines;
std::shared_ptr<fsCBrush> mAnimBrush;
fsBool mLooping;
fsS32 mBlendMode;
private:
};
#endif