예제 #1
0
 public static RectMask2D GetRectMaskForClippable(IClippable transform)
 {
     Transform parent = transform.rectTransform.parent;
     List<Component> results = ListPool<Component>.Get();
     while (parent != null)
     {
         parent.GetComponents(typeof(RectMask2D), results);
         for (int i = 0; i < results.Count; i++)
         {
             if ((results[i] != null) && ((RectMask2D) results[i]).IsActive())
             {
                 RectMask2D maskd = (RectMask2D) results[i];
                 ListPool<Component>.Release(results);
                 return maskd;
             }
         }
         if (parent.GetComponent<Canvas>() != null)
         {
             break;
         }
         parent = parent.parent;
     }
     ListPool<Component>.Release(results);
     return null;
 }
예제 #2
0
        /// <summary>
        ///
        /// <para>
        /// Find the correct RectMask2D for a given IClippable.
        /// </para>
        ///
        /// </summary>
        /// <param name="transform">Clippable to search from.</param>
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            Transform        parent = transform.rectTransform.parent;
            List <Component> list   = ListPool <Component> .Get();

            for (; (Object)parent != (Object)null; parent = parent.parent)
            {
                parent.GetComponents(typeof(RectMask2D), list);
                for (int index = 0; index < list.Count; ++index)
                {
                    if ((Object)list[index] != (Object)null && ((UIBehaviour)list[index]).IsActive())
                    {
                        RectMask2D rectMask2D = (RectMask2D)list[index];
                        ListPool <Component> .Release(list);

                        return(rectMask2D);
                    }
                }
                if ((bool)((Object)parent.GetComponent <Canvas>()))
                {
                    break;
                }
            }
            ListPool <Component> .Release(list);

            return((RectMask2D)null);
        }
예제 #3
0
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            var t          = transform.rectTransform.parent;
            var components = ListPool <Component> .Get();

            while (t != null)
            {
                t.GetComponents(typeof(RectMask2D), components);
                for (var i = 0; i < components.Count; ++i)
                {
                    if (components[i] != null && ((RectMask2D)components[i]).IsActive())
                    {
                        var result = (RectMask2D)components[i];
                        ListPool <Component> .Release(components);

                        return(result);
                    }
                }

                var canvas = t.GetComponent <Canvas>();
                if (canvas)
                {
                    break;
                }
                t = t.parent;
            }
            ListPool <Component> .Release(components);

            return(null);
        }
예제 #4
0
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            Transform        parent = transform.rectTransform.parent;
            List <Component> list   = ListPool <Component> .Get();

            while (parent != null)
            {
                parent.GetComponents(typeof(RectMask2D), list);
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i] != null && ((RectMask2D)list[i]).IsActive())
                    {
                        RectMask2D result = (RectMask2D)list[i];
                        ListPool <Component> .Release(list);

                        return(result);
                    }
                }
                Canvas component = parent.GetComponent <Canvas>();
                if ((bool)component)
                {
                    break;
                }
                parent = parent.parent;
            }
            ListPool <Component> .Release(list);

            return(null);
        }
예제 #5
0
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            Transform        parent  = transform.rectTransform.parent;
            List <Component> results = ListPool <Component> .Get();

            while (parent != null)
            {
                parent.GetComponents(typeof(RectMask2D), results);
                for (int i = 0; i < results.Count; i++)
                {
                    if ((results[i] != null) && ((RectMask2D)results[i]).IsActive())
                    {
                        RectMask2D maskd = (RectMask2D)results[i];
                        ListPool <Component> .Release(results);

                        return(maskd);
                    }
                }
                if (parent.GetComponent <Canvas>() != null)
                {
                    break;
                }
                parent = parent.parent;
            }
            ListPool <Component> .Release(results);

            return(null);
        }
예제 #6
0
        static RectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            List <RectMask2D> rectMaskComponents = ListPool <RectMask2D> .Get();

            RectMask2D componentToReturn = null;

            clippable.rectTransform.GetComponentsInParent(false, rectMaskComponents);

            if (rectMaskComponents.Count > 0)
            {
                for (int rmi = 0; rmi < rectMaskComponents.Count; rmi++)
                {
                    componentToReturn = rectMaskComponents[rmi];
                    if (componentToReturn.gameObject == clippable.gameObject)
                    {
                        componentToReturn = null;
                        continue;
                    }
                    if (!componentToReturn.isActiveAndEnabled)
                    {
                        componentToReturn = null;
                        continue;
                    }
                    break;
                }
            }

            ListPool <RectMask2D> .Release(rectMaskComponents);

            return(componentToReturn);
        }
예제 #7
0
 public void RemoveClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         clippable.SetClipRect(new Rect(), false);
         this.m_ClipTargets.Remove(clippable);
     }
 }
예제 #8
0
 public void RemoveClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         clippable.SetClipRect(default(Rect), validRect: false);
         m_ClipTargets.Remove(clippable);
     }
 }
예제 #9
0
    static int RemoveClippable(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 2);
        RectMask2D obj  = (RectMask2D)LuaScriptMgr.GetUnityObjectSelf(L, 1, "RectMask2D");
        IClippable arg0 = (IClippable)LuaScriptMgr.GetNetObject(L, 2, typeof(IClippable));

        obj.RemoveClippable(arg0);
        return(0);
    }
        public AutoClip(IClippable parent)
        {
            this.parent = parent;

            children = new List<UIElement>();
            geometry = new RectangleGeometry();
            geometry.Rect = new Rect(0, 0, parent.Width, parent.Height);
            parent.Clip = geometry;
            parent.OnPropertyChanged += new EventHandler<DependencyArgs>(OnPropertyChanged);
        }
예제 #11
0
 public void RemoveClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         m_ShouldRecalculateClipRects = true;
         clippable.SetClipRect(default(Rect), validRect: false);
         m_ClipTargets.Remove(clippable);
         m_ForceClip = true;
     }
 }
예제 #12
0
 /// <summary>
 /// <para>Remove an IClippable from being tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void RemoveClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         this.m_ShouldRecalculateClipRects = true;
         clippable.SetClipRect(new Rect(), false);
         this.m_ClipTargets.Remove(clippable);
         this.m_ForceClip = true;
     }
 }
예제 #13
0
        public void RemoveClippable(IClippable clippable)
        {
            if (clippable == null)
            {
                return;
            }

            clippable.SetClipRect(new Rect(), false);
            m_ClipTargets.Remove(clippable);
        }
예제 #14
0
 /// <summary>
 ///   <para>Add a [IClippable]] to be tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void AddClippable(IClippable clippable)
 {
     if (clippable == null)
     {
         return;
     }
     if (!this.m_ClipTargets.Contains(clippable))
     {
         this.m_ClipTargets.Add(clippable);
     }
     this.m_ForceClip = true;
 }
예제 #15
0
 /// <summary>
 /// <para>Add a [IClippable]] to be tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void AddClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         this.m_ShouldRecalculateClipRects = true;
         if (!this.m_ClipTargets.Contains(clippable))
         {
             this.m_ClipTargets.Add(clippable);
         }
         this.m_ForceClip = true;
     }
 }
예제 #16
0
 public void AddClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         if (!this.m_ClipTargets.Contains(clippable))
         {
             this.m_ClipTargets.Add(clippable);
         }
         clippable.SetClipRect(this.m_LastClipRectCanvasSpace, this.m_LastClipRectValid);
         clippable.Cull(this.m_LastClipRectCanvasSpace, this.m_LastClipRectValid);
     }
 }
예제 #17
0
 public void AddClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         if (!m_ClipTargets.Contains(clippable))
         {
             m_ClipTargets.Add(clippable);
         }
         clippable.SetClipRect(m_LastClipRectCanvasSpace, m_LastClipRectValid);
         clippable.Cull(m_LastClipRectCanvasSpace, m_LastClipRectValid);
     }
 }
예제 #18
0
 /// <summary>
 /// <para>Add a [IClippable]] to be tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void AddClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         this.m_ShouldRecalculateClipRects = true;
         if (!this.m_ClipTargets.Contains(clippable))
         {
             this.m_ClipTargets.Add(clippable);
         }
         this.m_ForceClip = true;
     }
 }
예제 #19
0
        /// <summary>
        /// Find the correct RectMask2D for a given IClippable.
        /// </summary>
        /// <param name="clippable">Clippable to search from.</param>
        /// <returns>The Correct RectMask2D</returns>
        /// 18/6 2020 Graphic学习
        /// 查找当前元素父级身上的RectMask2D组件,并返回
        public static RectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            List <RectMask2D> rectMaskComponents = ListPool <RectMask2D> .Get();

            List <Canvas> canvasComponents = ListPool <Canvas> .Get();

            RectMask2D componentToReturn = null;

            //查找当前元素以及父级元素身上的所有RectMask2D组件
            //包括当前activeSelf=false以及enabled=false的元素
            clippable.rectTransform.GetComponentsInParent(false, rectMaskComponents);

            if (rectMaskComponents.Count > 0)
            {
                for (int rmi = 0; rmi < rectMaskComponents.Count; rmi++)
                {
                    componentToReturn = rectMaskComponents[rmi];
                    if (componentToReturn.gameObject == clippable.gameObject)
                    {
                        componentToReturn = null;
                        continue;
                    }

                    if (!componentToReturn.isActiveAndEnabled)
                    {
                        componentToReturn = null;
                        continue;
                    }

                    //查找当前元素所在的Canvas元素
                    clippable.rectTransform.GetComponentsInParent(false, canvasComponents);
                    for (int i = canvasComponents.Count - 1; i >= 0; i--)
                    {
                        //如果当前元素不是这个Canvas或者Canvas的后裔的话,就把componentToReturn置空
                        if (!IsDescendantOrSelf(canvasComponents[i].transform, componentToReturn.transform) &&
                            canvasComponents[i].overrideSorting)
                        {
                            componentToReturn = null;
                            break;
                        }
                    }

                    break;
                }
            }

            ListPool <RectMask2D> .Release(rectMaskComponents);

            ListPool <Canvas> .Release(canvasComponents);

            return(componentToReturn);
        }
예제 #20
0
 /// <summary>
 ///
 /// <para>
 /// Add a [IClippable]] to be tracked by the mask.
 /// </para>
 ///
 /// </summary>
 /// <param name="clippable"/>
 public void AddClippable(IClippable clippable)
 {
     if (clippable == null)
     {
         return;
     }
     if (!this.m_ClipTargets.Contains(clippable))
     {
         this.m_ClipTargets.Add(clippable);
     }
     clippable.SetClipRect(this.m_LastClipRectCanvasSpace, this.m_LastClipRectValid);
     clippable.Cull(this.m_LastClipRectCanvasSpace, this.m_LastClipRectValid);
 }
예제 #21
0
        public void RemoveClippable(IClippable clippable)
        {
            if (clippable == null)
            {
                return;
            }
            m_ShouldRecalculateClipRects = true;

            clippable.SetClipRect(new Rect(), false);
            m_ClipTargets.Remove(clippable);

            m_ForceClip = false;
        }
예제 #22
0
        public void AddClippable(IClippable clippable)
        {
            if (clippable == null)
            {
                return;
            }

            m_ShouldRecalculateClipRects = true;
            MaskableGraphic maskable = clippable as MaskableGraphic;

            m_MaskableTargets.Add(maskable);
            m_ForceClip = true;
        }
예제 #23
0
        /// <summary>
        /// Add a IClippable to be tracked by the mask.
        /// </summary>
        /// <param name="clippable">Add the clippable object for this mask</param>
        public void AddClippable(IClippable clippable)
        {
            if (clippable == null)
            {
                return;
            }
            m_ShouldRecalculateClipRects = true;
            if (!m_ClipTargets.Contains(clippable))
            {
                m_ClipTargets.Add(clippable);
            }

            m_ForceClip = true;
        }
예제 #24
0
        public void RemoveClippable(IClippable clippable)
        {
            if (clippable == null)
            {
                return;
            }

            m_ShouldRecalculateClipRects = true;
            clippable.SetClipRect(new Rect(), false);
            MaskableGraphic maskable = clippable as MaskableGraphic;

            m_MaskableTargets.Remove(maskable);
            m_ForceClip = true;
        }
예제 #25
0
        /// <summary>
        ///   <para>Find the correct RectMask2D for a given IClippable.</para>
        /// </summary>
        /// <param name="transform">Clippable to search from.</param>
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            List <RectMask2D> rectMask2DList = ListPool <RectMask2D> .Get();

            RectMask2D rectMask2D = (RectMask2D)null;

            transform.rectTransform.GetComponentsInParent <RectMask2D>(false, rectMask2DList);
            if (rectMask2DList.Count > 0)
            {
                rectMask2D = rectMask2DList[0];
            }
            ListPool <RectMask2D> .Release(rectMask2DList);

            return(rectMask2D);
        }
예제 #26
0
        public static RectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            List <RectMask2D> list = ListPool <RectMask2D> .Get();

            List <Canvas> list2 = ListPool <Canvas> .Get();

            RectMask2D rectMask2D = null;

            clippable.rectTransform.GetComponentsInParent <RectMask2D>(false, list);
            RectMask2D result;

            if (list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    rectMask2D = list[i];
                    if (rectMask2D.gameObject == clippable.gameObject)
                    {
                        rectMask2D = null;
                    }
                    else
                    {
                        if (rectMask2D.isActiveAndEnabled)
                        {
                            clippable.rectTransform.GetComponentsInParent <Canvas>(false, list2);
                            for (int j = list2.Count - 1; j >= 0; j--)
                            {
                                if (!MaskUtilities.IsDescendantOrSelf(list2[j].transform, rectMask2D.transform) && list2[j].overrideSorting)
                                {
                                    rectMask2D = null;
                                    break;
                                }
                            }
                            result = rectMask2D;
                            return(result);
                        }
                        rectMask2D = null;
                    }
                }
            }
            ListPool <RectMask2D> .Release(list);

            ListPool <Canvas> .Release(list2);

            result = rectMask2D;
            return(result);
        }
예제 #27
0
    public static int RecalculateClipping(IntPtr l)
    {
        int result;

        try
        {
            IClippable clippable = (IClippable)LuaObject.checkSelf(l);
            clippable.RecalculateClipping();
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
예제 #28
0
        /// <summary>
        /// Find the correct RectMask2D for a given IClippable.
        ///
        /// 获取传入的IClippable所对应的RectMask2D对象,
        /// 首先会获取所有的父节点上的RectMask2D对象,然后根据一些条件进行判断,直到获取到正确的RectMask2D对象并将其返回
        /// </summary>
        /// <param name="clippable">Clippable to search from.</param>
        /// <returns>The Correct RectMask2D</returns>
        public static RectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            List <RectMask2D> rectMaskComponents = ListPool <RectMask2D> .Get();

            List <Canvas> canvasComponents = ListPool <Canvas> .Get();

            RectMask2D componentToReturn = null;

            clippable.gameObject.GetComponentsInParent(false, rectMaskComponents);

            if (rectMaskComponents.Count > 0)
            {
                for (int rmi = 0; rmi < rectMaskComponents.Count; rmi++)
                {
                    componentToReturn = rectMaskComponents[rmi];
                    if (componentToReturn.gameObject == clippable.gameObject)
                    {
                        componentToReturn = null;
                        continue;
                    }
                    if (!componentToReturn.isActiveAndEnabled)
                    {
                        componentToReturn = null;
                        continue;
                    }
                    clippable.gameObject.GetComponentsInParent(false, canvasComponents);
                    for (int i = canvasComponents.Count - 1; i >= 0; i--)
                    {
                        // IsDescendantOrSelf --> 判断传入的两个Transform对象,返回后者是否是前者的子节点(后代结点)或者两个节点是同一个节点
                        if (!IsDescendantOrSelf(canvasComponents[i].transform, componentToReturn.transform) &&
                            canvasComponents[i].overrideSorting)
                        {
                            componentToReturn = null;
                            break;
                        }
                    }
                    break;
                }
            }

            ListPool <RectMask2D> .Release(rectMaskComponents);

            ListPool <Canvas> .Release(canvasComponents);

            return(componentToReturn);
        }
예제 #29
0
        public static RectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            List <RectMask2D> rectMaskComponents = ListPool <RectMask2D> .Get();

            List <Canvas> canvasComponents = ListPool <Canvas> .Get();

            RectMask2D componentToReturn = null;

            clippable.rectTransform.GetComponentsInParent(false, rectMaskComponents);
            if (rectMaskComponents.Count > 0)
            {
                for (int i = 0; i < rectMaskComponents.Count; i++)
                {
                    componentToReturn = rectMaskComponents[i];
                    if (componentToReturn.gameObject == clippable.gameObject)
                    {
                        componentToReturn = null;
                        continue;
                    }

                    if (!componentToReturn.isActiveAndEnabled)
                    {
                        componentToReturn = null;
                        continue;
                    }

                    clippable.rectTransform.GetComponentsInParent(false, canvasComponents);
                    for (int j = 0; j < canvasComponents.Count; j++)
                    {
                        if (!IsDescendantOfSelf(canvasComponents[j].transform, componentToReturn.transform) &&
                            canvasComponents[j].overrideSorting)
                        {
                            componentToReturn = null;
                            break;
                        }
                    }

                    return(componentToReturn);
                }
            }
            ListPool <RectMask2D> .Release(rectMaskComponents);

            ListPool <Canvas> .Release(canvasComponents);

            return(componentToReturn);
        }
예제 #30
0
    public static int get_gameObject(IntPtr l)
    {
        int result;

        try
        {
            IClippable clippable = (IClippable)LuaObject.checkSelf(l);
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, clippable.gameObject);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
예제 #31
0
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            List <RectMask2D> rectMaskComponents = ListPool <RectMask2D> .Get();

            RectMask2D componentToReturn = null;

            transform.rectTransform.GetComponentsInParent <RectMask2D>(false, rectMaskComponents);

            if (rectMaskComponents.Count > 0)
            {
                componentToReturn = rectMaskComponents[0];
            }

            ListPool <RectMask2D> .Release(rectMaskComponents);

            return(componentToReturn);
        }
예제 #32
0
        /// <summary>
        /// <para>Notify all IClippables under the given component that they need to recalculate clipping.</para>
        /// </summary>
        /// <param name="mask"></param>
        public static void Notify2DMaskStateChanged(Component mask)
        {
            List <Component> results = ListPool <Component> .Get();

            mask.GetComponentsInChildren <Component>(results);
            for (int i = 0; i < results.Count; i++)
            {
                if ((results[i] != null) && (results[i].gameObject != mask.gameObject))
                {
                    IClippable clippable = results[i] as IClippable;
                    if (clippable != null)
                    {
                        clippable.RecalculateClipping();
                    }
                }
            }
            ListPool <Component> .Release(results);
        }
예제 #33
0
        /// <summary>
        ///
        /// <para>
        /// Notify all IClippables under the given component that they need to recalculate clipping.
        /// </para>
        ///
        /// </summary>
        /// <param name="mask"/>
        public static void Notify2DMaskStateChanged(Component mask)
        {
            List <Component> list = ListPool <Component> .Get();

            mask.GetComponentsInChildren <Component>(list);
            for (int index = 0; index < list.Count; ++index)
            {
                if (!((Object)list[index] == (Object)null) && !((Object)list[index].gameObject == (Object)mask.gameObject))
                {
                    IClippable clippable = list[index] as IClippable;
                    if (clippable != null)
                    {
                        clippable.RecalculateClipping();
                    }
                }
            }
            ListPool <Component> .Release(list);
        }
예제 #34
0
        public static NewRectMask2D GetRectMaskForClippable(IClippable clippable)
        {
            var rectMaskComponents = NewListPool <NewRectMask2D> .Get();

            var canvasComponents = NewListPool <Canvas> .Get();

            NewRectMask2D targetMask = null;

            clippable.rectTransform.GetComponentsInParent(false, rectMaskComponents);

            for (int i = 0; i < rectMaskComponents.Count; i++)
            {
                targetMask = rectMaskComponents[i];

                if (targetMask.gameObject == clippable.gameObject)
                {
                    continue;
                }
                if (!targetMask.isActiveAndEnabled)
                {
                    continue;
                }

                clippable.rectTransform.GetComponentsInParent(false, canvasComponents);

                for (int j = 0; j < canvasComponents.Count; j++)
                {
                    if (canvasComponents[j].overrideSorting &&
                        !IsDesendantOrSelf(canvasComponents[j].transform, targetMask.transform))
                    {
                        targetMask = null;
                        break;
                    }
                }

                return(targetMask);
            }

            NewListPool <NewRectMask2D> .Release(rectMaskComponents);

            NewListPool <Canvas> .Release(canvasComponents);

            return(targetMask);
        }
예제 #35
0
 /// <summary>
 /// <para>Find the correct RectMask2D for a given IClippable.</para>
 /// </summary>
 /// <param name="transform">Clippable to search from.</param>
 /// <param name="clippable"></param>
 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;
 }
예제 #36
0
        public static RectMask2D GetRectMaskForClippable(IClippable transform)
        {
            var t = transform.rectTransform.parent;
            var components = ListPool<Component>.Get();
            while (t != null)
            {
                t.GetComponents(typeof(RectMask2D), components);
                for (var i = 0; i < components.Count; ++i)
                {
                    if (components[i] != null && ((RectMask2D)components[i]).IsActive())
                    {
                        var result = (RectMask2D)components[i];
                        ListPool<Component>.Release(components);
                        return result;
                    }
                }

                var canvas = t.GetComponent<Canvas>();
                if (canvas)
                    break;
                t = t.parent;
            }
            ListPool<Component>.Release(components);
            return null;
        }
예제 #37
0
        public void AddClippable(IClippable clippable)
        {
            if (clippable == null)
                return;

            if (!m_ClipTargets.Contains(clippable))
                m_ClipTargets.Add(clippable);

            clippable.SetClipRect(m_LastClipRectCanvasSpace, m_LastClipRectValid);
            clippable.Cull(m_LastClipRectCanvasSpace, m_LastClipRectValid);
        }
예제 #38
0
 /// <summary>
 /// 
 /// <para>
 /// Remove an IClippable from being tracked by the mask.
 /// </para>
 /// 
 /// </summary>
 /// <param name="clippable"/>
 public void RemoveClippable(IClippable clippable)
 {
   if (clippable == null)
     return;
   clippable.SetClipRect(new Rect(), false);
   this.m_ClipTargets.Remove(clippable);
 }
예제 #39
0
 /// <summary>
 ///   <para>Find the correct RectMask2D for a given IClippable.</para>
 /// </summary>
 /// <param name="transform">Clippable to search from.</param>
 public static RectMask2D GetRectMaskForClippable(IClippable transform)
 {
   List<RectMask2D> rectMask2DList = ListPool<RectMask2D>.Get();
   RectMask2D rectMask2D = (RectMask2D) null;
   transform.rectTransform.GetComponentsInParent<RectMask2D>(false, rectMask2DList);
   if (rectMask2DList.Count > 0)
     rectMask2D = rectMask2DList[0];
   ListPool<RectMask2D>.Release(rectMask2DList);
   return rectMask2D;
 }
예제 #40
0
 /// <summary>
 /// <para>Remove an IClippable from being tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void RemoveClippable(IClippable clippable)
 {
     if (clippable != null)
     {
         this.m_ShouldRecalculateClipRects = true;
         clippable.SetClipRect(new Rect(), false);
         this.m_ClipTargets.Remove(clippable);
         this.m_ForceClip = true;
     }
 }
예제 #41
0
 /// <summary>
 /// 
 /// <para>
 /// Find the correct RectMask2D for a given IClippable.
 /// </para>
 /// 
 /// </summary>
 /// <param name="transform">Clippable to search from.</param>
 public static RectMask2D GetRectMaskForClippable(IClippable transform)
 {
   Transform parent = transform.rectTransform.parent;
   List<Component> list = ListPool<Component>.Get();
   for (; (Object) parent != (Object) null; parent = parent.parent)
   {
     parent.GetComponents(typeof (RectMask2D), list);
     for (int index = 0; index < list.Count; ++index)
     {
       if ((Object) list[index] != (Object) null && ((UIBehaviour) list[index]).IsActive())
       {
         RectMask2D rectMask2D = (RectMask2D) list[index];
         ListPool<Component>.Release(list);
         return rectMask2D;
       }
     }
     if ((bool) ((Object) parent.GetComponent<Canvas>()))
       break;
   }
   ListPool<Component>.Release(list);
   return (RectMask2D) null;
 }
예제 #42
0
 /// <summary>
 ///   <para>Add a [IClippable]] to be tracked by the mask.</para>
 /// </summary>
 /// <param name="clippable"></param>
 public void AddClippable(IClippable clippable)
 {
   if (clippable == null)
     return;
   if (!this.m_ClipTargets.Contains(clippable))
     this.m_ClipTargets.Add(clippable);
   this.m_ForceClip = true;
 }