// Definition for the class of Editor Actors
//////////////////////////////////////////////////
#ifndef _CPACINST_HPP_
#define _CPACINST_HPP_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "ACP_Base.h"
#include "ITF.h"
#include "IncMEC.h"
#define D_State_Define
#include "IncGAM.h"
#undef D_State_Define
#include "GLI.h"

#include "EDACDef.hpp"
#include "EDACActr.hpp"
#include "Defines.hpp"
#include "EDACWatc.hpp"

class EdActors_EditorActorModel;
class CPA_Actor;

//################################################################
class EdActors_EditorActorInstance : public EdActors_EditorActor
{
public:
	//Constructors
	EdActors_EditorActorInstance(	CAR_EDIT_TDSTACTOR *ptdstActor);
	EdActors_EditorActorInstance(	CPA_Actor *pclBaseModel,
																CPA_Actor *pclActor,
																CAR_EDIT_TDSTACTOR *p_tdstMotorActor = NULL,
													      CPA_SuperObject *p_oSuperObject = NULL);

	//Destructor
	~EdActors_EditorActorInstance();

//Attributes
public:

protected:

private:
	CPA_Actor *m_pclActorModel;
	EdActors_EditorActorModel *m_pclModel;

	OAC_tdstWatchField m_pri_tdstWatchField;

//Functions
public:
	void m_fn_vLookForModifiedDatas();
	void m_fn_vSetModel(CPA_Actor *pclNewModel);
	CPA_Actor *m_fn_pclGetModel();

	//When Actor is loaded from a file
	BOOL m_pub_fn_bCheckAllMSWithModel();

	void m_pub_fn_vSetLink(CTL_Editor_Data *_pclSourceData,
												 BOOL _bMustLink);

	OAC_tdstWatchField *m_pub_fn_p_tdstGetWatchField();

protected:

private:
	void m_fn_vCallSpecialFunctions();

};


#endif //_CPACINST_HPP_

