//
// Tools_Entity_MultiDamageVolume.h
//
// Created by Andrew Weinkove - 06/02/2004
// 
// Copyright (C) 2004 Rebellion, All Rights Reserved.
//


#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef _TOOLS_ENTITY_MULTIDAMAGEVOLUME_H_
#define _TOOLS_ENTITY_MULTIDAMAGEVOLUME_H_

#include "Entity/Triggers/Asura_ServerEntity_MultiDamageVolume.h"

#include "Tools_Entity_Trigger_Object.h"
#include "Objects/Tools_VolumeEdit_Object.h"



//////////////////////////////////////////////////////////////////////////////////////////////////
/*-----------------------------------**
** Tools_Entity_MultiDamageVolume    **
**-----------------------------------*/

class Tools_Entity_MultiDamageVolume : public Tools_Entity_Activatable_Object
{
	public :
		Tools_Entity_MultiDamageVolume(Asura_Entity* pxEntity);
		~Tools_Entity_MultiDamageVolume();

		static void Project_Create();
		//virtual function overides
		const char* GetTypeDescription(){return "Multi Damage Volume";}
		void UpdatePositionInAsuraData(bool /*updateLinkedObjects*/);

		static const char* GetNamePrefix() { return "MDV_"; }
		virtual const char* GetMyNamePrefix() const { return Tools_Entity_MultiDamageVolume::GetNamePrefix(); }

		void AddOverlayControls(class Asura_Overlay* pxNewOverlay,class Asura_Vector_2& xOffset);
		static void EditVolume();

		virtual void Copy(const Tools_Object*);
		virtual bool CanBeCopied() const {return Type == TOT_Entity_MultiDamageVolume;}
		virtual Tools_Object* CreateObjectOfThisType() const;

		virtual bool SupportsMessageEditor() { return false; }

		virtual void OnSelection();
		virtual void UpdateWhileSelected();
		virtual void Render();
	private :
		Asura_Vector_3 m_xPreviousPosition;
		static bool s_bMoveVolumeWithObject;

		bool m_bUsesDynamics;
		bool m_bDynamicsBlockWaypoints;
		bool m_bInstantDeath;
		static bool s_bChanged;
		static bool s_bOverlayChanged;

		class Tools_Object_VolumeGroupEdit_Controller* m_pxVolumeController;

};


#endif //_TOOLS_ENTITY_MULTIDAMAGEVOLUME_H_
