directX 오늘은 컴포넌트 패턴을 적용해서 작성할 것임.

부속 패턴 상속이라는 것을 사용하다보니 일종의 문제점이 생겨남. HAS A 관계에서 나타나는 문제인데, 이 사항이 다중 상속의 발생을 지속적으로 요구하거나, IS A와 HAS A의 혼합이 발생하게 된다.

기능을 가진 클래스들을 부속화 시켜서 부모 클래스에 넣는 것이 아닌 필요한 객체에게 붙여준다는 형태의 컴포넌트 패턴이다.

보통의 상용화 엔진들이 이런 컴포넌트 패턴을 기반으로 구성되어 있음.


클래스 설계의 방식

컴포넌트라는 클래스는 엔진. 컴포넌트를 상속 받는 세부 컴포넌트들이 나타남.

오브젝트라는 부모 클래스가 엔진. 오브젝트를 상속받는 객체들은 클라이언트에

오브젝트들은 컴포넌트들을 소유하기 위해 맵 컨테이너를 가지고, 그 안에 키캆을 문자열 / 밸류를 컴포넌트 포인터로 사용할 것임.

오브젝트들을 관리하는 레이어 클래스를 만들 것임. 레이어는 오브젝트를 관리하는 맵컨테이너를 가지고 문자열/오브젝트 포인터를 가질 것임.

씬은 레이어를 소유할 것임 (레이어 소유 / 맵 컨테이너로 관리) 그리고 이 씬을 관리하는 매니지먼트 싱글톤을 만들고,엔진에 넣을 것임.


코드 진행

엔진에 매니지먼트 씬 레이어 게임 오브젝트 컴포넌트

형태로 구성

클론 함수 프로토타입 디자인 패턴 원형에 해당하는 컴포넌트를 두고, 원형을 복제해서 사용하게 되는 패턴.

원본 컴포넌트를 보관하는 프로토타입 매니저를 만들게 되고, 실제 사용할 때에는 그것을 복제해서 붙이는 형태.

컴포넌트 객체들은 디바이스 클래스를 모두 들고 있다.

스태틱 집단과 다이나믹 집단으로 컴포넌트를 분류하여, 매프레임마다 업데이트를 할지 말지 유무를 정하게 됨.

(_bool clone은 참고해보면 좋을 듯)

오브젝트는 맵 컨테이너가 다이나믹과 스태틱으로 분류되어 있음.

레이어 클래스 - > 크리에잉트가 있기 때문에 말단 객체임.

숙제 : 버텍스/인덱스 버퍼를 통해서 플레이어 움직임(회전 구현)