private void UpdateLayout()
{
if (_content.texture == null && _content.frameCount == 0)
{
if (_autoSize)
{
_updatingLayout = true;
this.SetSize(50, 30);
_updatingLayout = false;
}
return;
}
_contentWidth = _contentSourceWidth;
_contentHeight = _contentSourceHeight;
if (_autoSize)
{
_updatingLayout = true;
if (_contentWidth == 0)
_contentWidth = 50;
if (_contentHeight == 0)
_contentHeight = 30;
this.SetSize(_contentWidth, _contentHeight);
_content.SetScale(1, 1);
if (_content.texture != null)
_content.SetNativeSize();
_updatingLayout = false;
}
else
{
float sx = 1, sy = 1;
if (_fill != FillType.None)
{
sx = this.width / _contentSourceWidth;
sy = this.height / _contentSourceHeight;
if (sx != 1 || sy != 1)
{
if (_fill == FillType.ScaleMatchHeight)
sx = sy;
else if (_fill == FillType.ScaleMatchWidth)
sy = sx;
else if (_fill == FillType.Scale)
{
if (sx > sy)
sx = sy;
else
sy = sx;
}
_contentWidth = Mathf.FloorToInt(_contentSourceWidth * sx);
_contentHeight = Mathf.FloorToInt(_contentSourceHeight * sy);
}
}
if (_content.texture != null)
_content.size = new Vector2(_contentWidth, _contentHeight);
else
_content.SetScale(sx, sy);
float nx;
float ny;
if (_align == AlignType.Center)
nx = Mathf.FloorToInt((this.width - _contentWidth) / 2);
else if (_align == AlignType.Right)
nx = Mathf.FloorToInt(this.width - _contentWidth);
else
nx = 0;
if (_verticalAlign == VertAlignType.Middle)
ny = Mathf.FloorToInt((this.height - _contentHeight) / 2);
else if (_verticalAlign == VertAlignType.Bottom)
ny = Mathf.FloorToInt(this.height - _contentHeight);
else
ny = 0;
_content.SetXY(nx, ny);
}
}