public Rect TransformRect(Rect rect, DisplayObject targetSpace)
{
if (targetSpace == this)
return rect;
if (targetSpace == parent && _rotation.z == 0) // optimization
{
Vector3 vec = cachedTransform.localScale;
return new Rect((this.x + rect.x) * vec.x, (this.y + rect.y) * vec.y,
rect.width * vec.x, rect.height * vec.y);
}
else
{
Rect result = Rect.MinMaxRect(float.MaxValue, float.MaxValue, float.MinValue, float.MinValue);
TransformRectPoint(rect.xMin, rect.yMin, targetSpace, ref result);
TransformRectPoint(rect.xMax, rect.yMin, targetSpace, ref result);
TransformRectPoint(rect.xMin, rect.yMax, targetSpace, ref result);
TransformRectPoint(rect.xMax, rect.yMax, targetSpace, ref result);
return result;
}
}