protected virtual void UpdateBounds()
{
float ax, ay, aw, ah;
if (_children.Count > 0)
{
ax = int.MaxValue;
ay = int.MaxValue;
float ar = int.MinValue, ab = int.MinValue;
float tmp;
int cnt = _children.Count;
for (int i = 0; i < cnt; ++i)
{
GObject child = _children[i];
tmp = child.x;
if (tmp < ax)
ax = tmp;
tmp = child.y;
if (tmp < ay)
ay = tmp;
tmp = child.x + child.actualWidth;
if (tmp > ar)
ar = tmp;
tmp = child.y + child.actualHeight;
if (tmp > ab)
ab = tmp;
}
aw = ar - ax;
ah = ab - ay;
}
else
{
ax = 0;
ay = 0;
aw = 0;
ah = 0;
}
SetBounds(ax, ay, aw, ah);
}