Пример #1
0
        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);
        }