private void UpdateProvider(string name, DataBindPair value, int layer) { var me = new BindingTreeElement(name, value) { depth = layer, id = datas.Count }; datas.Add(me); var keys = new List <string>(value.children.Keys); keys.Sort(); foreach (var key in keys) { var data = value.children[key]; UpdateProvider($"{name}.{key}", data, layer + 1); } }
private void UpdateList() { datas.Clear(); datas.Add(new BindingTreeElement("root") { depth = -1, id = -1 }); if (!UnityEditor.EditorApplication.isPlaying) { if (_saveData == null) { string[] path = AssetDatabase.FindAssets("t:StaticDataBindingKeysSO"); if (path.Length == 0) { return; } _saveData = AssetDatabase.LoadAssetAtPath <StaticDataBindingKeysSO>(AssetDatabase.GUIDToAssetPath(path[0])); } if (_saveData == null) { return; } var newList = new List <string>(_saveData.staticKeys); newList.Sort(); int i = 0; foreach (var item in newList) { var newItem = new BindingTreeElement(item); newItem.id = i++; newItem.depth = item.Split('.').Length - 1; datas.Add(newItem); } } else { if (DataBindingManager.Instance == null) { return; } var bindMgr = DataBindingManager.Instance; var keys = new List <string>(bindMgr.root.children.Keys); keys.Sort(); foreach (var key in keys) { var provider = bindMgr.root.children[key]; UpdateProvider(key, provider, 0); } } if (m_TreeView == null) { var headerState = BindingTreeView.CreateiColumnHeaderState(multiColumnTreeViewRect.width); if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } m_MultiColumnHeaderState = headerState; var multiColumnHeader = new MultiColumnHeader(headerState); multiColumnHeader.ResizeToFit(); var treeModel = new TreeModel <BindingTreeElement>(datas); m_TreeView = new BindingTreeView(m_TreeViewState, multiColumnHeader, treeModel); m_TreeView.ExpandAll(); } else { m_TreeView.treeModel.SetData(datas); m_TreeView.Reload(); } }