
///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_FaceHugger_AnimationHandler.h
// Author : Andy Tate
// Date   : 18-Oct-2006
//
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __AVP_FACEHUGGER_ANIMATIONHANDLER_H__
#define __AVP_FACEHUGGER_ANIMATIONHANDLER_H__

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "Animation/Asura_Animation.h"

#include "Actor/Vertebrates/AVP_Vertebrate_AnimationHandler.h"
#include "Animation/AVP_Animation_IK_Chain_Tail.h"

////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////

class AVP_ClientActor_FaceHugger;


////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class        : AVP_FaceHugger_AnimationHandler
// Author       : Andy Tate
// Date         : 18-Oct-2006
//
// Description  : Class to handle the animations needed by the FaceHugger.
////////////////////////////////////////////////////////////////////////////////

class AVP_FaceHugger_AnimationHandler : public AVP_Vertebrate_AnimationHandler
{
public:
	// Public functions...
	AVP_FaceHugger_AnimationHandler(AVP_ClientActor_FaceHugger& xOwner);
	//virtual ~AVP_FaceHugger_AnimationHandler ();
	virtual void Initialise( void );

	virtual void HandleAnimationRequest	(const AVP_Message_Actor_RequestAnimation& xAnimRequestData);
	virtual void Update();

protected:
	AVP_Animation_IK_Chain_Tail m_xTailIKChain;

	AVP_ClientActor_FaceHugger&	m_xOwnerFaceHugger;

	// Protected functions...
	void CreateRequestedAnimation( const Asura_Hash_ID uAnimHashID, const u_int uAnimFlags );

private:
	// Private typedefs...
	typedef AVP_Vertebrate_AnimationHandler PARENT;

	// Private variables...

	// Private functions...
	void InitialiseIKSolver();

	AVP_FaceHugger_AnimationHandler  (void);
	AVP_FaceHugger_AnimationHandler  (const AVP_FaceHugger_AnimationHandler& xOther);

	AVP_FaceHugger_AnimationHandler&	operator=	(const AVP_FaceHugger_AnimationHandler& xOther);

};   // End of class 'AVP_FaceHugger_AnimationHandler'.


#endif   // ifndef __AVP_FACEHUGGER_ANIMATIONHANDLER_H__


/// End of file. ///
