TapestryEngine

A 2D Platformer Game Engine
Log | Files | Refs

80427d5e94c7fa1fcfbef876a35163145cc55c5a.svn-base (1745B)


      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 CreateTranisitionMatrix(); //call only after all loops have been defined
     24 
     25 	bool PopulateTransitionMatrix(int initState, int targetState, int transitionID);
     26 
     27 	int GetLoopIDIndex(int index)
     28 	{
     29 		return mLoopsAnimIDs.at(index);
     30 	}
     31 
     32 	AnimDataPack* GetAnimData()
     33 	{
     34 		return &mAnimData;
     35 	}
     36 
     37 	int GetH()
     38 	{
     39 		return mAnimData.GetFrameH();
     40 	}
     41 
     42 	int GetW()
     43 	{
     44 		return mAnimData.GetFrameW();
     45 	}
     46 
     47 	std::vector<int> mLoopsAnimIDs;
     48 
     49 	std::vector<int> mTransitionsAnimIDs;
     50 	int** mTransitionMatrix;
     51 
     52 protected:
     53 
     54 	AnimDataPack mAnimData;
     55 	
     56 };
     57 #endif 
     58 
     59 class AnimGraph : public EventReceiver
     60 {
     61 public:
     62 
     63 	AnimGraph() {};
     64 
     65 	AnimGraph(AnimGraphData* AGD) 
     66 	{
     67 		mAGD = AGD;
     68 		mAnimPack = AnimPack(mAGD->GetAnimData());
     69 
     70 		for (int i = 0; i < (int)mAGD->mTransitionsAnimIDs.size(); i++)
     71 		{
     72 			mAnimPack.GetAnimation(mAGD->mTransitionsAnimIDs.at(i))->mFeed.Subscribe(this);
     73 		}
     74 	}
     75 
     76 	void GiveActorState(int* state)
     77 	{
     78 		mActorState = state;
     79 		mState = *mActorState;
     80 	}
     81 
     82 	int GetTransitionID(int initState, int targetState);
     83 
     84 	Frame* UpdateAnimation();
     85 
     86 	Frame* PlayOnce(int AnimID);
     87 
     88 	bool EventProcess(Event eve);
     89 	
     90 	AnimPack* GetAnimPack()
     91 	{
     92 		return &mAnimPack;
     93 	}
     94 
     95 	int GetH()
     96 	{
     97 		return mAGD->GetH();
     98 	}
     99 
    100 	int GetW()
    101 	{
    102 		return mAGD->GetW();
    103 	}
    104 
    105 	EventFeed mFeed;
    106 
    107 protected:
    108 
    109 	AnimGraphData* mAGD;
    110 	AnimPack mAnimPack;
    111 
    112 	int* mActorState;
    113 	int mState;
    114 
    115 	Frame mCurrentFrame;
    116 };