#if defined(ENTITY_CONTINUATION)

	#include "entityid.h"

	class Entity;
	class Entity__SharedData;
	class Entity__MakeMessage;
	class Entity__TakeDamageMessage;
	class Entity__PlayerLinkMessage;
	class Entity__DynamicMessage;
	class Entity__UpdateMessage;
	class Entity__MakeMapMessage;
	class Entity__TakeDamageStreamMessage;
	class Entity__DestroyEntityMessage;

	class EntityID;

	//
	//---------------------------------------------------
	// Support types for entity identity and host manager
	//---------------------------------------------------
	//

	//##########################################################################
	//#######################    Entity::Message    ############################
	//##########################################################################

	class Entity__Message : public Receiver::Message
	{
	public:
		//
		// The following fields need to be filled in by the sending manager
		//
		enum
		{
			DontSpoolBit = Receiver::Message::NextBit,
			NextBit
		};

		enum 
		{
			DontSpoolFlag = 1 << DontSpoolBit
		};


		// This field will be already set for map entities
		EntityID entityID;

		InterestZoneID interestZoneID;
		HostID ownerID;

		Entity__Message(Receiver::MessageID messageID, size_t length) : Receiver::Message(messageID, length), entityID(EntityID::Null), interestZoneID(NullInterestZoneID), ownerID(NullHostID)		{}

		// This constructor exists for constructing map entities
		Entity__Message(Receiver::MessageID messageID, size_t length, const EntityID &entity_ID) : Receiver::Message(messageID, length), entityID(entity_ID), interestZoneID(NullInterestZoneID), ownerID(NullHostID)	{}
	};

	//
	// Various typedefs for unimplemented messages
	//
	typedef Entity__Message Entity__MakeReadyMessage;
	typedef Entity__Message Entity__RemakeEntityMessage;
	typedef Entity__Message Entity__RemakeReadyMessage;
	typedef Entity__Message Entity__RemakeCompleteMessage;
	typedef Entity__Message Entity__RemakeIncompleteMessage;
	typedef Entity__Message Entity__TransferEntityMessage;
	typedef Entity__Message Entity__TransferCompleteMessage;
	typedef Entity__Message Entity__TransferIncompleteMessage;
	typedef Entity__Message Entity__BecomeInterestingMessage;
	typedef Entity__Message Entity__BecomeUninterestingMessage;
	typedef Entity__Message Entity__SubscribeReplicantMessage;
	typedef Entity__Message Entity__UnsubscribeReplicantMessage;

	//##########################################################################
	//#############    Entity::StaticVideoSocketIterator    ####################
	//##########################################################################

	class Entity__StaticVideoSocketIterator : public SChainIteratorOf<Component*>
	{
	public:
		Entity__StaticVideoSocketIterator(Entity *entity);
		Entity__StaticVideoSocketIterator(const Entity__StaticVideoSocketIterator &iterator);
		~Entity__StaticVideoSocketIterator();
	};

	//##########################################################################
	//############    Entity::DynamicVideoSocketIterator    ####################
	//##########################################################################

	class Entity__DynamicVideoSocketIterator : public SChainIteratorOf<Component*>
	{
	public:
		Entity__DynamicVideoSocketIterator(Entity *entity);
		Entity__DynamicVideoSocketIterator(const Entity__DynamicVideoSocketIterator &iterator);
		~Entity__DynamicVideoSocketIterator();
	};

	//##########################################################################
	//################    Entity::AudioSocketIterator    #######################
	//##########################################################################

	class Entity__AudioSocketIterator : public SChainIteratorOf<Component*>
	{
	public:
		Entity__AudioSocketIterator(Entity *entity);
		~Entity__AudioSocketIterator();
	};

	//##########################################################################
	//####################    Entity::UpdateRecord    ##########################
	//##########################################################################

	struct Entity__UpdateRecord : public Simulation__UpdateRecord
	{
	public:
		Origin localOrigin;
	};
#endif