#if 0
//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_Predator_PointAndShoot.h
//
// Copyright (C) 2008 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_PREDATOR_POINTANDSHOOT_H__
#define __AVP_BEHAVIOUR_PREDATOR_POINTANDSHOOT_H__ 1

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

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

// asura
#include "Network/Asura_Guid.h"

// avp axon
#include "Behaviour/Axon_Project_Behaviour.h"

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

class AVP_Brain_Actor_Predator;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_Predator_PointAndShoot
//
//////////////////////////////////////////////////////////////////////////////

class AVP_Behaviour_Predator_PointAndShoot : public Axon_Project_Behaviour
{
	typedef Axon_Project_Behaviour PARENT;

public:
	AVP_Behaviour_Predator_PointAndShoot( AVP_Brain_Actor_Predator* pxBrain );

protected:
	virtual bool HandleMessage( const Asura_Message* pxMessage );
	virtual bool Activate();
	virtual void Deactivate();
	virtual void Update( const float fTimeslice );
	virtual void PerFrameUpdate( const float fTimeslice );

#ifndef ASURA_NO_DEBUG_OUTPUT
	virtual void RenderDebugInfo();
#endif

	AVP_Brain_Actor_Predator* GetPredatorBrain() const;

private:
	enum State
	{
		UNSET,
		STANDING,
		CROUCHING,
		TARGETTING,
		NUM_STATES
	};
	enum ChargeState
	{
		DISABLED,
		CHARGING,
		SHOOT,
		NUM_CHARGE_STATES
	};

	void UpdateTargetDetails();
	bool HaveTarget() const;
	void SwitchToState( const State eNextState );
	void SwitchToChargingState( const ChargeState eNextChargeState );
	void EquipPlasmaCaster();
	void PickNewLookDirection();
	void TurnTowardsTarget();

	static float GetNewLookPeriod();
	static float GetNewStandPeriod();
	static float GetNewCrouchPeriod();

private:
    float	       m_fCrouchPeriod;
    float	       m_fStandPeriod;
	ChargeState	   m_eChargeState;
    float          m_fShootTimer;
	Asura_Vector_3 m_xLookDirection;
	float          m_fLookPeriod;
	float          m_fLookTimer;
	Asura_Guid	   m_uTargetGuid;
	Asura_Vector_3 m_xTargetPosition;
};

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

#endif //__AVP_BEHAVIOUR_PREDATOR_POINTANDSHOOT_H__


#endif // 0
