/*
///////////////////////////////////////////////////////////////////////////////////////////////////
// Description : CurObj.hpp
//   
//  Definition of the cursor object           
//
///////////////////////////////////////////////////////////////////////////////////////////////////
// inherit from  :	CPA_Object
//					CPA_EdMot<ACP_tdxHandleOfLink>
///////////////////////////////////////////////////////////////////////////////////////////////////
// Creation date: 5 mar 1997                        Author: J Thénoz
///////////////////////////////////////////////////////////////////////////////////////////////////
// Modification date:			                      Author: 
// 
//
// 
//
///////////////////////////////////////////////////////////////////////////////////////////////////
*/


#ifndef __CursorOBJECT_HPP__
#define __CursorOBJECT_HPP__

// #include "itf.h"
//#include "gli.h"
// #include "cpalib.h"

// FBFFBF attention, include interdit !!!, privé, moteur
// #include "geoobj.h"
// fin FBF


class Light_Interface;
class Light;

//----------- engine structure
typedef struct {} tdstCursor;
typedef tdstCursor* ACP_tdxHandleOfCursor;
//----------- 

class Cursor : public CPA_Object, public CPA_EdMot<ACP_tdxHandleOfCursor>
{
protected:
	MTH3D_tdstVector		m_stVertex;			// local Vertex of the cursor in the m_poParent axis
	GLI_tdxValue		m_xDim;				// dim of the cursor
	CPA_SuperObject*	m_poParent;			// parent object = physical parent : just for axis to store vertex

public:
	// static
	static void fn_vInitObject (void);

	Cursor (CPA_MainWorld *p_oMainWorld, CPA_ObjectDLLBase *p_oDLL, CPA_ReachableObject *poOwner );
	void *GetEngineStruct (void) { return NULL; }
	Light_Interface* GetInterface (void);

	Light* fn_pGetParentLight (void) { return (Light*)(m_poParent->GetObject()); }
	
	//set
	void fn_vSetAbsoluteVertex ( MTH3D_tdstVector* pAbsoluteVertex );
	void fn_vSetLocalVertex    ( MTH3D_tdstVector* pLocalVertex ) { m_stVertex = *pLocalVertex; }

	//get
	void fn_vGetAbsoluteVertex ( MTH3D_tdstVector* pAbsoluteVertex );
	void fn_vGetLocalVertex    ( MTH3D_tdstVector* pLocalVertex ) { *pLocalVertex = m_stVertex; }
	
	// moves
	void fn_vStartMove ( MTH3D_tdstVector* pstStartVertex );
	void fn_vMove ( MTH3D_tdstVector* pstTranslation );

	// draw
	void fn_vDraw (void);
};


#endif //__OBJECT_HPP__
