BubbleBobbleRemake / DuvelEngine / SceneManager.cpp
SceneManager.cpp
Raw
#include "SceneManager.h"
#include "Scene.h"
#include "GameObject.h"

bool dae::SceneManager::SetScene(const std::string& name, bool restart)
{
	for (const auto& pScene : m_pScenes)
	{
		if (pScene->GetName() == name)
		{
			if (restart)
				pScene->Restart();

			m_ActiveSceneId = pScene->GetId();
			return true;
		}
	}

	return false;
}

void dae::SceneManager::Update(float deltaTime)
{
	for(auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->Update(deltaTime);
			break;
		}
		//pScene->Update(deltaTime);
	}
}

void dae::SceneManager::FixedUpdate(float deltaTime)
{
	for (auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->FixedUpdate(deltaTime);
			break;
		}
		//pScene->FixedUpdate(deltaTime);
	}
}

void dae::SceneManager::LateUpdate(float deltaTime)
{
	for (auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->LateUpdate(deltaTime);
			break;
		}
	}
}

void dae::SceneManager::HandleDeletions()
{
	for (auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->DeleteMarkedGameObjects();
			break;
		}
	}
}

void dae::SceneManager::HandleOwnershipChanges()
{
	for (auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->HandleChangeParents();
			break;
		}
	}
}

void dae::SceneManager::Render()
{
	for (auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			pScene->Render();
			break;
		}
		//pScene->Render();
	}
}

dae::Scene* dae::SceneManager::GetActiveScene()
{
	for (const auto& pScene : m_pScenes)
	{
		if (pScene->GetId() == m_ActiveSceneId)
		{
			return pScene.get();
		}
	}

	return nullptr;
	//std::count << "Error: Couldn't return scene!";
}

dae::Scene& dae::SceneManager::CreateScene(const std::string& name)
{
	const auto& pScene = std::shared_ptr<Scene>(new Scene(name));
	//auto pRootGameObject = new GameObject();
	//pScene->Add(pRootGameObject);

	m_pScenes.push_back(pScene);

	return *pScene;
}