示例#1
0
        public void Prepare(bool force = false)
        {
            if (m_Prepare && !force)
            {
                return;
            }
            m_Prepare = true;

            using (var elementsScope = ViewUtil.UseElementList())
            {
                var elements = elementsScope.List;
                GetComponentsInChildren(true, elements);
                if (m_LightBinds != null)
                {
                    foreach (var lightBind in m_LightBinds)
                    {
                        elements.Add(lightBind.Resolve());
                    }
                }
                using (var viewListScope = ViewUtil.UseViewList())
                {
                    var viewList = viewListScope.List;
                    GetComponentsInChildren(true, viewList);
                    foreach (var view in viewList)
                    {
                        var viewComponent = view as View;
                        if (viewComponent == this)
                        {
                            continue;
                        }
                        view.Prepare();
                        using (var childElementsScope = ViewUtil.UseElementList())
                        {
                            var childElements = childElementsScope.List;
                            view.GetElements(childElements);
                            foreach (var remove in childElements)
                            {
                                elements.Remove(remove);
                            }
                        }
                    }
                }
                m_Elements = elements.ToArray();
            }
        }