//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $Workfile:     $
// $Date:         $
//
//-----------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//

#ifndef GIZMO_H
#define GIZMO_H
#pragma once

#include "MapAtom.h"


#define GIZMO_AXIS_X			0x10
#define GIZMO_AXIS_Y			0x20
#define GIZMO_AXIS_Z			0x40

#define GIZMO_HANDLE_SCALE			0x01
#define GIZMO_HANDLE_ROTATE			0x02
#define GIZMO_HANDLE_TRANSLATE		0x04
#define GIZMO_HANDLE_UNIFORM_SCALE	0x08


class CGizmo : public CMapAtom
{
	public:

		CGizmo(void);
		CGizmo(float x, float y, float z);

		void Initialize(void);

		void Render(CRender3D *pRender);

		inline void SetAxisLength(float fLength); 
		inline void SetPosition(float x, float y, float z);

		void DrawGizmoAxis(CRender3D *pRender, Vector& Origin, Vector& EndPoint, int red, int green, int blue, unsigned int uAxisHandle);

	protected:

		Vector m_Position;
		float m_fAxisLength;
};


//-----------------------------------------------------------------------------
// Purpose: Sets the length of the gizmo's axes.
// Input  : fLength - Axis length in world units.
//-----------------------------------------------------------------------------
void CGizmo::SetAxisLength(float fLength)
{
	m_fAxisLength = fLength;
}


//-----------------------------------------------------------------------------
// Purpose: Sets the gizmo's position.
// Input  : x - 
//			y - 
//			z - 
//-----------------------------------------------------------------------------
void CGizmo::SetPosition(float x, float y, float z)
{
	m_Position[0] = x;
	m_Position[1] = y;
	m_Position[2] = z;
}


#endif // GIZMO_H