본문 바로가기
Win32 API/기초

Win32 API 기초 : Animation (1)

글: 시플마 2024. 8. 19.

게임의 중요한 요소인

애니메이션을 구현하겠습니다.

 

오브젝트는 Component인 Animator를 보유하고 있고,

Animator는 다양한 Animation을 보유하고 있습니다.

 

그래서 오브젝트는 애니메이션에

필요한 텍스처를 Animator를 통해서

불러오고 움직이는 것처럼 보이게 할 겁니다.

 

그래서 오브젝트 클래스에 

 

CAnimator형 포인터 멤버 m_pAnimator를

두어 Animator를 가리킬 수 있게 합니다.

 

 

CAnimator 클래스는 

 

map형 멤버 m_mapAnimation를

두어 키-값이 문자열이며

실질적인 데이터는 CAnimation을 

가리키는 포인터인 여러 노드들을 

관리할 것입니다.

 

 

그리고 CreateAnimation 함수를 통해

애니메이션을 추가하거나, FindAnimation 함수를

통해 애니메이션을 찾거나, Play 함수를 통해

애니메이션을 재생하죠.

 

 

멤버 m_pOwner는 해당 애니메이터가

어떤 오브젝트의 애니메이터인지

나타내는 CObject형 포인터입니다.

 

 

 

 


 

 

 

 

오브젝트가 소멸하여 소멸자가 호출되면

 

m_pAnimator가 가리키는

애니메이터를 제거해 줘야겠죠?

 

 

그럼 애니메이터가 제거되면서

 

CAnimator 클래스의

소멸자가 호출될 겁니다.

 

여기서 Safe_Delete_Map 함수를 호출하여

애니메이션을 노드 형태로 보관하고 있던

멤버 m_mapAnimation를 인자로 넘기고 있네요.

 

 

Safe_Delete_Map 함수는

 

전역 함수가 모인 func 헤더 파일에 존재하는

함수 template로, iterator를 통해 인자로 받아 참조한

map 객체의 노드를 하나씩 순회하면서

노드의 second를 delete합니다.

 

m_mapAnimation를 인자로 넘겼으니

해당 map의 second에는 CAnimation 포인터가

있고, 해당 포인터가 가리키는 애니메이션을

delete하게 되겠습니다.

 

그럼 CAnimation 클래스의

소멸자가 호출되면서 동작이 마무리되겠죠.

 

 

그리고 마지막으로 인자로 받아 참조하고 있던

map 객체를 clear 함수를 통해 비워 줍니다.

 


강의 출처 : https://www.youtube.com/watch?v=WvIX6fgmnXs&list=PL4SIC1d_ab-ZLg4TvAO5R4nqlJTyJXsPK&index=36


'Win32 API > 기초' 카테고리의 다른 글

Win32 API 기초 : Animation (3)  (0) 2024.09.01
Win32 API 기초 : Animation (2)  (0) 2024.08.28
Win32 API 기초 : Object (1)  (0) 2024.08.18
Win32 API 기초 : Scene (1)  (0) 2024.08.18
Win32 API 기초 : Event Manager (3)  (0) 2024.08.16