Scene Change

김태훈·2024년 1월 10일
0

Win32API

목록 보기
14/24
post-custom-banner

scene change

한 프레임을 마무리 하고 발생 해야 함

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;

exit,enter

각 씬마다 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();
}

delete group

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]);

delete all

한그룹을 지우는 함수를 그룹 개수에 맞게 모두 실행
for (size_t i = 0; i < (UINT)GROUP_TYPE::END; ++i)
{
Safe_Delete_Vec<CObject*>(m_arrObj[i]);
}

scene change 마다 모든 그 scene의 모든 obj들을 지울 필요는 없음

몇개 obj는 계속해서 유지해 나가든지, 유지할때 상태값을 저장 시키든지는 설계에 따라 다름

profile
복습을 위한 핵심 내용 및 모작
post-custom-banner

0개의 댓글