///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_ClientProjectile_Flamethrower.h
// Author : Emil Popovic
// Date   : 27 February 2009
//
// Copyright (c) 2009 Rebellion. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////

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

#ifndef __AVP_CLIENTPROJECTILE_FLAMETHROWER_H__
#define __AVP_CLIENTPROJECTILE_FLAMETHROWER_H__

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

#include "Entity/PhysicalObject/Projectile/AVP_ClientProjectile_GenericProjectile.h"

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

class Asura_Animation;
class Asura_AnimationController_Animation;
class AVP_GenericProjectileData;

class AVP_ClientProjectile_Flamethrower : public AVP_ClientProjectile_GenericProjectile
{
public:
	// Public functions...
	static	void Create(const Asura_Message* pxMessage);

	// Static list accessors...
	static	AVP_ClientProjectile_Flamethrower* FindEntity(const Asura_Guid uGuid) { return(s_xList.FindEntity(uGuid)); }
	static	const Asura_Hashed_List<AVP_ClientProjectile_Flamethrower>* GetList(void) { return(&s_xList); }

	virtual	void	Update();

	bool			IsDetachedFromFlame()						{ return m_bIsDetachedFromFlame; }
	void			SetDetachedFromFlame( bool bIsDetached )	{ m_bIsDetachedFromFlame = bIsDetached; }
	float			GetTimeInAir()								{ return m_fTimeInAir; }

protected:
	// Protected variables...
	bool  m_bIsDetachedFromFlame;
	float m_fTimeInAir;

	// Protected functions...
	AVP_ClientProjectile_Flamethrower(const AVP_Message_ProjectileClientUpdate* pxData);
	virtual ~AVP_ClientProjectile_Flamethrower ();

private:

	// Private typedefs...
	typedef AVP_ClientProjectile_GenericProjectile PARENT;

	// Private variables...
	static	Asura_Hashed_List<AVP_ClientProjectile_Flamethrower>	s_xList;

	// Private functions...
	AVP_ClientProjectile_Flamethrower();
	AVP_ClientProjectile_Flamethrower(const AVP_ClientProjectile_Flamethrower& xOther);
	AVP_ClientProjectile_Flamethrower& operator =(const AVP_ClientProjectile_Flamethrower& xOther);
};   // End of class 'AVP_ClientProjectile_Flamethrower'.


#endif   // ifndef __AVP_CLIENTPROJECTILE_FLAMETHROWER_H__


/// End of file. ///
