[1]. Client 프로젝트에, GameObject 필터를 하나 만들고, 그 안에, 배경을 의미하는 BackGround GameObject 자식 클래스를 하나 만든다. 부모는 Engine 프로젝트의, GameObject.

[2]. 부모 클래스에서 만들어 놓은 함수들 그대로 오버라이딩 재정의 ㄱㄱ

[3]. 원형 객체 함수는, Initialize_Prototype() 는, 프로토타입 호출, 원형 사본 객체는 원형 객체를 파라미터로 받아와, 복제한다~는 식으로 할당한다.

[4]. Loader 클래스에, 그 전의 샘플 식 루프문 코드를 제거하고, GameInstance를 통한 Prototype_Manager 클래스의 Add_Prototype()함수를 통해,

[LEVEL_LOGO에, Prototype_GameObject_BackGround 라는 키 값의 BackGround] 를 추가해준다.

image.png

[5]. Level_Logo 클래스로 가서, Ready_Layer_BackGround() 라는 함수를 만들어주는데, 이 함수에는,

개발자가 사용할 레이어의 키값 을 받아서, Object_Mangaer 클래스의 Add_GameObject_To_Layer 함수를 통해,

[LEVEL_LOGO에, Prototype_GameObject_BackGround 라는 키 값의 원 형객체를, 개발자가 정한, _pLayersTag라는 이름의 레이어를 찾아서, LEVEL_LOGO에 추가를 한다. ]

image.png

[6]. 이제, 객체를 생성해서 레이어에 추가하는 작업은 끝이 났다.

[7]. 현 상태에서, BackGround의 Update 함수들에 중단점을 걸게 되면, 무한루프를 돌면서 내 프로젝트 파일이 진행되는 것을 확인할 수 있다.

[8]. Renderer 클래스를 만든다. → Renderer 클래스를 만드려는 이유는,

[9]. GameObjects 들을 List STL 에 담아 보관하고 (list 배열 형태), Add_RenderGroup 함수에서, 이 list에, 각각의 RENDER_GROUP에 맞는 list에, GameObject들을 push_back 해준다.

[10]. Engine 프로젝트 속, Renderer 클래스에서 미리 Client 개발자들을 위해, Add_RenderGroup 함수의 파라미터에, GameObject 타입을 사용할 수 있게끔, 해놨는데, 이는 곧, Object_Mangaer 클래스의 사본객체들을 사용하는 것과 같아, Add_Ref를 해줘야 한다.

[11]. Renderer 의 Render 함수는, Render 함수 하나로 쓰지 않고, 아까 열거체 속 RENDER_GROUP 에 맞는 그룹들 각각의 Render 함수를 만들어서 사용한다. 실제 list 마다 그 곳에 들어있는 객체마다 특정 세팅이 다를 수 있기 때문에, 나눠서 정리해 두는 것.