//////////////////////////////////////////////////////////////////////////////
//
// AVP_ServerActor_Vehicle.h
//
// Copyright (c) 2007 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_SERVERACTOR_VEHICLE_H___
#define ___AVP_SERVERACTOR_VEHICLE_H___ 1

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

// asura
#include "Core/Asura_List.h"

// avp
#include "Actor/AVP_Actor_DynamicStat.h"
#include "Actor/Vertebrates/Human/AVP_Human_Description.h"
#include "Entity/PhysicalObject/Actor/AVP_ServerEntity_Actor.h"

// axon
#include "AnimTemplates/Axon_Gamescene_AnimSequenceData.h"

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

class Asura_Collision_Object;
class Axon_Project_Brain;
class AVP_Vehicle_StateHandler;

// C L A S S E S /////////////////////////////////////////////////////////////

class AVP_ServerActor_Vehicle : public AVP_ServerEntity_Actor
{
public:
	// Public functions...
	virtual	void	Update			(void);

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

protected:
	// Protected functions...

	AVP_ServerActor_Vehicle      (const u_short usFlagsToIgnore, const Asura_Guid uGUID);
	virtual ~AVP_ServerActor_Vehicle (void);

private:
	// Private typedefs...
	typedef AVP_ServerEntity_Actor PARENT; 

	// Friend classes...
	friend class ToolsAVP_Entity_Actor;

	// Private variables...
  
	static Asura_Hashed_List<AVP_ServerActor_Vehicle> s_xList;
};

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

#endif // #ifndef ___AVP_SERVERACTOR_VERTEBRATE_H___
