//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_Alien_AvoidLight.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_ALIEN_AVOIDLIGHT_H__
#define __AVP_BEHAVIOUR_ALIEN_AVOIDLIGHT_H__ 1

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

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

#include "Behaviour/BehaviourTypes/AVP_BehaviourTree_Element.h"

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

class AVP_Brain_Actor_Alien;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_Alien_AvoidLightTest
//
//////////////////////////////////////////////////////////////////////////////

class AVP_Behaviour_Alien_AvoidLightTest : public AVP_BehaviourTree_Element
{
	typedef AVP_BehaviourTree_Element PARENT;

public:
	AVP_Behaviour_Alien_AvoidLightTest( AVP_Brain_Actor_Alien* pxBrain );

protected:
	virtual bool Activate();
	virtual void Deactivate();

	virtual void UpdateRunningConditions( const float fTimeslice );
	virtual void EvaluateRunningConditions();

	virtual void PerFrameUpdate( const float fTimeslice );

#ifndef ASURA_NO_DEBUG_OUTPUT
	virtual void RenderDebugInfo();
#endif

private:
	AVP_Brain_Actor_Alien* GetAlienBrain() const;

private:
	float		   m_fFlareCheckTimer;
	bool		   m_bLightNearby;
	Asura_Vector_3 m_xAvoidPosition;
	Asura_Vector_3 m_xPrevAvoidPosition;
	bool		   m_bMoving;
};

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_Alien_AvoidLight
//
//////////////////////////////////////////////////////////////////////////////

//class AVP_Behaviour_Alien_AvoidLight : public Axon_Project_Behaviour
//{
//	typedef Axon_Project_Behaviour PARENT;
//
//public:
//	AVP_Behaviour_Alien_AvoidLight( AVP_Brain_Actor_Alien* pxBrain );
//
//protected:
//	virtual void PerFrameUpdate( const float fTimeslice );
//
//#ifndef ASURA_NO_DEBUG_OUTPUT
//	virtual void RenderDebugInfo();
//#endif
//
//private:
//	AVP_Brain_Actor_Alien* GetAlienBrain() const;
//
//private:
//	Asura_Vector_3 m_xAvoidPosition;
//	Asura_Vector_3 m_xPrevAvoidPosition;
//	bool		   m_bMoving;
//};

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

#endif //__AVP_BEHAVIOUR_ALIEN_AVOIDLIGHT_H__
