/// @file Actor.h
#ifndef ACTOR_H
#define ACTOR_H
#include "../../xml/tinyxml.h"
#include "DevicePocket.h"
#include "ControlTable.h"

/**
	@brief 게임 action 객체 추상클래스

	게임속에서 액션을 수행하는 게임객체는 Actor클래스를 상속받습니다.\n
	client는 process/draw 함수를 호출하며 세부적인 process/draw는 각각의 객체가 담당합니다.
*/
class Actor {
public:
	static void cmdShow(Actor* _pRObject){
		_pRObject->bShow = true;
	}
	static void cmdFocus(Actor* _pRObject){
		_pRObject->bFocus = true;
	}
public:
	Actor() : bShow(FALSE), bFocus(FALSE), fOpacity(1), fX(0), fY(0), fZ(0) {}
	virtual ~Actor(){}
	virtual void draw(Model* _pModel) = 0;
	virtual void process() = 0;
	virtual void setRObject(DevicePocket* _pDevicePocket, ControlTable* _pControlTable) = 0;
public:
	bool  bShow;
	bool  bFocus;
	float fOpacity;
	float fX;
	float fY;
	float fZ;
	D3DXMATRIXA16 matWorld; ///< 렌더링을 위한 mat자료형(Actor는 기본적으로 렌더링 가능하다)
	ControlTable* pControlTable; ///< 수행결정을 위한 ControlTable
};
#endif