UnityEngine.UI.MaskUtilities.GetRectMasksForClip C# (CSharp) Method

GetRectMasksForClip() public static method

public static GetRectMasksForClip ( RectMask2D clipper, List masks ) : void
clipper RectMask2D
masks List
return void
        public static void GetRectMasksForClip(RectMask2D clipper, List<RectMask2D> masks)
        {
            masks.Clear();
            List<Canvas> results = ListPool<Canvas>.Get();
            List<RectMask2D> list2 = ListPool<RectMask2D>.Get();
            clipper.transform.GetComponentsInParent<RectMask2D>(false, list2);
            if (list2.Count > 0)
            {
                clipper.transform.GetComponentsInParent<Canvas>(false, results);
                for (int i = list2.Count - 1; i >= 0; i--)
                {
                    if (!list2[i].IsActive())
                    {
                        continue;
                    }
                    bool flag = true;
                    for (int j = results.Count - 1; j >= 0; j--)
                    {
                        if (!IsDescendantOrSelf(results[j].transform, list2[i].transform) && results[j].overrideSorting)
                        {
                            flag = false;
                            break;
                        }
                    }
                    if (flag)
                    {
                        masks.Add(list2[i]);
                    }
                }
            }
            ListPool<RectMask2D>.Release(list2);
            ListPool<Canvas>.Release(results);
        }

Usage Example

コード例 #1
0
        public virtual void PerformClipping()
        {
            if (m_ShouldRecalculateClipRects)
            {
                MaskUtilities.GetRectMasksForClip(this, m_Clippers);
                m_ShouldRecalculateClipRects = false;
            }
            bool validRect = true;
            Rect rect      = Clipping.FindCullAndClipWorldRect(m_Clippers, out validRect);
            bool flag      = rect != m_LastClipRectCanvasSpace;

            if (flag || m_ForceClip)
            {
                foreach (IClippable clipTarget in m_ClipTargets)
                {
                    clipTarget.SetClipRect(rect, validRect);
                }
                m_LastClipRectCanvasSpace = rect;
                m_LastValidClipRect       = validRect;
            }
            foreach (IClippable clipTarget2 in m_ClipTargets)
            {
                MaskableGraphic maskableGraphic = clipTarget2 as MaskableGraphic;
                if (!(maskableGraphic != null) || maskableGraphic.canvasRenderer.hasMoved || flag)
                {
                    clipTarget2.Cull(m_LastClipRectCanvasSpace, m_LastValidClipRect);
                }
            }
        }
All Usage Examples Of UnityEngine.UI.MaskUtilities::GetRectMasksForClip