
///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_Alien_CameraHandler.h
// Author : Chris Wallace
// Date   : 5-Feb-2007
//
// Copyright (C) 2007 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

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

#ifndef __AVP_ALIEN_CAMERAHANDLER_H__
#define __AVP_ALIEN_CAMERAHANDLER_H__

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

#include "Core/Asura_Maths.h"

#include "Actor/Vertebrates/AVP_Vertebrate_CameraHandler.h"

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


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

////////////////////////////////////////////////////////////////////////////////
// Class        : AVP_Alien_CameraHandler
// Author       : Andy Tate
// Date         : 16-Oct-2006
//
// Description  : Class to the handle the Alien specific camera manipulation.
////////////////////////////////////////////////////////////////////////////////

class AVP_Alien_CameraHandler : public AVP_Vertebrate_CameraHandler
{
public:

	AVP_Alien_CameraHandler          (const Asura_Guid uOwnerGuid);
	virtual ~AVP_Alien_CameraHandler ();

//	virtual	void	Update					();
//	virtual	void	SetAsuraCamera			();
//	virtual void	SetCameraType			(const CameraType eType);
	virtual void	Reset					();

	void RotateCurrentAimDirection( const Asura_Quat& xRot );

protected:

	virtual void UpdateCameraOrientation( AVP_ClientEntity_Actor& xOwner, Asura_Matrix_3x3& xOrientation );

private:

	typedef AVP_Vertebrate_CameraHandler PARENT;

#if defined(ASURA_SUPPORT_COMMAND_CONSOLE)
	static u_int s_uConsoleVarReferenceCount;
#endif

	Asura_Quat m_xCurrentCameraOrientation;

	AVP_Alien_CameraHandler  (void);
	AVP_Alien_CameraHandler  (const AVP_Alien_CameraHandler& xOther);
	AVP_Alien_CameraHandler&  operator= (const AVP_Alien_CameraHandler& xOther);

};   // End of class 'AVP_Alien_CameraHandler'.


#endif   // ifndef __AVP_ALIEN_CAMERAHANDLER_H__


/// End of file. ///
