public static RectMask2D GetRectMaskForClippable(IClippable clippable)
{
List<RectMask2D> results = ListPool<RectMask2D>.Get();
List<Canvas> list2 = ListPool<Canvas>.Get();
RectMask2D maskd = null;
clippable.rectTransform.GetComponentsInParent<RectMask2D>(false, results);
if (results.Count > 0)
{
for (int i = 0; i < results.Count; i++)
{
maskd = results[i];
if (maskd.gameObject == clippable.gameObject)
{
maskd = null;
}
else if (!maskd.isActiveAndEnabled)
{
maskd = null;
}
else
{
clippable.rectTransform.GetComponentsInParent<Canvas>(false, list2);
for (int j = list2.Count - 1; j >= 0; j--)
{
if (!IsDescendantOrSelf(list2[j].transform, maskd.transform) && list2[j].overrideSorting)
{
return null;
}
}
return maskd;
}
}
}
ListPool<RectMask2D>.Release(results);
ListPool<Canvas>.Release(list2);
return maskd;
}