//////////////////////////////////////////////////////////////////////////////
//
// Tools_Entity_LightShaft.h
//
// Copyright (c) 2007 Rebellion (Derby). 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 ___TOOLS_ENTITY_LIGHTSHAFT_H___
#define ___TOOLS_ENTITY_LIGHTSHAFT_H___ 1

#ifdef ASURA_TARGET_SM3

// I N C L U D E S ///////////////////////////////////////////////////////////

// Tools.
#include "Entity/Tools_Entity_Object.h"

// Project independent.
#include "Entity/LightShaft/Asura_ServerEntity_LightShaft.h"
#include "Entity/LightShaft/Asura_ClientEntity_LightShaft.h"

// C L A S S E S /////////////////////////////////////////////////////////////

class Tools_Entity_LightShaft : public Tools_Entity_Object
{
    public:

        // C L A S S   M E T H O D S /////////////////////////////////////////
        static void Create( void );
        static void Create( Asura_Entity* pxEntity );
        static Tools_Entity_LightShaft* CreateMain( void );

        // M E T H O D S /////////////////////////////////////////////////////

        // Query methods.
        virtual const char* GetTypeDescription( void );
		virtual bool  HandlesThisMessage(int iMessageID);
		virtual const char* GetMyNamePrefix() const { return Tools_Entity_LightShaft::GetNamePrefix(); }

        // Behaviour / appearance methods.
	    virtual void AddOverlayControls( Asura_Overlay* pxOverlay, Asura_Vector_2& xOffsetWithinOverlay );
        virtual void OnDeselection( void );
        virtual void OnSelection( void );
	    virtual void Render( void );
        virtual void UpdateWhileSelected( void );

		virtual bool Verify( const bool bAutomatic );

		virtual void Copy(const Tools_Object* pxObject);
        virtual bool CanBeCopied( void ) const;
		virtual Tools_Object* CreateObjectOfThisType() const;

		virtual void SetEntityModified();

		static const char* GetNamePrefix() { return "LitS_"; }

	protected:

        // C O N S T R U C T O R S   /   D E S T R U C T O R S ///////////////        
        virtual ~Tools_Entity_LightShaft( void );

    private:
        // T Y P E S /////////////////////////////////////////////////////////
        typedef Tools_Entity_Object PARENT;

        // C O N S T R U C T O R S   /   D E S T R U C T O R S ///////////////        
        Tools_Entity_LightShaft( Asura_ServerEntity_LightShaft* pxEntity );


        // S T A T E /////////////////////////////////////////////////////////        
        Asura_LightShaft_Parameters			   m_xParams;
		Asura_ServerEntity_LightShaft		  *m_pxServerEntity;
        bool								   m_bParamsModified;			
		
        // Display.		
		static bool s_bModified;

public:
		static Tools_Entity_LightShaft *s_pxSelected;
};



// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif //ASURA_TARGET_SM3

#endif // #ifndef ___TOOLS_ENTITY_LIGHTSHAFT_H___
