1 #ifndef JUGIMAP_TIMELINE_ANIMATION_INSTANCE_H
2 #define JUGIMAP_TIMELINE_ANIMATION_INSTANCE_H
6 #include "jmTimelineAnimation.h"
20 class TimelineAnimation;
21 class AnimationQueuePlayer;
22 class FrameAnimationInstance;
23 class AnimationMemberState;
24 class TimelineAnimationInstance;
29 class AnimationTrackState
33 AnimationTrackState(AnimationTrack* _tAnimation, AnimationMemberState* _tAnimationsStatesSet);
34 virtual ~AnimationTrackState();
37 bool Empty(){
return (activeStartKey==
nullptr && activeEndKey==
nullptr); }
40 AnimationTrack* GetAnimationTrack(){
return animationTrack; }
41 AnimationKey* GetStateKey(){
return stateKey; }
42 AnimationKey* GetActiveStartKey(){
return activeStartKey; }
43 AnimationKey* GetActiveEndKey(){
return activeEndKey; }
44 AnimationKey* GetActiveKey(){
return (activeStartKey!=
nullptr)? activeStartKey : activeEndKey;}
46 VectorShape * GetPath(){
return path; }
47 AnimationQueuePlayer* GetTimelineAnimationQueuePlayer(){
return timelineAnimationPlayer; }
48 AnimationQueuePlayer* GetFrameAnimationPlayer(){
return frameAnimationPlayer; }
49 AnimationTrackParameters &GetTrackParameters(){
return tp; };
51 bool IsDisabled(){
return disabled; }
52 void SetDisabled(
bool _disabled){ disabled = _disabled; }
54 int Update(
int _animationTime,
int _flags);
56 void _ClearLinkPointers(VectorShape* _shape);
61 AnimationMemberState * animationMemberState =
nullptr;
62 AnimationTrack* animationTrack =
nullptr;
63 AnimationKey* activeStartKey =
nullptr;
64 AnimationKey* activeEndKey =
nullptr;
67 AnimationKey *stateKey =
nullptr;
69 AnimationQueuePlayer *frameAnimationPlayer =
nullptr;
70 std::vector<FrameAnimationInstance*>*frameAnimationInstances =
nullptr;
73 AnimationQueuePlayer* timelineAnimationPlayer =
nullptr;
74 std::vector<TimelineAnimationInstance*>*timelineAnimationInstances =
nullptr;
77 AnimationTrackParameters tp;
80 VectorShape *path =
nullptr;
81 SourceSprite* sourceObject =
nullptr;
83 bool disabled =
false;
86 void SetActiveKeys(
int _animationTime);
87 int ManageSubTimelineAnimation();
88 int ManageSubFrameAnimation();
89 void FindSourceObject();
92 TimelineAnimationInstance* FindTimelineAnimationInstance(
const std::string& _name);
93 TimelineAnimationInstance* CreateAndStoreTimelineAnimationInstance(
const std::string& _name);
95 FrameAnimationInstance* FindFrameAnimationInstance(
const std::string& _name);
96 FrameAnimationInstance* CreateAndStoreFrameAnimationInstance(
const std::string& _name);
104 class AnimationMemberState
107 friend class AnimationTrackState;
108 friend class TimelineAnimationInstance;
111 AnimationMember *GetAnimationMember(){
return animationMember; }
112 std::vector<AnimationTrackState*> &GetAnimationTrackStates(){
return animationsTrackStates; }
113 Sprite* _GetSprite(){
return sprite;}
114 std::vector<Sprite*>* _GetSprites(){
return sprites;}
116 bool IsDisabled(){
return disabled; }
117 void SetDisabled(
bool _disabled){ disabled = _disabled; }
122 AnimationMemberState(AnimationMember *_animationMember);
123 AnimationMemberState(
const AnimationMember &_animationMember) =
delete;
124 AnimationMemberState& operator=(
const AnimationMember &_animationMember) =
delete;
125 ~AnimationMemberState();
128 int Update(
int msTimePoint,
int _flags);
129 void StopSubPlayers();
130 void PauseSubPlayers();
131 void ResumeSubPlayers();
132 void ResetAnimatedProperties();
135 AnimationMember * animationMember =
nullptr;
136 std::vector<AnimationTrackState*>animationsTrackStates;
138 Sprite* sprite =
nullptr;
139 std::vector<Sprite*>*sprites =
nullptr;
140 AnimatedProperties ap;
141 bool disabled =
false;
143 TimelineAnimationInstance* animationInstance =
nullptr;
146 int UpdateAnimatedProperties(AnimationTrackState & _ats);
147 void ResetSpritesAnimatedProperties();
148 void UpdateAnimatedSprites();
190 std::vector<Sprite*>*
GetSprites(){
return animationsMemberStates.front()->_GetSprites();}
202 int Update(
int msTimePoint,
int _flags)
override;
203 void StopSubPlayers();
204 void PauseSubPlayers();
205 void ResumeSubPlayers();
208 void ResetAnimatedProperties()
override;
227 std::vector<AnimationMemberState*>animationsMemberStates;
228 AnimationTrackState* metaAnimationTrackState =
nullptr;
231 TimelineAnimationInstance(
const TimelineAnimationInstance &src) =
delete;
232 TimelineAnimationInstance& operator=(
const TimelineAnimationInstance &src) =
delete;