posted by REDFORCE 2017. 4. 21. 04:00

#1. Engine System

 + WinMain - EngineSystem

 + EngineCore

 + EngineError

 + MainNode


#2. FrameWork

 + Grahpics

 + Image - SpriteData

 + Layer  (현재 글)

 + Input

 + Game

 + Manager

 + Game Interface

 + Utility


#3. Testing Module

 + 2D Image Test

 + 2D Animation Test

 + Game UI Test


-----------------------------------------------------------------------


이번 글에서는 Layer Class에 대해 다루도록 하겠습니다.


Layer Class는 Image Class 내부에 들어가서 사용 되는 클래스 입니다.

즉, 어떤 이미지 또는 애니메이션을 돌릴 때 사용되어지는 모듈 입니다.



Q. 그럼 Layer Class가 대체 무엇인가?

A. 포토샵의 레이어와 비슷하다 생각하시면 될 것 같습니다.


흔히 레이어라 하면 겹겹이 쌓여서 출력되어지는 그런 계층 구조의 기능을 상상하실 수 있을 것 입니다.


그러나 보시고 계신 현재 Layer Class 는 Scene의 Render에서 

해당 Layer 단계의 출력 여부(true / false) 를 체크하여 Rendering 해줍니다.


Layer Class 자체는 Layer가 활성화 됐냐 안됐냐 여부만 갖고 있습니다.


그리고 활성화 여부에 맞춰,

씬의 Render 에서는 활성화 된 Layer만 Rendering을 해주게 됩니다.


Layer Class의 헤더 부터 살펴볼까요.



헤더에서 보면 


Class Layer

{

private:

enLayerList layer = enLayerList::LAYER_DEFAULT;

bool bRenderSwitch = TRUE;

}


로 되어있습니다.


첫 번째 enum class 형 layer는 현재 Layer클래스가 어떤 레이어 타입인지를 나타내고,

두 번째 bRenderSwitch 값은 레이어의 활성화 여부를 나타냅니다.


기본적으로 두 값은 Default와 true 값으로 초기화되어 들어갑니다.

클래스가 만들어 진 시점에서 일단 한번 바로 활성화하기 위해서 그렇습니다.


만약 레이어만 만들고 쓰고 싶지 않다면


클래스 생성 후 바로 set함수를 이용하여 비활성화 시키면 됩니다.


.cpp 파일의 내용 또한 별게 없습니다.


다만 주의할 점은 생성자가 enum class 형 enLayerList layerstate값을 받게 되어있습니다.



여기까지 봐서는 무슨 말인지 잘 이해가 안가실 수 있으나


간단히 예제 상황을 들면,


액션 게임을 할 때 캐릭터가 필살기를 쓰면 배경이 검은색으로 바뀌면서 배경이나 UI가 사라지고 캐릭터에 카메라 포커스가 맞춰지는 경우를 보신 적이 있을 것 입니다.


위 경우와 같이 어떤 레이어 계층의 렌더링 자체를 껏다 켰다 하실 때 사용 할 수 있습니다.


별로 이런거 쓸일이 없다. 그러면 딱히 Layer Class를 활용하지 않아도 상관없습니다.



레이어 클래스 자체는 여기까지만 설명드리면 어느정도 목적과 그 이용 사례를 스스로 생각하실 수 있으리라 예상 됩니다.


그럼 다음 글 LayerManager Class 를 이어서 설명하도록 하겠습니다.