private void UpdatePreviewBrush()
{
if (!this.IsModificationToolActive() || (this.m_Terrain.terrainData == null))
{
this.DisableProjector();
}
else
{
Vector2 vector3;
Vector3 vector4;
Projector previewProjector = this.GetActiveBrush((int) this.m_Size).GetPreviewProjector();
float num = 1f;
float num2 = this.m_Terrain.terrainData.size.x / this.m_Terrain.terrainData.size.z;
Transform transform = previewProjector.transform;
bool flag = true;
if (this.Raycast(out vector3, out vector4))
{
if (this.selectedTool == TerrainTool.PlaceTree)
{
previewProjector.material.mainTexture = (Texture2D) EditorGUIUtility.Load(EditorResourcesUtility.brushesPath + "builtin_brush_4.png");
num = TreePainter.brushSize / 0.8f;
num2 = 1f;
}
else if (((this.selectedTool == TerrainTool.PaintHeight) || (this.selectedTool == TerrainTool.SetHeight)) || (this.selectedTool == TerrainTool.SmoothHeight))
{
if ((this.m_Size % 2) == null)
{
float num3 = 0.5f;
vector3.x = (Mathf.Floor(vector3.x * (this.m_Terrain.terrainData.heightmapWidth - 1)) + num3) / ((float) (this.m_Terrain.terrainData.heightmapWidth - 1));
vector3.y = (Mathf.Floor(vector3.y * (this.m_Terrain.terrainData.heightmapHeight - 1)) + num3) / ((float) (this.m_Terrain.terrainData.heightmapHeight - 1));
}
else
{
vector3.x = Mathf.Round(vector3.x * (this.m_Terrain.terrainData.heightmapWidth - 1)) / ((float) (this.m_Terrain.terrainData.heightmapWidth - 1));
vector3.y = Mathf.Round(vector3.y * (this.m_Terrain.terrainData.heightmapHeight - 1)) / ((float) (this.m_Terrain.terrainData.heightmapHeight - 1));
}
vector4.x = vector3.x * this.m_Terrain.terrainData.size.x;
vector4.z = vector3.y * this.m_Terrain.terrainData.size.z;
vector4 += this.m_Terrain.transform.position;
num = ((((float) this.m_Size) * 0.5f) / ((float) this.m_Terrain.terrainData.heightmapWidth)) * this.m_Terrain.terrainData.size.x;
}
else if ((this.selectedTool == TerrainTool.PaintTexture) || (this.selectedTool == TerrainTool.PaintDetail))
{
int alphamapWidth;
int alphamapHeight;
float num4 = ((this.m_Size % 2) != null) ? 0.5f : 0f;
if (this.selectedTool == TerrainTool.PaintTexture)
{
alphamapWidth = this.m_Terrain.terrainData.alphamapWidth;
alphamapHeight = this.m_Terrain.terrainData.alphamapHeight;
}
else
{
alphamapWidth = this.m_Terrain.terrainData.detailWidth;
alphamapHeight = this.m_Terrain.terrainData.detailHeight;
}
if ((alphamapWidth == 0) || (alphamapHeight == 0))
{
flag = false;
}
vector3.x = (Mathf.Floor(vector3.x * alphamapWidth) + num4) / ((float) alphamapWidth);
vector3.y = (Mathf.Floor(vector3.y * alphamapHeight) + num4) / ((float) alphamapHeight);
vector4.x = vector3.x * this.m_Terrain.terrainData.size.x;
vector4.z = vector3.y * this.m_Terrain.terrainData.size.z;
vector4 += this.m_Terrain.transform.position;
num = ((((float) this.m_Size) * 0.5f) / ((float) alphamapWidth)) * this.m_Terrain.terrainData.size.x;
num2 = ((float) alphamapWidth) / ((float) alphamapHeight);
}
}
else
{
flag = false;
}
previewProjector.enabled = flag;
if (flag)
{
vector4.y = this.m_Terrain.SampleHeight(vector4);
transform.position = vector4 + new Vector3(0f, 50f, 0f);
}
previewProjector.orthographicSize = num / num2;
previewProjector.aspectRatio = num2;
}
}