/*---------------------------------------------------------------------------------*/
void CameraHandler::initCameraHandler(Ogre::Camera* cam, OGRE3DRenderSystem* renderSystem,Ogre::SceneManager* mmvpSceneMgr , Player* p)
{
	mvpCam = cam;
	mvpSceneMgr = mmvpSceneMgr;

	//Gett settings from the settings class.
	mvpRotate = &Settings::getSingletonPtr()->mCamRotate;
	mvpZoom = &Settings::getSingletonPtr()->mCamZoom;
	mvpCamVelocityY = &Settings::getSingletonPtr()->mCamVelocityY;
	mvpCamVelocityXZ = &Settings::getSingletonPtr()->mCamVelocityXZ;
	mvpCamHeightMaxY = &Settings::getSingletonPtr()->mCamHeightMaxY;
	mvpCamHeightMinY = &Settings::getSingletonPtr()->mCamHeightMinY;
	mvpCamDistanceMax = &Settings::getSingletonPtr()->mCamDistanceMax;
	mvpCamDistanceMin = &Settings::getSingletonPtr()->mCamDistanceMin;
	mvpCamCharYAdjust = &Settings::getSingletonPtr()->mCamCharYAdjust;
	mvpCamGunTrackerOffsetX = &Settings::getSingletonPtr()->mCamGunTrackerOffsetX;
	mvpCamGunTrackerOffsetY = &Settings::getSingletonPtr()->mCamGunTrackerOffsetY;
	mvpCamGunTrackerOffsetZ = &Settings::getSingletonPtr()->mCamGunTrackerOffsetZ;

	mvScreenWidth = GameFramework::getSingletonPtr()->mpRenderWnd->getWidth();
	mvScreenHeight = GameFramework::getSingletonPtr()->mpRenderWnd->getHeight();

	//All the nodes that is going to be used
	mvpCamNoCollisionNode = mvpSceneMgr->getSceneNode("CamNoCollisionNode");
	mvpCamCollisionNode = mvpSceneMgr->getSceneNode("CamCollisionNode");
	mvpCamHelperNode = mvpSceneMgr->getSceneNode("CamHelperNode");
	mvpCamOrginNode = mvpSceneMgr->getSceneNode("CamOrginNode");
	mvpCharNode = mvpSceneMgr->getSceneNode("CharNode");
	mvpCamFirstPersonNode = mvpSceneMgr->getSceneNode("CamFirstPersonNode");
	mvpFirstPersonGunTrackerNode = mvpSceneMgr->getSceneNode("FirstPersonGunTrackerNode");
	mvpCamGunMoveNode = mvpSceneMgr->getSceneNode("CamMoveNode");
	mvpCamGunMoveHelperNode = mvpSceneMgr->getSceneNode("CamMoveHelperNode");
	mvpCamGunCenterNode = mvpSceneMgr->getSceneNode("CamCenterNode");
	mvpCamGunCenterHelperNode = mvpSceneMgr->getSceneNode("CamCenterHelperNode");
	mvpCursorMovableGunTrackerNode = mvpSceneMgr->getSceneNode("GunTrackNode");

	setPlayerPtr(p);
	mvCamMode = NULL;
	setCamMode(Game::Cam_ThirdPerson);
	mvPitchTrackerThirdPerson = 0;
	mvPitchTrackerSemiThirdPerson = 0;
	mvPitchTrackerFirstPerson = 0;

	//Create sphere for collision
	//Properties
	NxOgre::RigidBodyDescription descriptionSphere;
	descriptionSphere.mBodyFlags |= NxOgre::Enums::BodyFlags_DisableGravity;
	descriptionSphere.mBodyFlags |= NxOgre::Enums::BodyFlags_FreezeRotation; 
	descriptionSphere.mMass = *Settings::getSingletonPtr()->mCamMass;
	descriptionSphere.mDensity = 0;
	descriptionSphere.mLinearDamping = *Settings::getSingletonPtr()->mCamLinearDamping;
	descriptionSphere.mAngularDamping = *Settings::getSingletonPtr()->mCamAngularDamping;

	/*Create it.
	cube1m mesh wont show anyway.
	NxOgre::Vec3(0,2,3) indicates the camera position*/ //@todo spawn at player
	mvpCamSphere = renderSystem->createBody(new NxOgre::Sphere(*Settings::getSingletonPtr()->mCamRadius),
		NxOgre::Vec3(Settings::getSingletonPtr()->mCamStartPosX,Settings::getSingletonPtr()->mCamStartPosY,Settings::getSingletonPtr()->mCamStartPosZ)+NxOgre::Vec3(Ogre::Vector3
			(*Settings::getSingletonPtr()->mPlayerSpawnPointX,*Settings::getSingletonPtr()->mPlayerSpawnPointY,*Settings::getSingletonPtr()->mPlayerSpawnPointZ)), 
		"cube.1m.mesh", descriptionSphere);
	mvpCamSphere->getEntity()->setVisible(false);

	//Set Collision Flag to group 2
	NxShape* const* s2 = mvpCamSphere->getNxActor()->getShapes();
	(*s2)->setGroup(2);
}
void MapViewer::onCamModePan()
{
    emit setCamMode(1);
}
void MapViewer::onCamModeZoom()
{
    emit setCamMode(2);
}
void MapViewer::onCamModeRotate()
{
    emit setCamMode(0);
}