개요
이번 작업에서는 시각적으로 변한 건 많이 없지만 내부 처리 방법이 많이 변경되었다.
RendererInterface
RendererInterface 는 다른 렌더러 클래스에서 손 쉽게 선이나 그림을 그리고, 업데이트를 할 수 있도록 만들어진 클래스이다.
아이템 출력자 구현
여기서 말하는 아이템 출력자란 기본적인 구성요소를 출력하도록 도와주는 클래스를 일컫는다. 트랙의 배경을 출력하도록 도와주는 DSingleTrackTextureRenderer와 vObject의 출력을 도와주는 LSingleObjectTextureRenderer, 또 이 내에 파형을 출력할 수 있도록 도와주는 로컬 좌표계 기준의 LWaveLineRenderer가 존재한다.
컨트롤러 렌더러 구현
컨트롤러 렌더러란, 기본적인 화면상에 처리해야할 마우스 입력, 키보드 입력을 특정 장면에 사용할 수 있도록 처리 해주는 처리자를 일컫는다. 여기서는 전체적인 시점에 활용할 수 있는 CMousePerspectiveUpdater와 CObjectMouseUpdater을 구현했다.
InputIOController
마지막으로 입력 컨트롤러이다. 기본적으로 C#에서 Keyboard 클래스와 Cursor 클래스, 마우스 클래스, 또는 System DLL을 load하여 GetStateKey 를 통해 키보드 입력을 바로 받을 수 있지만, 보다 효율적으로 관리하기 위해 InputIOController 클래스를 만들어주었다. GraphicMemory 클래스 내에 존재하는 대리자인 ControlPositionDelegator은 기본적으로 뷰포트의 마우스 입력 여부를 조회할 수 있도록 한다. 하지만 이는 실시간 조회로, 마우스가 최초로 클릭된 것인지 확인을 하기 위해서는 별도로 플래그 변수를 만들어 확인해야 한다. InputIOController는 이러한 부분에 착안하여 최초 한 번만 눌린 것인지 확인하는 메소드를 제공한다.
다음 목표
크기 조절 구현 및 UI 로드 창 구현, 파일 관리자 구현 및 오디오 파일 로드 구현, vObject 추가 구현하기