//
// Tools_SpecialGuid_Object.h
//
// Created by Richard Rice - 19/04/2006
// 
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef __TOOLS_SPECIALGUID_OBJECT_H__
#define __TOOLS_SPECIALGUID_OBJECT_H__

#include "Core/Asura_HashedList.h"

#include "Objects/Tools_Object.h"

//Tools object for representing special non-tools guids , such as the player , server and client
class Tools_SpecialGuid_Object : public Tools_Object
{
public :
	Tools_SpecialGuid_Object(Asura_Guid uGuid,const char* szName,const char* szMeshName);
	~Tools_SpecialGuid_Object();

	virtual const char* GetName(){return m_xName.GetString();}
	virtual const char* GetTypeDescription(){return "Special Guid";}
	virtual bool CanBeDestroyed(){return false;}
	virtual bool IsDestroyed() { return false; }
	virtual Asura_Guid GetGuid() const {return m_uGuid;}
	virtual bool HandlesThisMessage(int iMessageID);

	static Tools_SpecialGuid_Object* FindEntity( Asura_Guid uGuid )     { return s_xList.FindEntity(uGuid); }
	static const Asura_Hashed_List<Tools_SpecialGuid_Object>* GetList( void ) { return &s_xList; }

private :
	Asura_Guid m_uGuid;
	Asura_String m_xName;

	static u_int s_uNumObjects;
	static Asura_Hashed_List<Tools_SpecialGuid_Object> s_xList;
};



#endif //__TOOLS_SPECIALGUID_OBJECT_H__