bool SinglePlayerGameScene::Init() 
{
	if (Scene::Init())
	{
		/*FreeLookCamera* freelookCam = FreeLookCamera::Create();
		AddChild(freelookCam);
		SetCurrentCamera( freelookCam );*/

		// create a level from the level resource
		std::shared_ptr<LevelResource> levelRes = Engine::GetInstance()->GetModuleByType<CachedResourceLoader>( EngineModuleType::RESOURCELOADER )->LoadResource<LevelResource>( "Casino/Casino.vgsLevel", ( char )0xA6 );
		LevelNode* level = LevelNode::CreateFromResource( levelRes );
		
#ifdef TONEARM_DEBUG
		level->ShowCollisions( false );
#endif
		SetLevel(level);
		
		//create local character(s)
		TankCharacter* player = TankCharacter::Create("Models/RobynTank.vgsmodel", "Data/Characters.ini", "Tank", false);
		player->SetPosition(glm::vec3(1000.0f, 8.5f, 1000.0f));
		AddPlayer(player);

		/*SniperCharacter* player = SniperCharacter::Create("Models/DonTank.vgsmodel", "Data/Characters.ini", "Sniper", false);
		player->SetPosition(glm::vec3(1000.0f, 8.5f, 1000.0f));
		AddPlayer(player);*/

		/*SniperCharacter* player2 = SniperCharacter::Create("Models/DonTank.vgsmodel", "Data/Characters.ini", "Sniper", false);
		player2->SetPosition(glm::vec3(1000.0f, 8.5f, 1200.0f));
		AddPlayer(player2);*/

		// create camera
		FixedCamera* fixedCam = FixedCamera::Create();
		fixedCam->InitWithTarget(player, 1000.0f, 1900.0f);
		fixedCam->Init();
		SetCurrentCamera(fixedCam);

		//create fog of war
		FogOfWarNode* fog = FogOfWarNode::Create();
		AddChild( fog );

		// will be called when ingame starts
		GameScene::InitGUI();

		GUIManager* guiMgr = Engine::GetInstance()->GetModuleByType<OpenGLRenderModule>(EngineModuleType::RENDERER)->GetGUIManager();
		guiMgr->CreateLayer(new PauseGUI(PauseGUI::Type::SINGLE), "pause_menu_gui");

		CreateReticle();

		return true;
	}

	return false;
}