Fission FSN
Loading...
Searching...
No Matches
fsC3dSprite.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsC3dSprite.h
4*
5* Purpose: 3d Sprite - wrap up 3d model data and animations
6* Instanced from model data which is handed out from
7* the model manager
8*
9*********************************************************************/
10
11#ifndef fsC3dSpritehdr
12#define fsC3dSpritehdr
13
14#include <map>
15#include <vector>
16#include <memory>
17#include <functional>
18
19#include <fsCore/fsVec3d.h>
20#include <fsCore/fsStr.h>
21
22class fsI3dModelData;
23class fsC3dPathSprite;
24class fsI3dAnimation;
25class fsI3dScene;
26
27
29{
30 friend class fsI3dSprite;
31 friend class fsCNative3dSprite;
32 friend class fsCNative3dScene;
33
34public:
35
36 void sceneRemoveFrom(fsI3dScene* pScene);
37 void sceneAddTo(fsI3dScene* pScene);
38 void alignToTrack(fsI3dModelData* pTrackModelData);
39
40 void offsetSet(const fsVec3d& pPos);
42 void scaleSet(fsF32 pScale);
44 void angleSet(const fsVec3d& pAngle);
46
47 void update(fsS32 pDeltaMS);
48 void trackSet(std::shared_ptr<fsC3dPathSprite> pTrack);
49
50 void pathAnimationSet(const fsStr& pAnimationName);
51
52 void activeAnimationSet(const fsStr& pAnimationName, std::function<void()> pCallBack = nullptr);
53 void animationAdd(std::shared_ptr<fsI3dAnimation> pAnimation, const fsStr& pName);
54
55 static std::shared_ptr<fsC3dSprite> create(std::shared_ptr<fsI3dModelData> pModelData);
56 virtual ~fsC3dSprite();
57
58protected:
59
60 virtual void activeAnimationSetDo(const fsStr& pAnimationName, std::function<void()> pCallBack = nullptr);
61
62 void nextAnimPlay();
63 void randomAnimPlay();
64
65 std::vector<fsStr>::iterator mCurrAnim;
66 std::shared_ptr<fsI3dModelData> mModelData;
67 std::shared_ptr<fsC3dPathSprite> mTrack;
68
69 std::vector<fsStr> mAnimationOrder;
70 std::map<fsStr, std::shared_ptr<fsI3dAnimation>> mAnimations;
71
72 fsC3dSprite(std::shared_ptr<fsI3dModelData> pModelData);
73
74private:
75
76 fsI3dAnimation* mPathAnimation;
77 fsI3dAnimation* mAnimation;
78
79 fsVec3d mPos;
80 fsF32 mScale;
81 fsVec3d mAngle;
82};
83
84#endif
Definition fsC3dPathSprite.h:21
void randomAnimPlay()
Definition fsC3dSprite.cpp:107
void update(fsS32 pDeltaMS)
Definition fsC3dSprite.cpp:77
fsC3dSprite(std::shared_ptr< fsI3dModelData > pModelData)
Definition fsC3dSprite.cpp:148
fsVec3d posGet()
Definition fsC3dSprite.cpp:46
virtual ~fsC3dSprite()
Definition fsC3dSprite.cpp:159
void nextAnimPlay()
Definition fsC3dSprite.cpp:98
void trackSet(std::shared_ptr< fsC3dPathSprite > pTrack)
Definition fsC3dSprite.cpp:114
std::vector< fsStr > mAnimationOrder
Definition fsC3dSprite.h:69
void activeAnimationSet(const fsStr &pAnimationName, std::function< void()> pCallBack=nullptr)
Definition fsC3dSprite.cpp:126
virtual void activeAnimationSetDo(const fsStr &pAnimationName, std::function< void()> pCallBack=nullptr)
Definition fsC3dSprite.cpp:131
std::shared_ptr< fsI3dModelData > mModelData
Definition fsC3dSprite.h:66
friend class fsI3dSprite
Definition fsC3dSprite.h:30
std::vector< fsStr >::iterator mCurrAnim
Definition fsC3dSprite.h:65
void animationAdd(std::shared_ptr< fsI3dAnimation > pAnimation, const fsStr &pName)
Definition fsC3dSprite.cpp:137
friend class fsCNative3dSprite
Definition fsC3dSprite.h:31
void pathAnimationSet(const fsStr &pAnimationName)
Definition fsC3dSprite.cpp:120
void angleSet(const fsVec3d &pAngle)
Definition fsC3dSprite.cpp:62
void scaleSet(fsF32 pScale)
Definition fsC3dSprite.cpp:51
void sceneAddTo(fsI3dScene *pScene)
Definition fsC3dSprite.cpp:31
std::shared_ptr< fsC3dPathSprite > mTrack
Definition fsC3dSprite.h:67
static std::shared_ptr< fsC3dSprite > create(std::shared_ptr< fsI3dModelData > pModelData)
Definition fsC3dSprite.cpp:143
friend class fsCNative3dScene
Definition fsC3dSprite.h:32
std::map< fsStr, std::shared_ptr< fsI3dAnimation > > mAnimations
Definition fsC3dSprite.h:70
fsVec3d angleGet()
Definition fsC3dSprite.cpp:67
void alignToTrack(fsI3dModelData *pTrackModelData)
Definition fsC3dSprite.cpp:72
void sceneRemoveFrom(fsI3dScene *pScene)
Definition fsC3dSprite.cpp:22
fsF32 scaleGet()
Definition fsC3dSprite.cpp:57
void offsetSet(const fsVec3d &pPos)
Definition fsC3dSprite.cpp:40
Definition fsI3dAnimation.h:22
Definition fsI3dModelData.h:21
Definition fsI3dScene.h:23
Definition fsStr.h:23
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsVec3d.h:16