반복 횟수는 아직 구현을 못했네요. 잘 동작하는 것 같습니다.
glfw로 윈도우에 들어오는 이벤트에 대해서 콜백 함수를 등록합니다.
그리고 작성된 키보드 매니저에서 콜백 함수 OnEvent가 호출되면
GLFW에서 설정된 액션에 맞게 IsPressed, IsReleased 함수를 호출합니다.
BIND_EVENT_FUNC는 std::bind를 통해서 함수포인터에 템플릿 타입에 대해서 바인딩해주는 매크로입니다.
해당 매크로를 통해 각 버튼에 대해서 호출이 될 수 있도록 함수를 바인딩해줍니다.
그리고 NR_SET_NAME은 디버그 모드에서만 클래스들이 이름을 가질 수 있도록 설정해둔 매크로입니다.
저번에 만든 로그 기능에서 직접 해당 변수를 대입하는 대신 NR_GET_NAME 를 사용하면 디버그 모드랑 릴리즈 모드랑 구분해서
디버그 로그 화면에 클래스 이름을 표시해주는 등 유용하게 사용할 수 있습니다.
그 외에도 화면에서 유저가 이벤트를 발생시키면 각 이벤트를 취하는 레벨에 따라 컨테이너를 만들어서
만약 상위 레벨이 먼저 그 이벤트를 처리하면 하위 레벨에 도달하지 못하도록 구현 했습니다.
예를 들어서 UI를 클릭했는데 UI를 뚫고 게임을 동작시키는 레벨에서는 움직이면 안되기 때문에
각 레벨을 상속받아서 기능을 구현하도록 추상화 계층을 만들었습니다. 그 추상화 계층을 관리해주는게 컨테이너입니다
내부 구현은 이런데 딱히 특별한 건 없습니다.
오버레이는 UI와 같은 구현에 사용됩니다. 아마 추후에 렌더링과 업데이트, 그리고 이벤트 처리에 대해서 관리해주는 함수를 추가하게 될 것 같습니다.
'프로젝트 > Normal Engine' 카테고리의 다른 글
[#6] docking 시스템 추가, LevelContainer 수정, Log 편의 기능 (0) | 2023.07.31 |
---|---|
[#5] Imgui example renderer 연동 테스트 (0) | 2023.07.27 |
[#3] Log, Event 시스템 (0) | 2023.07.21 |
[#2] 게임 엔진 베이스 코드 (0) | 2023.07.12 |
[#1] 게임 엔진 만들기 프로젝트 시작 (0) | 2023.07.11 |