//-------------------------------------------------------------------------------------
/// <summary>
/// Загрузка карты высоты с файла формата RAW.
/// </summary>
/// <param name="file_name">Имя файла</param>
/// <param name="use_16bit">Кодировка файла</param>
//-------------------------------------------------------------------------------------
public void LoadHeightMapRAW(String file_name, Boolean use_16bit)
{
if (use_16bit)
{
Byte[,] data = DispatcherFiles.ReadRawFile8Bit(file_name);
if (data != null)
{
Int32 size_h = data.GetUpperBound(0);
if (size_h != mTerrainData.heightmapResolution)
{
Debug.LogError("Ошибка в загрузке карты высот. Загружен размер <" +
size_h.ToString() + ">. Требуется размер <" + mTerrainData.heightmapResolution + ">");
return;
}
Single[,] heights = mTerrainData.GetHeights(0, 0, mTerrainData.heightmapResolution, mTerrainData.heightmapResolution);
for (Int32 y = 0; y < mTerrainData.heightmapResolution; y++)
{
for (Int32 x = 0; x < mTerrainData.heightmapResolution; x++)
{
heights[(mTerrainData.heightmapResolution - 1) - y, x] = (((Single)(data[x, y])) / 255.0f);
}
}
mTerrainData.SetHeights(0, 0, heights);
}
}
else
{
UInt16[,] data = DispatcherFiles.ReadRawFile16Bit(file_name);
if (data != null)
{
Int32 size_h = data.GetUpperBound(0);
if (size_h != mTerrainData.heightmapResolution)
{
Debug.LogError("Ошибка в загрузке карты высот. Загружен размер <" +
size_h.ToString() + ">. Требуется размер <" + mTerrainData.heightmapResolution + ">");
return;
}
Single[,] heights = mTerrainData.GetHeights(0, 0, mTerrainData.heightmapResolution, mTerrainData.heightmapResolution);
for (Int32 y = 0; y < mTerrainData.heightmapResolution; y++)
{
for (Int32 x = 0; x < mTerrainData.heightmapResolution; x++)
{
heights[(mTerrainData.heightmapResolution - 1) - y, x] = (((Single)(data[x, y])) / 65535.0f);
}
}
mTerrainData.SetHeights(0, 0, heights);
}
}
}