private static GenericMenu BuildPopupList(UnityEngine.Object target, TestityEventBase dummyEvent, SerializedProperty listener) { UnityEngine.Object @object = target; if (@object is Component) { @object = (target as Component).gameObject; } SerializedProperty serializedProperty = listener.FindPropertyRelative("m_MethodName"); GenericMenu genericMenu = new GenericMenu(); genericMenu.AddItem(new GUIContent("No Function"), string.IsNullOrEmpty(serializedProperty.stringValue), new GenericMenu.MenuFunction2(TesityEventDrawer.ClearEventFunction), new TesityEventDrawer.UnityEventFunction(listener, null, null, TestityPersistentListenerMode.EventDefined)); if (@object == null) { return(genericMenu); } genericMenu.AddSeparator(string.Empty); Type type = dummyEvent.GetType(); MethodInfo method = type.GetMethod("Invoke"); Type[] delegateArgumentsTypes = ( from x in method.GetParameters() select x.ParameterType).ToArray <Type>(); TesityEventDrawer.GeneratePopUpForType(genericMenu, @object, false, listener, delegateArgumentsTypes); if (@object is GameObject) { Component[] components = (@object as GameObject).GetComponents <Component>(); List <string> list = ( from c in components where c != null select c.GetType().Name into x group x by x into g where g.Count <string>() > 1 select g.Key).ToList <string>(); Component[] array = components; for (int i = 0; i < array.Length; i++) { Component component = array[i]; if (!(component == null)) { TesityEventDrawer.GeneratePopUpForType(genericMenu, component, list.Contains(component.GetType().Name), listener, delegateArgumentsTypes); } } } return(genericMenu); }