📘 이벤트 시스템의 개념

이벤트 시스템은 프로그램 내에서 발생하는 **특정 사건(이벤트)**에 대해 특정 작업(핸들러, 리스너)을 연결하는 구조입니다.

마우스 클릭, 키보드 입력, 창 크기 조절 등이 대표적인 이벤트입니다.


🔥 이벤트 시스템의 핵심 구성 요소

  1. 이벤트(Event)
  2. 이벤트 디스패처(Event Dispatcher)
  3. 이벤트 핸들러(Event Handler)
  4. 콜백 시스템(Callback System)

📘 위 코드의 이벤트 시스템 분석

위 코드는 Hazel 스타일의 이벤트 시스템을 기반으로 합니다.

코드의 핵심 구성 요소와 동작 방식을 설명하겠습니다.


🔥 1️⃣ Event 클래스 분석

Event는 모든 이벤트의 기본 클래스입니다.

이벤트의 종류는 WindowResizeEvent, MouseMovedEvent 같은 파생 클래스로 정의됩니다.


class Event
{
public:
	virtual ~Event() = default;

	bool Handled = false; // 이벤트가 처리되었는지 여부

	virtual eEventType GetEventType() const = 0;
	virtual const char* GetName() const = 0;
	virtual int GetCategoryFlags() const = 0;
	virtual std::string ToString() const { return GetName(); }

	bool IsInCategory(eEventCategory category)
	{
		return GetCategoryFlags() & category;
	}
};

🔥 핵심 포인트