//---------------------------------------------------------------------------
// File			: AVP_Behaviour_Human_Lift.h
// Created		: 
// Created By	: Gareth Thomas
// Copyright (C) 2007 Rebellion. All Rights Reserved.
//---------------------------------------------------------------------------

// BEGIN FILE WRAPPER ///////////////////////////////////////
#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif
#ifndef __AVP_BEHAVIOUR_HUMAN_LIFT_H__
#define __AVP_BEHAVIOUR_HUMAN_LIFT_H__ 1
// END FILE WRAPPER ///////////////////////////////////////////

// INCLUDES ///////////////////////////////////////////////////////////
#include "Behaviour/Axon_Project_Behaviour.h"

#include "Core/AVP_Navigation.h"
#include "Core/AVP_Navigation_Types.h"

// FORWARD DECLARATIONS ///////////////////////////////////
class AVP_Brain_Actor;


//---------------------------------------------------------------------------
// Class		: AVP_Behaviour_Human_Lift
// Description	: 
//---------------------------------------------------------------------------
class AVP_Behaviour_Human_Lift : public Axon_Project_Behaviour
{
	typedef Axon_Project_Behaviour PARENT;

public:

	// InCover Update State Enum
	enum LiftUpdateState
	{
		UNSET,
		DISMOUNT,
		DISMOUNT_MOVE,
		MAX_STATES
	};

	// Construction / Deconstruction
	AVP_Behaviour_Human_Lift								(AVP_Brain_Actor* pxBrain);
	virtual ~AVP_Behaviour_Human_Lift						(void)							{}
	

protected:

	virtual bool					Activate( void );
	virtual void					Deactivate( void );
	virtual void					PerFrameUpdate						(const float fTimeslice);
#ifndef ASURA_NO_DEBUG_OUTPUT
	virtual void					RenderDebugInfo(void);
#endif

	virtual bool HandleMessage( const Asura_Message* pxMessage );

	void SwitchToState( LiftUpdateState eState );

	void UpdateCurrentNavData();
	void PosEval();

	AVP_Brain_Actor* GetActorBrain() { return m_pxActorBrain; }

	static u_int EvaluationFunction( AVP_Navigation::AVP_PosEvalParams xPosEvalParams );

private:

	AVP_Brain_Actor*	m_pxActorBrain;
	LiftUpdateState		m_eUpdateState;

	// Private Member Variables...
	enum { CURRENT_CHUNK_VERSION = 0 };
};

#endif //__AVP_BEHAVIOUR_HUMAN_LIFT_H__

/// End Of File 'AVP_Behaviour_Human_Lift.h'
