public Bounds OnGetFrameBounds()
{
Vector2 vector;
Vector3 vector2;
if (((Camera.current != null) && (this.m_Terrain.terrainData != null)) && this.Raycast(out vector, out vector2))
{
Vector3 vector3;
if (SceneView.lastActiveSceneView != null)
{
SceneView.lastActiveSceneView.viewIsLockedToObject = false;
}
Bounds bounds = new Bounds();
float num = (this.selectedTool != TerrainTool.PlaceTree) ? ((float) this.m_Size) : TreePainter.brushSize;
vector3.x = (num / ((float) this.m_Terrain.terrainData.heightmapWidth)) * this.m_Terrain.terrainData.size.x;
vector3.z = (num / ((float) this.m_Terrain.terrainData.heightmapHeight)) * this.m_Terrain.terrainData.size.z;
vector3.y = (vector3.x + vector3.z) * 0.5f;
bounds.center = vector2;
bounds.size = vector3;
if ((this.selectedTool == TerrainTool.PaintDetail) && (this.m_Terrain.terrainData.detailWidth != 0))
{
vector3.x = ((num / ((float) this.m_Terrain.terrainData.detailWidth)) * this.m_Terrain.terrainData.size.x) * 0.7f;
vector3.z = ((num / ((float) this.m_Terrain.terrainData.detailHeight)) * this.m_Terrain.terrainData.size.z) * 0.7f;
vector3.y = 0f;
bounds.size = vector3;
}
return bounds;
}
Vector3 position = this.m_Terrain.transform.position;
if (this.m_Terrain.terrainData == null)
{
return new Bounds(position, Vector3.zero);
}
Vector3 size = this.m_Terrain.terrainData.size;
float[,] numArray = this.m_Terrain.terrainData.GetHeights(0, 0, this.m_Terrain.terrainData.heightmapWidth, this.m_Terrain.terrainData.heightmapHeight);
float minValue = float.MinValue;
for (int i = 0; i < this.m_Terrain.terrainData.heightmapHeight; i++)
{
for (int j = 0; j < this.m_Terrain.terrainData.heightmapWidth; j++)
{
minValue = Mathf.Max(minValue, numArray[j, i]);
}
}
size.y = minValue * size.y;
return new Bounds(position + ((Vector3) (size * 0.5f)), size);
}