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); } }
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; }
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); }
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); }
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(); }