private void OnToggleSwitch(bool isOn)
        {
            if (!settingToggle && isOn && onSelection != null)
            {
                onSelection(new List <string> {
                    node.name
                });
            }

            if (childContent && rule.childCloseAble)
            {
                childContent.gameObject.SetActive(isOn);
            }

            if (title)
            {
                title.color = isOn ? rule.fontColor_mask : rule.fontColor_normal;
            }

            if (creater != null && creater.Group != null && creater.Group.AnyTogglesOn())
            {
                TreeSelectItem item = creater.Group.ActiveToggles().First().GetComponentInParent <TreeSelectItem>();
                item.SetToggleForce(isOn);
            }
        }
예제 #2
0
 public TreeNodeCreater(System.Func <int, TreeSelectRule> ruleGetter, int deepth, Transform parent, TreeSelectItem prefab)
 {
     this.deepth     = deepth;
     this.ruleGetter = ruleGetter;
     this.parent     = parent;
     this.prefab     = prefab;
     pool            = UIFacade.PanelPool;
 }
예제 #3
0
        public TreeSelectItem[] CreateTreeSelectItems(GridLayoutGroup.Axis axis, TreeNode[] childNodes)
        {
            var rule = ruleGetter(deepth);

            created = new TreeSelectItem[childNodes.Length];
            for (int i = 0; i < childNodes.Length; i++)
            {
                var            item = pool.GetPoolObject(prefab.gameObject, parent, false);
                TreeSelectItem tsi  = item.GetComponent <TreeSelectItem>();
                tsi.InitTreeSelecter(axis, deepth + 1, ruleGetter, childNodes[i], prefab);
                created[i] = tsi;
            }
            return(created);
        }
예제 #4
0
        public TreeSelectItem[] CreateTreeSelectItems(TreeNode[] childNodes)
        {
            var prefab = option.prefab;
            var rule   = option.ruleGetter(deepth + 1);

            if (rule.makeGroup)
            {
                group = InitGroup();
            }

            created = new TreeSelectItem[childNodes.Length];
            for (int i = 0; i < childNodes.Length; i++)
            {
                var            item = pool.GetPoolObject(prefab.gameObject, parent, false);
                TreeSelectItem tsi  = item.GetComponent <TreeSelectItem>();
                tsi.InitTreeSelecter(deepth + 1, childNodes[i], option);
                if (rule.makeGroup)
                {
                    tsi.SetGroup(group);
                }
                created[i] = tsi;
            }
            return(created);
        }
예제 #5
0
        public void InitTreeSelecter(GridLayoutGroup.Axis axis, int deepth, Func <int, TreeSelectRule> ruleget, TreeNode node, TreeSelectItem prefab)
        {
            this.deepth = deepth;
            this.node   = node;
            this.rule   = ruleget(deepth);

            if (node.childern != null && node.childern.Count > 0)
            {
                InitContent(axis);
                creater = new TreeNodeCreater(ruleget, deepth, childContent, prefab);
                var items = creater.CreateTreeSelectItems(axis, node.childern.ToArray());
                foreach (var item in items)
                {
                    item.onSelection = OnSelection;
                }
            }

            ChargeRule();
        }