UnityEngine.UI.Clipping.FindCullAndClipWorldRect C# (CSharp) Method

FindCullAndClipWorldRect() public static method

public static FindCullAndClipWorldRect ( List rectMaskParents, bool &validRect ) : Rect
rectMaskParents List
validRect bool
return UnityEngine.Rect
        public static Rect FindCullAndClipWorldRect(List<RectMask2D> rectMaskParents, out bool validRect)
        {
            if (rectMaskParents.Count == 0)
            {
                validRect = false;
                return new Rect();
            }
            Rect canvasRect = rectMaskParents[0].canvasRect;
            for (int i = 0; i < rectMaskParents.Count; i++)
            {
                canvasRect = RectIntersect(canvasRect, rectMaskParents[i].canvasRect);
            }
            if ((canvasRect.width <= 0f) || (canvasRect.height <= 0f))
            {
                validRect = false;
                return new Rect();
            }
            Vector3 vector = new Vector3(canvasRect.x, canvasRect.y, 0f);
            Vector3 vector2 = new Vector3(canvasRect.x + canvasRect.width, canvasRect.y + canvasRect.height, 0f);
            validRect = true;
            return new Rect(vector.x, vector.y, vector2.x - vector.x, vector2.y - vector.y);
        }

Usage Example

コード例 #1
0
        /// <summary>
        /// 进行裁剪
        /// </summary>
        public virtual void PerformClipping()
        {
            // if the parents are changed
            // or something similar we
            // do a recalculate here
            //重新计算物体的裁剪组件
            if (m_ShouldRecalculateClipRects)
            {
                MaskUtilities.GetRectMasksForClip(this, m_Clippers);
                m_ShouldRecalculateClipRects = false;
            }

            // get the compound rects from
            // the clippers that are valid
            bool validRect = true;
            Rect clipRect  = Clipping.FindCullAndClipWorldRect(m_Clippers, out validRect);

            if (clipRect != m_LastClipRectCanvasSpace)
            {
                for (int i = 0; i < m_ClipTargets.Count; ++i)
                {
                    m_ClipTargets[i].SetClipRect(clipRect, validRect);
                }

                m_LastClipRectCanvasSpace = clipRect;
                m_LastClipRectValid       = validRect;
            }

            for (int i = 0; i < m_ClipTargets.Count; ++i)
            {
                m_ClipTargets[i].Cull(m_LastClipRectCanvasSpace, m_LastClipRectValid);
            }
        }
All Usage Examples Of UnityEngine.UI.Clipping::FindCullAndClipWorldRect