void InMapRenderState::InitState()
{
	IRenderingState::InitState();

	Application* app = TBAppGlobals::Instance()->App;
	m_pageManager=new GUI::GUIPageManager();
	m_mapGUIManager = new GUI::GUIManager(Engine::getInstance().getDevice());
	m_entManager=new game::GameEntityManager();
	m_mapWebpage=m_pageManager->CreateWebPage(m_mapGUIManager);
	math::vector2d rw=app->GetRenderWindow()->GetSize();
	m_mapWebpage->SetResolution(rw.x,rw.y);
	int scale=1;
	m_mapWebpage->SetSize((rw)*scale);///math::vector2d(1,2));
	m_mapWebpage->SetPosition((rw)*(-(scale-1.0f)/2.0f));
	core::string path;
	gFileSystem.getCorrectFilePath("/HTML/maps.html",path);
	if(path!="")
	{
		m_mapWebpage->NavigateTo("file:///"+path);
	}

	m_sceneManager=new scene::SceneManager(app->getDevice());
	m_mapGUIRT=new scene::GUIManagerRT();
	scene::ISceneNode* snode=m_sceneManager->createSceneNode();
	scene::IGUIElementRT* guiRT= m_mapGUIRT->CreateFromManager(m_mapGUIManager);//m_guiRtManager->CreateFromElement(m_root);
	scene::GUIElement3D* rendNode=new scene::GUIElement3D();
	rendNode->SetElement(guiRT);
	rendNode->setOwner(snode);
	snode->AttachNode(rendNode);
	snode->setScale(100);

	m_mapGUIManager->SetRootElement(m_mapWebpage);

	m_entManager->SetSceneManager(m_sceneManager);

	m_entManager->loadFromFile("Indicator.xml");
	{
		const game::EntityList& ents= m_entManager->GetEntities();
		game::EntityList::const_iterator it=ents.begin();
		for (;it!=ents.end();++it)
		{
			const std::list<IObjectComponent*>& comps= (*it)->GetComponent(game::SceneComponent::getClassRTTI());
			std::list<IObjectComponent*>::const_iterator it2=comps.begin();
			for (;it2!=comps.end();++it2)
			{
				m_indicatorObjs.push_back(((game::SceneComponent*)*it2)->GetSceneNode());
			}
		}
	}

	{
		m_guiManager=new GUI::GUIManager(app->getDevice());
		GUI::IGUIPanelElement* root=new  GUI::IGUIPanelElement(core::string(""),m_guiManager);
		m_guiManager->SetRootElement(root);
		root->SetDocking(GUI::EED_Fill);

		GUI::GUIOverlay* o= GUI::GUIOverlayManager::getInstance().LoadOverlay("TBee\\GUIMapScreen.gui");
		if(o)
		{
			o->CreateElements(m_guiManager,root,0,m_mapScreenGUI);
		}
		o= GUI::GUIOverlayManager::getInstance().LoadOverlay("TBee\\GUIRobotPanel.gui");
		if(o)
		{
			o->CreateElements(m_guiManager,root,0,m_robotPanel);
			m_robotPanel->Hide();
		}

		o= GUI::GUIOverlayManager::getInstance().LoadOverlay("TBee\\GUIMapControls.gui");
		if(o)
		{
			o->CreateElements(m_guiManager,root,0,0);
		}
	}

	MapCamera* cam = new MapCamera(m_sceneManager, AppData::Instance()->inputMngr);
	m_sceneManager->addSceneNode(cam);
	cam->UpdatePosition();

	m_mapController=new CinematicController(AppData::Instance()->inputMngr); //new JoystickMapController(app->GetInputManager());
	m_mapObject=new MapObject();
	m_mapObject->AddListener(this);
	m_mapObject->Init(cam,m_mapWebpage);
	m_mapController->SetMapObject(m_mapObject);

	{
		m_viewport=new scene::ViewPort("MapCam",cam,0,0,math::rectf(0,0.2,1,0.8),0);
		m_viewport->SetClearColor(video::SColor(0,1,0,1));

		video::ITexturePtr renderTargetTex = Engine::getInstance().getDevice()->createTexture2D(math::vector2d(1, 1), video::EPixel_R8G8B8A8, true);
		renderTargetTex->setBilinearFilter(false);
		renderTargetTex->setTrilinearFilter(false);
		renderTargetTex->setMipmapsFilter(false);
		m_viewport->SetClearColor(video::SColor(1,1,1,1));

		video::IRenderTargetPtr rt = Engine::getInstance().getDevice()->createRenderTarget(mT(""), renderTargetTex, video::IHardwareBufferPtr::Null, video::IHardwareBufferPtr::Null, false);
		m_viewport->setRenderTarget(rt);
		m_viewport->setOnlyToRenderTarget(true);
		m_viewport->SetAutoUpdateRTSize(true);
		m_viewport->enablePostProcessing(true);

		video::ParsedShaderPP* pp = new video::ParsedShaderPP(Engine::getInstance().getDevice());
		pp->LoadXML(gFileSystem.openFile("BrowserEffect.peff"));
		m_viewport->setPostProcessing(pp);

		m_mapObject->SetEffect(pp);
	}
}