TapestryEngine

A 2D Platformer Game Engine
Log | Files | Refs

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