Eegeo::Camera::GlobeCamera::GlobeCameraController* DefaultCameraControllerFactory::Create() { Eegeo::Camera::GlobeCamera::GlobeCameraController* pController = new Eegeo::Camera::GlobeCamera::GlobeCameraController( m_terrainModelModule.GetTerrainHeightProvider(), m_mapModule.GetEnvironmentFlatteningService(), m_mapModule.GetResourceCeilingProvider(), m_touchController, m_config, m_screenPropertiesProvider.GetScreenProperties()); // override default configuration to enable two-finger pan gesture to control additional camera pitch Eegeo::Camera::GlobeCamera::GlobeCameraTouchSettings touchSettings = pController->GetTouchSettings(); touchSettings.TiltEnabled = m_tiltEnabled; pController->SetTouchSettings(touchSettings); Eegeo::Space::LatLongAltitude location = Eegeo::Space::LatLongAltitude::FromDegrees(m_interestPointLatitudeDegrees, m_interestPointLongitudeDegrees, m_interestPointAltitudeMeters); Eegeo::Space::EcefTangentBasis cameraInterestBasis; Eegeo::Camera::CameraHelpers::EcefTangentBasisFromPointAndHeading(location.ToECEF(), m_cameraControllerOrientationDegrees, cameraInterestBasis); pController->SetView(cameraInterestBasis, m_cameraControllerDistanceFromInterestPointMeters); return pController; }