한 프레임을 마무리 하고 발생 해야 함
update 중에 하면
update는 이전 scene,
final update, render는 바꾼 scene에 적용 됨
final update 중에도 변경되면 마찬가지로 오류가 있다
따라서 render뒤에 실행 될수 있게
이벤트 등록으로 처리 해야 함
scene change이벤트 등록-> 등록된 이벤트 처리
scene mgr의 chagescene을 private으로 하고 eventmgr이 friend 선언하여
changescene을 이벤트 실행할때 사용한다
case EVENT_TYPE::SCENE_CHANGE:
{
//lparnm:Next Scene Type
CSceneMgr::GetInst()->ChangeScene((SCENE_TYPE)_eve.lParam);
}
break;
각 씬마다 enter,exit을 구현하여
원래 있던 scene은 exit 실행
scene을 change 하고
바뀐 현재 scene의 enter를 실행
void CSceneMgr::ChangeScene
(SCENE_TYPE _eNext)
{
m_pCurScene->Exit();
m_pCurScene = m_arrScene[(int)_eNext];
m_pCurScene->Enter();
}
obj 포인터들이 가르키고 있는 주소들 삭제
벡터 클리어
template
void Safe_Delete_Vec(vector& _vOrigin)
{
for (size_t i = 0; i < _vOrigin.size(); ++i)
{
if (nullptr != _vOrigin[i])
delete _vOrigin[i];
}
_vOrigin.clear();
}
Safe_Delete_Vec<CObject*>(m_arrObj[(UINT)_eTarget]);
한그룹을 지우는 함수를 그룹 개수에 맞게 모두 실행
for (size_t i = 0; i < (UINT)GROUP_TYPE::END; ++i)
{
Safe_Delete_Vec<CObject*>(m_arrObj[i]);
}
scene change 마다 모든 그 scene의 모든 obj들을 지울 필요는 없음
몇개 obj는 계속해서 유지해 나가든지, 유지할때 상태값을 저장 시키든지는 설계에 따라 다름