공부/Graphics, DirectX, 포트폴리오 구조

[포트폴리오 구조] ResourceManager, SceneResource 그리고 각종 Manager들의 관계

sudo 2021. 12. 17. 04:03

1. SceneResource는 특정 Scene에만 존재하는 Resource들을 Scene마다 개별적으로 관리하게 위해 존재하는 녀석

 

2. 기본적으로 SceneResource에 있는건 모두 ResourceManager에도 있다


3. ResourceManager는 여러개의 매니저들(MeshManager, ShaderManager, MaterialManager, TextureManager, AnimationManager)들을 관리하고, 해당 리소스에 대한 요청을하면 ResourceManager는 해당 매니저에게 똑같은 이름의 함수를 중간에서 호출해주고 결과를 받을 뿐이다. 실질적인 동작은 각각의 매니저들이 해준다.


예를 들어서 SceneResource::LoadSequence2D를 호출하면 SceneResource::LoadSequence2D안에서 ResourceManager::LoadSequence2D를 호출해주고 ResourceManager::LoadSequence2D안에서 AnimationManager::LoadSequence를 호출한다. 그러면 AnimationManager에서 실질적으로 Sequenece를 Load하는CSequence::Load를 호출하고, 결과 만들어진 Sequence를 자신이 관리하는 map에 넣어준다. 다시 역으로 돌아와서 SceneResource도 Sequence들을 관리하는 map에 Load한 Sequence를 ResourceManager에게 FindAnimationSequence를 요청해서 받은걸 넣어준다.