#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
-----------------------------------------------------------------------
이어서 LayerManager Class에 대해서 설명하도록 하겠습니다.
Layer Class를 보셨다면 헤더 파일 내용 중에
enum class 타입으로 선언되어있는 Layer 리스트를 보셨을 겁니다.
위 그림은 해당 리스트 내용을 그대로 순서대로 나열한 것 입니다.
다시 뒤로 돌아가서 코드 보기 귀찮으신 분들을 위해 enum Class만 다시 올려드립니다.
보는 바와 같이 LAYER_NONE 부터 LAYER_LAST 까지.
(1) LAYER_NONE : 초기화용 레이어 타입
(2) LAYER_FIRST : 첫 번째 레이어
(3) LAYER_BACKGROUND : 배경 레이어
(4) LAYER_DEFAULT : 일반 레이어
(5) LAYER_UI : UI 용 레이어
(6) LAYER_LAST : 마지막 레이어
순으로 총 6가지의 레이어 타입이 있습니다.
만약 무엇보다 우선순위를 높여서 출력하고 싶으신 것이 있다면 첫 번째 레이어로 이미지 클래스에서 타입을 결정시키면 되고.
일반적인 이미지 출력(캐릭터, 아이템, 애니메이션 등)은 LAYER_DEFAULT 를 이용하시면 됩니다.
그 외에 레이어들은 다른 레이어와 똑같이 직관적이므로 설명은 생략하겠습니다.
만약 어떤 설정을 안한다면 모든 이미지들은 LAYER_DEFAULT 값으로 들어갑니다.
그럼 Layer에 대한 복습이 다시 됐으리라 생각하고,
LayerManager를 바로 살펴보도록 하겠습니다.
Layer Manager 헤더 내용입니다.
1. LayerManagerNS
먼저 namespace 를 살펴보시면 const std::string 타입으로 미리 구성 된 LAYER의 이름들이 들어가있습니다.
2. 변수들
그리고 private: 에 선언되어있는 변수를 확인해주시기 바랍니다.
(1) std::map<std::string, layer*> layerList; (레이어 정렬 전 MAP 컨테이너)
(2) std::vector<std::pair<std::string, layer*>> layerVec; (레이어 정렬 된 VECTOR 컨테이너)
(3) enLayerList curLayerState; (현재 렌더링 해야할 레이어)
이렇게 3가지의 변수가 있습니다.
3. 함수들
다음 public: 에 여러가지 함수들이 있습니다만...
역시나 getter/setter함수들이 주로 있을 뿐, 현재 눈여겨 봐야 될 함수는 SortLayer( ) 밖에 없습니다.
4. 정렬용 템플릿
네 번째로 확인할 점은 레이어들을 정렬 시키기 위해 만들어 둔 템플릿 입니다.
std::less를 이용하여 받아온 매개변수를 left / right 비교를 통해 true/false를 뱉어줍니다.
헤더에서 일단 살펴볼 내용들은 위에 언급한 정도이고,
자세한 설명은 .cpp에서 이어가도록 하겠습니다.
'MyProject > SephyEngine' 카테고리의 다른 글
June_Engine #2_Input .h (0) | 2017.05.18 |
---|---|
June_Engine #3_LayerManager Class .cpp (0) | 2017.04.21 |
June_Engine #3_Layer Class (0) | 2017.04.21 |
June_Engine #3_Image Class .cpp (2) (0) | 2017.04.20 |
June_Engine #3_Image Class .cpp (1) (0) | 2017.04.19 |