//
// Tools_Entity_CutsceneController_Object.h
//
// Created by Richard Rice - 09/05/2002
// 
// Copyright (C) 2002 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef _TOOLS_ENTITY_CUTSCENECONTROLLER_OBJECT_H_
#define _TOOLS_ENTITY_CUTSCENECONTROLLER_OBJECT_H_

#include "Tools_Entity_Object.h"

class Asura_Cutscene;

class Tools_Entity_CutsceneController_Object : public Tools_Entity_Object
{
	public :
		Tools_Entity_CutsceneController_Object(Asura_Entity* entity);
//		static void Create();
		//creates a controller for each cutscene , and makes sure there aren't any controllers without cutscenes
		static void UpdateCutsceneControllersFromCutscenes();

		Asura_Cutscene* GetCutscene();
		
		//virtual function overides
		virtual bool DealsInternallyWithActivate() const { return true; }
		const char* GetTypeDescription(){return "Cutscene Controller";}
		bool HandlesThisMessage(int messageID);
		bool CanBeRenamed(){return false;}
		virtual bool CanBeDestroyed(){return false;}

		bool SubEntityHandlesThisMessage(Asura_Guid uGuid,int iMessageID);
		Asura_Guid SelectSubEntity();
		bool IsSubEntity(Asura_Guid uGuid);
		const char* GetSubEntityName(Asura_Guid uGuid);

		virtual bool OwnsThisMessageBlock(unsigned short usMessageBlockID){return m_xMessageBlockList.contains(usMessageBlockID);}

		virtual void PreMessageBlockOwnershipCheck();

		//add controls for cutscene event enable message
		static void AddOverlayControls_EventID(struct Asura_StaticMessage* pxMessage,class Asura_Overlay* pxOverlay,class Asura_Vector_2& xOffset);
		//and for set camera message
		static void AddOverlayControls_SetCamera(struct Asura_StaticMessage* pxMessage,class Asura_Overlay* pxOverlay,class Asura_Vector_2& xOffset);

	private :
		void BuildMessageBlockList();
		List<unsigned short> m_xMessageBlockList;

};


#endif //_TOOLS_ENTITY_CUTSCENECONTROLLER_OBJECT_H_
