이전까지는 따로 이벤트 시스템을 만들지 않고 반복문 안에서 if문을 통해서 특정 기능을 실행하였습니다. 예를 들어 게임오브젝트를 생성하거나 삭제하거나하는 작업들입니다.
작은 프로그램에서는 그렇게 진행해도 큰 문제는 없지만 프로그램의 규모가 커지고 클래스가 다양해지며 복잡해지면 점점 복잡해지고 결합도가 증가합니다. 이를 이벤트 시스템으로 만들면 장점이 뛰어납니다.
🚀 권장 사항:
작은 규모에서는 if
문도 가능하지만, 이벤트 시스템을 구축하면 코드의 확장성과 유지보수성을 높일 수 있음. 🎯
이 문서는 Application
클래스에서 구현된 이벤트 시스템에 대한 상세 설명을 제공합니다. 이 시스템은 이벤트 큐와 이벤트 디스패처를 활용하여 이벤트를 효율적으로 관리할 수 있도록 설계되었습니다. 이를 통해 이벤트 핸들러 등록, 이벤트 처리 및 처리되지 않은 이벤트를 다룰 수 있습니다.
Application
클래스는 애플리케이션의 주요 진입점 역할을 합니다. 초기화, 이벤트 처리, 업데이트, 렌더링 및 종료를 관리합니다.
class Application
{
// ...
private:
bool mbLoaded;
bool mbRunning;
std::unique_ptr<graphics::GraphicDevice_DX11> mGraphicDevice;
Window mWindow;
// 이벤트 큐
EventQueue mEventQueue;
};
InitializeEventHandlers()
: 특정 이벤트 유형에 대한 핸들러를 등록합니다.EndOfFrame()
: 프레임이 끝날 때 이벤트 큐를 처리하고 이벤트를 실행합니다.PushEvent(Event* e)
: 이벤트를 이벤트 큐에 추가합니다.EventQueue
클래스는 이벤트를 큐에 저장하고 처리하는 역할을 합니다.