83c7e4465e2f3854094b652fa8abee326d1cfaca.svn-base (1818B)
1 #ifndef ANIMATION_GRAPH_H 2 #define ANIMATION_GRAPH_H 3 4 #include "Utils.h" 5 #include "Console.h" 6 #include "Animation.h" 7 #include "Event.h" 8 9 class AnimGraphData 10 { 11 public: 12 13 AnimGraphData() {} 14 15 //AnimGraph(int* state) : mActorState(state) {} 16 17 AnimGraphData(AnimDataPack animdata) : mAnimData(animdata) {} 18 19 bool DefineLoop(int AnimID); 20 21 bool DefineTransitions(int AnimID); 22 23 bool DefineFireables(int AnimID); 24 25 bool CreateTranisitionMatrix(); //call only after all loops have been defined 26 27 bool PopulateTransitionMatrix(int initState, int targetState, int transitionID); 28 29 int GetLoopIDIndex(int index) 30 { 31 return mLoopsAnimIDs.at(index); 32 } 33 34 AnimDataPack* GetAnimData() 35 { 36 return &mAnimData; 37 } 38 39 int GetH() 40 { 41 return mAnimData.GetFrameH(); 42 } 43 44 int GetW() 45 { 46 return mAnimData.GetFrameW(); 47 } 48 49 std::vector<int> mLoopsAnimIDs; 50 std::vector<int> mTransitionsAnimIDs; 51 std::vector<int> mFireablesAnimIDs; 52 int** mTransitionMatrix; 53 54 protected: 55 56 AnimDataPack mAnimData; 57 58 }; 59 60 61 class AnimGraph : public EventReceiver 62 { 63 public: 64 65 AnimGraph() {}; 66 67 AnimGraph(AnimGraphData* AGD) 68 { 69 mAGD = AGD; 70 mAnimPack = AnimPack(mAGD->GetAnimData()); 71 72 for (int i = 0; i < (int)mAGD->mTransitionsAnimIDs.size(); i++) 73 { 74 mAnimPack.GetAnimation(mAGD->mTransitionsAnimIDs.at(i))->mFeed.Subscribe(this); 75 } 76 } 77 78 void GiveActorState(int* state) 79 { 80 mActorState = state; 81 mState = *mActorState; 82 } 83 84 int GetTransitionID(int initState, int targetState); 85 86 Frame* UpdateAnimation(); 87 88 Frame* PlayOnce(int AnimID); 89 90 bool EventProcess(Event eve); 91 92 AnimPack* GetAnimPack() 93 { 94 return &mAnimPack; 95 } 96 97 int GetH() 98 { 99 return mAGD->GetH(); 100 } 101 102 int GetW() 103 { 104 return mAGD->GetW(); 105 } 106 107 EventFeed mFeed; 108 109 protected: 110 111 AnimGraphData* mAGD; 112 AnimPack mAnimPack; 113 114 int* mActorState; 115 int mState; 116 117 Frame mCurrentFrame; 118 }; 119 #endif