static int GetChildCount(List <GenericMenu.MenuItem> items, GenericMenu.MenuItem item) { if (!item.separator) { return(0); } string level = GetSubmenuPath(item); int count = 0; for (int i = 0, c = items.Count; i < c; ++i) { if (items[i].separator) { continue; } var dir = GetSubmenuPath(items[i]); if (dir.StartsWith(level)) { count++; } } return(count); }
private void CatchMenu(object userData, string[] options, int selected) { GenericMenu.MenuItem menuItem = (GenericMenu.MenuItem) this.menuItems[selected]; if (menuItem.func2 != null) { menuItem.func2(menuItem.userData); } else if (menuItem.func != null) { menuItem.func(); } }
public void DropDown(Rect position) { string[] array = new string[this.menuItems.Count]; bool[] array2 = new bool[this.menuItems.Count]; ArrayList arrayList = new ArrayList(); bool[] array3 = new bool[this.menuItems.Count]; for (int i = 0; i < this.menuItems.Count; i++) { GenericMenu.MenuItem menuItem = (GenericMenu.MenuItem) this.menuItems[i]; array[i] = menuItem.content.text; array2[i] = (menuItem.func != null || menuItem.func2 != null); array3[i] = menuItem.separator; if (menuItem.on) { arrayList.Add(i); } } EditorUtility.DisplayCustomMenuWithSeparators(position, array, array2, array3, (int[])arrayList.ToArray(typeof(int)), new EditorUtility.SelectMenuItemFunction(this.CatchMenu), null, true); }
/// <summary> /// <para>Show the menu at the given screen rect.</para> /// </summary> /// <param name="position">The position at which to show the menu.</param> public void DropDown(Rect position) { string[] options = new string[this.menuItems.Count]; bool[] enabled = new bool[this.menuItems.Count]; ArrayList arrayList = new ArrayList(); bool[] separator = new bool[this.menuItems.Count]; for (int index = 0; index < this.menuItems.Count; ++index) { GenericMenu.MenuItem menuItem = (GenericMenu.MenuItem) this.menuItems[index]; options[index] = menuItem.content.text; enabled[index] = menuItem.func != null || menuItem.func2 != null; separator[index] = menuItem.separator; if (menuItem.on) { arrayList.Add((object)index); } } EditorUtility.DisplayCustomMenuWithSeparators(position, options, enabled, separator, (int[])arrayList.ToArray(typeof(int)), new EditorUtility.SelectMenuItemFunction(this.CatchMenu), (object)null); }
static string GetSubmenuPath(GenericMenu.MenuItem item) { int index = item.content.text.LastIndexOf('/'); return(item.content.text.Substring(0, index + 1)); }