//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_GS2Node_AnimMessages.h
//
// Copyright (C) 2009 Rebellion. All Rights Reserved.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __AVP_BEHAVIOUR_GS2NODE_ANIMMESSAGES_H__
#define __AVP_BEHAVIOUR_GS2NODE_ANIMMESSAGES_H__ 1

// I N C L U D E S ///////////////////////////////////////////////////////////

// axon
#include "Behaviour/BehaviourParamsTypes/Axon_BehaviourParams_GS2Node.h"
#include "Behaviour/BehaviourTypes/Axon_Behaviour_GS2Node.h"

// F O R W A R D   D E C L A R A T I O N S ///////////////////////////////////

class AVP_Brain_Actor;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_GS2Node_AnimMessages
//
//////////////////////////////////////////////////////////////////////////////

class AVP_Behaviour_GS2Node_AnimMessages : public Axon_Behaviour_GS2Node
{
	typedef Axon_Behaviour_GS2Node PARENT;

public:
	AVP_Behaviour_GS2Node_AnimMessages( AVP_Brain_Actor* pxBrain );

protected:
	virtual void ReadFromChunkStream( Asura_Chunk_Stream& xStream );
	virtual void WriteToChunkStream( Asura_Chunk_Stream& xStream ) const;

	// This'll most likely need to check for anim flags and fire off messages if necessary.
	//virtual void PerFrameUpdate( const float fTimeslice ) {}

private:
	// Members to store the anim flag(s) to check for and the message blocks to send.

	static const u_int uCURRENT_CHUNK_VERSION = 0;
};

//////////////////////////////////////////////////////////////////////////////
//
// AVP_BehaviourParams_GS2Node_AnimMessages
//
//////////////////////////////////////////////////////////////////////////////

class AVP_BehaviourParams_GS2Node_AnimMessages : public Axon_BehaviourParams_GS2Node
{
	typedef Axon_BehaviourParams_GS2Node PARENT;

public:
	AVP_BehaviourParams_GS2Node_AnimMessages( const u_int uBehaviourType );

	// Members to store the anim flag(s) to check for and the message blocks to send.
	// Methods and members to allow the data to be edited in tools.
	// See Axon_BehaviourParams_GS2Node for examples.

protected:
	virtual void ReadFromChunkStream( Asura_Chunk_Stream& xStream );
	virtual void WriteToChunkStream( Asura_Chunk_Stream& xStream ) const;

private:
	static const u_int uCURRENT_CHUNK_VERSION = 0;
};

//////////////////////////////////////////////////////////////////////////////
//
// 
//
//////////////////////////////////////////////////////////////////////////////

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif //__AVP_BEHAVIOUR_GS2NODE_ANIMMESSAGES_H__
