예제 #1
0
 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]);
         }
     }
 }
예제 #2
0
 /// <summary>
 /// Ìí¼Óʼþ
 /// </summary>
 /// <param name="item"></param>
 private void OnTreeItemSelected(plyEdTreeItem <BloxEventDef> item)
 {
     if (item.data != null)
     {
         BloxEditorWindow.Instance.AddEvent(item.data);
         base.editorWindow.Close();
     }
 }
예제 #3
0
        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");
        }
예제 #4
0
        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();
        }
예제 #5
0
 private void OnMouseDragItem(plyEdTreeItem <BloxBlockDef> item)
 {
 }
예제 #6
0
 private void OnMouseHoverItem(plyEdTreeItem <BloxBlockDef> item)
 {
     BloxPropsPanel.Instance.SetShownDef((item != null && item.data != null) ? item.data : null);
 }