FairyGUI.Container.GetBounds C# (CSharp) Method

GetBounds() public method

public GetBounds ( DisplayObject targetSpace ) : Rect
targetSpace DisplayObject
return UnityEngine.Rect
        public override Rect GetBounds(DisplayObject targetSpace)
        {
            if (_clipRect != null)
                return TransformRect((Rect)_clipRect, targetSpace);

            int count = _children.Count;

            Rect rect;
            if (count == 0)
            {
                Vector2 v = TransformPoint(Vector2.zero, targetSpace);
                rect = Rect.MinMaxRect(v.x, v.y, 0, 0);
            }
            else if (count == 1)
            {
                rect = _children[0].GetBounds(targetSpace);
            }
            else
            {
                float minX = float.MaxValue, maxX = float.MinValue;
                float minY = float.MaxValue, maxY = float.MinValue;

                for (int i = 0; i < count; ++i)
                {
                    rect = _children[i].GetBounds(targetSpace);
                    minX = minX < rect.xMin ? minX : rect.xMin;
                    maxX = maxX > rect.xMax ? maxX : rect.xMax;
                    minY = minY < rect.yMin ? minY : rect.yMin;
                    maxY = maxY > rect.yMax ? maxY : rect.yMax;
                }

                rect = Rect.MinMaxRect(minX, minY, maxX, maxY);
            }

            return rect;
        }

Usage Example

Example #1
0
        private void CollectChildren(Container initiator, bool outlineChanged)
        {
            int count = _children.Count;

            for (int i = 0; i < count; i++)
            {
                DisplayObject child = _children[i];
                if (!child.visible)
                {
                    continue;
                }

                if (child is Container)
                {
                    Container container = (Container)child;
                    if (container._fBatchingRoot)
                    {
                        initiator._descendants.Add(container);
                        if (outlineChanged || container._outlineChanged)
                        {
                            Rect rect = container.GetBounds(initiator);
                            container._internal_bounds[0] = rect.xMin;
                            container._internal_bounds[1] = rect.yMin;
                            container._internal_bounds[2] = rect.xMax;
                            container._internal_bounds[3] = rect.yMax;
                        }
                        if (container._fBatchingRequested)
                        {
                            container.DoFairyBatching();
                        }
                    }
                    else
                    {
                        container.CollectChildren(initiator, outlineChanged || container._outlineChanged);
                    }
                }
                else if (child != initiator._mask)
                {
                    if (outlineChanged || child._outlineChanged)
                    {
                        Rect rect = child.GetBounds(initiator);
                        child._internal_bounds[0] = rect.xMin;
                        child._internal_bounds[1] = rect.yMin;
                        child._internal_bounds[2] = rect.xMax;
                        child._internal_bounds[3] = rect.yMax;
                    }
                    initiator._descendants.Add(child);
                }

                child._outlineChanged = false;
            }
        }
All Usage Examples Of FairyGUI.Container::GetBounds