// Loads the selected scene
HRESULT LoadScene()
{
	memset( g_strRawDEMDataFile, 0, sizeof(g_strRawDEMDataFile) );
	memset( g_strEncodedRQTTriangFile, 0, sizeof(g_strEncodedRQTTriangFile) );
	// Get selected config file
	int iSelectedConfigFile = 0;
	// Parse the config file
	if( FAILED(ParseConfigurationFile( g_ConfigFiles[iSelectedConfigFile].c_str() )) )
	{
		//LOG_ERROR(_T("Failed to load config file %s"), g_ConfigFiles[iSelectedConfigFile].c_str() );
		return E_FAIL;
	}

	g_TerrainRenderParams.m_fElevationSamplingInterval = g_fElevationSamplingInterval;
		
	// Create data source
	try
	{

		g_pElevDataSource.reset( new CElevationDataSource(g_strRawDEMDataFile, g_iPatchSize) );
	}
	catch(const std::exception &)
	{
		LOG_ERROR(_T("Failed to create elevation data source"));
		return E_FAIL;
	}

	g_TerrainRenderParams.m_iNumLevelsInPatchHierarchy = g_pElevDataSource->GetNumLevelsInHierarchy();
	g_TerrainRenderParams.m_fGlobalMinElevation = g_pElevDataSource->GetGlobalMinElevation() * g_fElevationScale ;
	g_TerrainRenderParams.m_fGlobalMaxElevation = g_pElevDataSource->GetGlobalMaxElevation() * g_fElevationScale ;
	g_TerrainRenderParams.m_iPatchSize = g_pElevDataSource->GetPatchSize();
	g_TerrainRenderParams.m_fElevationScale = g_fElevationScale;

	return S_OK;
}