Fission FSN
Loading...
Searching...
No Matches
fsCAnimationDataManager.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 14/3/2014 9:07
4*
5* File: fsCAnimationDataManager.h
6*
7* Author: Mick Waites
8*
9* Purpose: To control the sharing of animation data instances.
10*
11*********************************************************************/
12
13#ifndef fsCAnimationDataManagerhdr
14#define fsCAnimationDataManagerhdr
15
16#include <map>
17#include <memory>
18
19#include <fsCore/fsStr.h>
20
22
23class fsCResourceName;
26class fsCSprite;
27
29{
30public:
32
33 // Optional animation systems register before the application creates its
34 // animation manager. Registering the same named provider again replaces it.
35 static void providerRegister(fsSAnimationProvider pProvider);
36
37 std::shared_ptr<fsIAnimatingSprite> const createAnimationInstance(std::shared_ptr<fsIAnimationData>,
38 fsCSprite* pAnimatingRootSprt);
39
40 fsBool spriterFileType(const fsStr& pFileName) const;
41
42 std::shared_ptr<fsIAnimationData> getPermanent(const fsCResourceName& pFileName, fsBool pHitMap);
43 std::shared_ptr<fsIAnimationData> get(const fsCResourceName& pFileName, fsBool pHitMap);
44
45 void flush();
46
47 static std::unique_ptr<fsCAnimationDataManager> create();
48
50
51protected:
52
54
55private:
56 using fsSAnimationCacheKey = std::pair<fsStr, fsBool>;
57 using fsTAnimationDataCache = std::map<fsSAnimationCacheKey, std::shared_ptr<fsIAnimationData>>;
58
59 static fsCAnimationProviderRegistry& providersGet();
60
61 std::shared_ptr<fsIAnimationData> createAnimationData(const fsCResourceName& pFileName, fsBool pHitMap);
62 fsBool spineFileType(const fsStr& pFileName) const;
63
64 static const fsStr mSpriterExt;
65 static const fsStr mSpineJsonExt;
66
67 fsTAnimationDataCache mData;
68 fsTAnimationDataCache mPermanentData;
69};
70
71#endif
std::shared_ptr< fsIAnimatingSprite > const createAnimationInstance(std::shared_ptr< fsIAnimationData >, fsCSprite *pAnimatingRootSprt)
Definition fsCAnimationDataManager.cpp:42
~fsCAnimationDataManager()
Definition fsCAnimationDataManager.cpp:151
std::shared_ptr< fsIAnimationData > getPermanent(const fsCResourceName &pFileName, fsBool pHitMap)
Definition fsCAnimationDataManager.cpp:101
fsCAnimationProviderRegistry::fsSAnimationProvider fsSAnimationProvider
Definition fsCAnimationDataManager.h:31
static void providerRegister(fsSAnimationProvider pProvider)
Definition fsCAnimationDataManager.cpp:25
static std::unique_ptr< fsCAnimationDataManager > create()
Definition fsCAnimationDataManager.cpp:141
fsCAnimationDataManager()
Definition fsCAnimationDataManager.cpp:147
void flush()
Definition fsCAnimationDataManager.cpp:136
fsBool spriterFileType(const fsStr &pFileName) const
Definition fsCAnimationDataManager.cpp:31
std::shared_ptr< fsIAnimationData > get(const fsCResourceName &pFileName, fsBool pHitMap)
Definition fsCAnimationDataManager.cpp:119
Definition fsCAnimationProviderRegistry.h:17
Definition fsCResourceName.h:32
Definition fsCSprite.h:24
Definition fsIAnimatingSprite.h:33
Definition fsIAnimationData.h:18
Definition fsStr.h:23
bool fsBool
Definition fsBaseTypes.h:26
Definition fsCAnimationProviderRegistry.h:20