WIN32API FrameWork/원본

220504_WIN32API_Framework_5-3_실제 Scene 만들고 실행(MainScene)

hyrule 2022. 5. 8. 18:21

* 이제 각 Scene은 코드가 간단해진다.

* Scene 별로 Init 함수에 생성할 게임오브젝트를 생성해 주면 끝

 -> 각 Scene에서는 배치할 GameObject를 생성

 -> SceneManager에서는 Scene을 생성

 

* 일단 작동하는 개체가 Player 뿐이므로 Player 객체를 생성해서 작동하는지 확인해 보자

* MainScene을 아래와 같이 만들어 준다.

//Class CMainScene
//MainScene.h

#pragma once
#include "Scene.h"
class CMainScene :
    public CScene
{
    friend class CSceneManager;

protected:
    CMainScene();
    virtual ~CMainScene();

public:
    bool Init();

    //이제 씬별 게임오브젝트의 Render과 Update는 
    //개별 씬에서 하는 것이 아니라
    //CScene 클래스에서 모아놓은 GameObject 리스트를
    //iterator가 순회하면서 render할 것임.
    //-> 씬 별로 Update와 Render은 필요 없음 이제
    /*void Update(float DeltaTime);
    void Render(HDC hDC, float DeltaTime);*/
    

};

 

 

* CreateObject<CPlayer>("Player");

//Class CMainScene
//MainScene.cpp

#include "MainScene.h"
#include "../GameObject/Player.h"

CMainScene::CMainScene()
{
}

CMainScene::~CMainScene()
{
}

bool CMainScene::Init()
{
	//앞으로는 씬에서 필요한 게임 오브젝트들을 직접 생성하는 것이 아닌,
	//각 Scene에서 생성해 준다.
	CreateObject<CPlayer>("Player");

	return true;
}

 

 

 

 

 

 

 

* SceneManager의 Init 함수 부분에 아까 만들어 놓았던 CreateScene 함수를 통해 Scene을 생성해 주면 된다.

bool CSceneManager::Init()
{
	//템플릿에 CMainScene을 넣어 CreateScene 함수를 통해 생성
	CreateScene<CMainScene>();

	return true;
}