private void SortChildren(plyEdTreeItem <BloxBlockDef> item) { if (item.hasChildren) { item.children.Sort(delegate(plyEdTreeItem <BloxBlockDef> a, plyEdTreeItem <BloxBlockDef> b) { bool flag = a.data == null || a.hasChildren; bool flag2 = b.data == null || b.hasChildren; if (flag & flag2) { return(a.label.CompareTo(b.label)); } if (flag) { return(1); } if (flag2) { return(-1); } if (a.data.order == b.data.order) { return(a.label.CompareTo(b.label)); } return(a.data.order.CompareTo(b.data.order)); }); for (int i = 0; i < item.children.Count; i++) { this.SortChildren(item.children[i]); } } }
/// <summary> /// Ìí¼Óʼþ /// </summary> /// <param name="item"></param> private void OnTreeItemSelected(plyEdTreeItem <BloxEventDef> item) { if (item.data != null) { BloxEditorWindow.Instance.AddEvent(item.data); base.editorWindow.Close(); } }
private IEnumerator LoadEventDefs() { Debug.Log("LoadEventDefs ", "BloxEditor.BloxEventsPopup", Color.green); BloxEd.Instance.LoadEventDefs(); while (BloxEd.Instance.EventDefsLoading) { yield return((object)null); } plyEdTreeItem <BloxEventDef> treeRoot = new plyEdTreeItem <BloxEventDef> { children = new List <plyEdTreeItem <BloxEventDef> >() }; int count = 0; int countBeforeYield = 20; List <BloxEventDef> .Enumerator enumerator = BloxEd.Instance.eventDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { BloxEventDef current = enumerator.Current; string[] array = current.ident.Split('/'); plyEdTreeItem <BloxEventDef> plyEdTreeItem = treeRoot; for (int i = 0; i < array.Length - 1; i++) { string text = array[i]; bool flag = false; if (plyEdTreeItem.children == null) { plyEdTreeItem.children = new List <plyEdTreeItem <BloxEventDef> >(); } foreach (plyEdTreeItem <BloxEventDef> child in plyEdTreeItem.children) { if (child.label == text) { flag = true; plyEdTreeItem = child; break; } } if (!flag) { plyEdTreeItem <BloxEventDef> plyEdTreeItem2 = new plyEdTreeItem <BloxEventDef> { label = text }; plyEdTreeItem.AddChild(plyEdTreeItem2); plyEdTreeItem = plyEdTreeItem2; if (plyEdTreeItem2.parent == treeRoot) { plyEdTreeItem2.icon = BloxEdGUI.Instance.folderIcon; } } } if (plyEdTreeItem.children == null) { plyEdTreeItem.children = new List <plyEdTreeItem <BloxEventDef> >(); } plyEdTreeItem.children.Add(new plyEdTreeItem <BloxEventDef> { icon = ((current.iconName == null) ? null : BloxEdGUI.Instance.namedIcons[current.iconName]), label = array[array.Length - 1], data = current }); count++; if (count >= countBeforeYield) { count = 0; yield return((object)null); } } } finally { ((IDisposable)enumerator).Dispose(); } enumerator = default(List <BloxEventDef> .Enumerator); this.treeView = new plyEdTreeView <BloxEventDef>(null, treeRoot, BloxEdGUI.Instance.folderIcon, "Events"); }
private IEnumerator Load() { plyVariablesEditor.LoadVarEds(); BloxEd.Instance.LoadBlockDefs(true); while (BloxEd.Instance.BlockDefsLoading) { yield return((object)null); } plyEdTreeItem <BloxBlockDef> treeRoot = new plyEdTreeItem <BloxBlockDef> { children = new List <plyEdTreeItem <BloxBlockDef> >() }; int count = 0; int countBeforeYield = 50; Dictionary <string, BloxBlockDef> .ValueCollection.Enumerator enumerator = BloxEd.Instance.blockDefs.Values.GetEnumerator(); try { while (enumerator.MoveNext()) { BloxBlockDef current = enumerator.Current; string[] array = current.ident.Split('/'); if (string.IsNullOrEmpty(current.name)) { current.name = array[array.Length - 1]; } if ((UnityEngine.Object)current.icon == (UnityEngine.Object)null) { if (current.ident.StartsWith("UnityEngine")) { current.icon = BloxEdGUI.Instance.unityIcon; } else { current.icon = BloxEdGUI.Instance.bloxIcon; } } plyEdTreeItem <BloxBlockDef> plyEdTreeItem = treeRoot; plyEdTreeItem <BloxBlockDef> plyEdTreeItem2; for (int i = 0; i < array.Length - 1; i++) { string text = array[i]; bool flag = false; if (plyEdTreeItem.children == null) { plyEdTreeItem.children = new List <plyEdTreeItem <BloxBlockDef> >(); } foreach (plyEdTreeItem <BloxBlockDef> child in plyEdTreeItem.children) { if (child.label == text) { flag = true; plyEdTreeItem = child; break; } } if (!flag) { plyEdTreeItem2 = new plyEdTreeItem <BloxBlockDef> { label = text, searchLabel = text, order = ((plyEdTreeItem == treeRoot) ? current.order : plyEdTreeItem.order) }; if (plyEdTreeItem2.searchLabel.Contains("(")) { plyEdTreeItem2.searchLabel = plyEdTreeItem2.searchLabel.Substring(0, plyEdTreeItem2.searchLabel.LastIndexOf('(')); } else if (plyEdTreeItem2.searchLabel.Contains(":")) { plyEdTreeItem2.searchLabel = plyEdTreeItem2.searchLabel.Substring(0, plyEdTreeItem2.searchLabel.LastIndexOf(':')); } if (plyEdTreeItem == treeRoot) { plyEdTreeItem2.icon = BloxEdGUI.Instance.folderIcon; } plyEdTreeItem.AddChild(plyEdTreeItem2); plyEdTreeItem = plyEdTreeItem2; } } if (plyEdTreeItem.children == null) { plyEdTreeItem.children = new List <plyEdTreeItem <BloxBlockDef> >(); } plyEdTreeItem.children.Add(plyEdTreeItem2 = new plyEdTreeItem <BloxBlockDef> { icon = current.icon, label = current.name, searchLabel = current.name, order = current.order, data = current }); if (plyEdTreeItem2.searchLabel.Contains("(")) { plyEdTreeItem2.searchLabel = plyEdTreeItem2.searchLabel.Substring(0, plyEdTreeItem2.searchLabel.LastIndexOf('(')); } else if (plyEdTreeItem2.searchLabel.Contains(":")) { plyEdTreeItem2.searchLabel = plyEdTreeItem2.searchLabel.Substring(0, plyEdTreeItem2.searchLabel.LastIndexOf(':')); } Texture2D texture2D = current.icon; if ((UnityEngine.Object)texture2D == (UnityEngine.Object)BloxEdGUI.Instance.bloxFadedIcon) { texture2D = AssetPreview.GetMiniTypeThumbnail(current.returnType); if ((UnityEngine.Object)texture2D == (UnityEngine.Object)null || texture2D.name == "DefaultAsset Icon") { texture2D = ((!current.returnType.FullName.StartsWith("UnityEngine")) ? BloxEdGUI.Instance.bloxIcon : BloxEdGUI.Instance.unityIcon); } } plyEdTreeItem.SetIconRecusriveUp(texture2D); count++; if (count >= countBeforeYield) { count = 0; yield return((object)null); } } } finally { ((IDisposable)enumerator).Dispose(); } enumerator = default(Dictionary <string, BloxBlockDef> .ValueCollection.Enumerator); this.treeView = new plyEdTreeView <BloxBlockDef>(null, treeRoot, BloxEdGUI.Instance.folderIcon, "Blocks"); this.treeView.Sort(); }
private void OnMouseDragItem(plyEdTreeItem <BloxBlockDef> item) { }
private void OnMouseHoverItem(plyEdTreeItem <BloxBlockDef> item) { BloxPropsPanel.Instance.SetShownDef((item != null && item.data != null) ? item.data : null); }