//////////////////////////////////////////////////////////////////////////////
//
// AVP_ServerNode_GS2Attractor.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_SERVERNODE_GS2ATTRACTOR_H__
#define __AVP_SERVERNODE_GS2ATTRACTOR_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 "Entity/Locations/OrientedNode/GamesceneNode/AttractorNode/Asura_ServerNode_GS2Attractor.h"

// avp
#include "Entity/Locations/OrientedNode/GamesceneNode/AVP_ServerNode_GS2Node.h"

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

class Asura_Chunk_Stream;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_ServerNode_GS2Attractor
//
//////////////////////////////////////////////////////////////////////////////

class AVP_ServerNode_GS2Attractor : public AVP_ServerNode_GS2Node, public Asura_ServerNode_GS2Attractor
{
public:
	AVP_ServerNode_GS2Attractor( Asura_Guid uGuid );

	virtual void ReadFromChunkStream( Asura_Chunk_Stream& xStream );
	virtual void WriteToChunkStream( Asura_Chunk_Stream& xStream ) const;
	virtual bool IsBaseOrDerivativeOf( u_short usClassification ) const;
	virtual bool HandleMessage( const Asura_Message* pxMessage );

#ifdef ASURA_TOOLS
	virtual bool CanBeIncludedInTemplate() const;
#endif

	static void Create( const Asura_Guid uGuid, Asura_Chunk_Stream& xStream );

protected:
	virtual void SendAttractionPulse();

private:
	enum { CURRENT_CHUNK_VERSION = 0 };
};

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

#endif //__AVP_SERVERNODE_GS2ATTRACTOR_H__
