private void CalcRoomForRect(Rect[] sources, Rect r)
{
float num8;
float num = !this.vertical ? r.x : r.y;
float num2 = num + (!this.vertical ? r.width : r.height);
float num3 = (num + num2) * 0.5f;
int index = 0;
while (index < sources.Length)
{
float num5 = !this.vertical ? (sources[index].x + (sources[index].width * 0.5f)) : (sources[index].y + (sources[index].height * 0.5f));
if (num5 > num3)
{
break;
}
index++;
}
float num6 = num;
for (int i = index - 1; i >= 0; i--)
{
if (this.vertical)
{
sources[i].yMax = num6;
if (sources[i].height >= base.children[i].minSize.y)
{
break;
}
num8 = sources[i].yMax - base.children[i].minSize.y;
sources[i].yMin = num8;
num6 = num8;
}
else
{
sources[i].xMax = num6;
if (sources[i].width >= base.children[i].minSize.x)
{
break;
}
num8 = sources[i].xMax - base.children[i].minSize.x;
sources[i].xMin = num8;
num6 = num8;
}
}
if (num6 < 0f)
{
float num9 = -num6;
for (int k = 0; k < (index - 1); k++)
{
if (this.vertical)
{
sources[k].y += num9;
}
else
{
sources[k].x += num9;
}
}
num2 += num9;
}
num6 = num2;
for (int j = index; j < sources.Length; j++)
{
if (this.vertical)
{
float yMax = sources[j].yMax;
sources[j].yMin = num6;
sources[j].yMax = yMax;
if (sources[j].height >= base.children[j].minSize.y)
{
break;
}
num8 = sources[j].yMin + base.children[j].minSize.y;
sources[j].yMax = num8;
num6 = num8;
}
else
{
float xMax = sources[j].xMax;
sources[j].xMin = num6;
sources[j].xMax = xMax;
if (sources[j].width >= base.children[j].minSize.x)
{
break;
}
num8 = sources[j].xMin + base.children[j].minSize.x;
sources[j].xMax = num8;
num6 = num8;
}
}
float num14 = !this.vertical ? base.position.width : base.position.height;
if (num6 > num14)
{
float num15 = num14 - num6;
for (int m = 0; m < (index - 1); m++)
{
if (this.vertical)
{
sources[m].y += num15;
}
else
{
sources[m].x += num15;
}
}
num2 += num15;
}
}