Ejemplo n.º 1
0
        private static void AddFunctionsForScript(GenericMenu menu, SerializedProperty listener, UnityEventDrawer.ValidMethodMap method, string targetName)
        {
            PersistentListenerMode mode1 = method.mode;

            UnityEngine.Object     objectReferenceValue = listener.FindPropertyRelative("m_Target").objectReferenceValue;
            string                 stringValue          = listener.FindPropertyRelative("m_MethodName").stringValue;
            PersistentListenerMode mode2            = UnityEventDrawer.GetMode(listener.FindPropertyRelative("m_Mode"));
            SerializedProperty     propertyRelative = listener.FindPropertyRelative("m_Arguments").FindPropertyRelative("m_ObjectArgumentAssemblyTypeName");
            StringBuilder          stringBuilder    = new StringBuilder();
            int length = method.methodInfo.GetParameters().Length;

            for (int index = 0; index < length; ++index)
            {
                System.Reflection.ParameterInfo parameter = method.methodInfo.GetParameters()[index];
                stringBuilder.Append(string.Format("{0}", (object)UnityEventDrawer.GetTypeName(parameter.ParameterType)));
                if (index < length - 1)
                {
                    stringBuilder.Append(", ");
                }
            }
            bool on = objectReferenceValue == method.target && stringValue == method.methodInfo.Name && mode1 == mode2;

            if (on && mode1 == PersistentListenerMode.Object && method.methodInfo.GetParameters().Length == 1)
            {
                on &= method.methodInfo.GetParameters()[0].ParameterType.AssemblyQualifiedName == propertyRelative.stringValue;
            }
            string formattedMethodName = UnityEventDrawer.GetFormattedMethodName(targetName, method.methodInfo.Name, stringBuilder.ToString(), mode1 == PersistentListenerMode.EventDefined);

            menu.AddItem(new GUIContent(formattedMethodName), on, new GenericMenu.MenuFunction2(UnityEventDrawer.SetEventFunction), (object)new UnityEventDrawer.UnityEventFunction(listener, method.target, method.methodInfo, mode1));
        }
Ejemplo n.º 2
0
        private static void AddFunctionsForScript(GenericMenu menu, SerializedProperty listener, UnityEventDrawer.ValidMethodMap method, string targetName)
        {
            PersistentListenerMode mode = method.mode;

            UnityEngine.Object     objectReferenceValue = listener.FindPropertyRelative("m_Target").objectReferenceValue;
            string                 stringValue          = listener.FindPropertyRelative("m_MethodName").stringValue;
            PersistentListenerMode mode2 = UnityEventDrawer.GetMode(listener.FindPropertyRelative("m_Mode"));
            SerializedProperty     serializedProperty = listener.FindPropertyRelative("m_Arguments").FindPropertyRelative("m_ObjectArgumentAssemblyTypeName");
            StringBuilder          stringBuilder      = new StringBuilder();
            int num = method.methodInfo.GetParameters().Length;

            for (int i = 0; i < num; i++)
            {
                ParameterInfo parameterInfo = method.methodInfo.GetParameters()[i];
                stringBuilder.Append(string.Format("{0}", UnityEventDrawer.GetTypeName(parameterInfo.ParameterType)));
                if (i < num - 1)
                {
                    stringBuilder.Append(", ");
                }
            }
            bool flag = objectReferenceValue == method.target && stringValue == method.methodInfo.Name && mode == mode2;

            if (flag && mode == PersistentListenerMode.Object && method.methodInfo.GetParameters().Length == 1)
            {
                flag &= (method.methodInfo.GetParameters()[0].ParameterType.AssemblyQualifiedName == serializedProperty.stringValue);
            }
            string formattedMethodName = UnityEventDrawer.GetFormattedMethodName(targetName, method.methodInfo.Name, stringBuilder.ToString(), mode == PersistentListenerMode.EventDefined);

            menu.AddItem(new GUIContent(formattedMethodName), flag, new GenericMenu.MenuFunction2(UnityEventDrawer.SetEventFunction), new UnityEventDrawer.UnityEventFunction(listener, method.target, method.methodInfo, mode));
        }
Ejemplo n.º 3
0
        private static void GeneratePopUpForType(GenericMenu menu, UnityEngine.Object target, bool useFullTargetName, SerializedProperty listener, Type[] delegateArgumentsTypes)
        {
            List <UnityEventDrawer.ValidMethodMap> list = new List <UnityEventDrawer.ValidMethodMap>();
            string text = (!useFullTargetName) ? target.GetType().Name : target.GetType().FullName;
            bool   flag = false;

            if (delegateArgumentsTypes.Length != 0)
            {
                UnityEventDrawer.GetMethodsForTargetAndMode(target, delegateArgumentsTypes, list, PersistentListenerMode.EventDefined);
                if (list.Count > 0)
                {
                    menu.AddDisabledItem(new GUIContent(text + "/Dynamic " + string.Join(", ", (from e in delegateArgumentsTypes
                                                                                                select UnityEventDrawer.GetTypeName(e)).ToArray <string>())));
                    UnityEventDrawer.AddMethodsToMenu(menu, listener, list, text);
                    flag = true;
                }
            }
            list.Clear();
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[]
            {
                typeof(float)
            }, list, PersistentListenerMode.Float);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[]
            {
                typeof(int)
            }, list, PersistentListenerMode.Int);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[]
            {
                typeof(string)
            }, list, PersistentListenerMode.String);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[]
            {
                typeof(bool)
            }, list, PersistentListenerMode.Bool);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[]
            {
                typeof(UnityEngine.Object)
            }, list, PersistentListenerMode.Object);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new Type[0], list, PersistentListenerMode.Void);
            if (list.Count > 0)
            {
                if (flag)
                {
                    menu.AddItem(new GUIContent(text + "/ "), false, null);
                }
                if (delegateArgumentsTypes.Length != 0)
                {
                    menu.AddDisabledItem(new GUIContent(text + "/Static Parameters"));
                }
                UnityEventDrawer.AddMethodsToMenu(menu, listener, list, text);
            }
        }
Ejemplo n.º 4
0
        private static void GeneratePopUpForType(GenericMenu menu, UnityEngine.Object target, bool useFullTargetName, SerializedProperty listener, System.Type[] delegateArgumentsTypes)
        {
            List <UnityEventDrawer.ValidMethodMap> methods = new List <UnityEventDrawer.ValidMethodMap>();
            string targetName = !useFullTargetName?target.GetType().Name : target.GetType().FullName;

            bool flag = false;

            if (delegateArgumentsTypes.Length != 0)
            {
                UnityEventDrawer.GetMethodsForTargetAndMode(target, delegateArgumentsTypes, methods, PersistentListenerMode.EventDefined);
                if (methods.Count > 0)
                {
                    menu.AddDisabledItem(new GUIContent(targetName + "/Dynamic " + string.Join(", ", ((IEnumerable <System.Type>)delegateArgumentsTypes).Select <System.Type, string>((Func <System.Type, string>)(e => UnityEventDrawer.GetTypeName(e))).ToArray <string>())));
                    UnityEventDrawer.AddMethodsToMenu(menu, listener, methods, targetName);
                    flag = true;
                }
            }
            methods.Clear();
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[1] {
                typeof(float)
            }, methods, PersistentListenerMode.Float);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[1] {
                typeof(int)
            }, methods, PersistentListenerMode.Int);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[1] {
                typeof(string)
            }, methods, PersistentListenerMode.String);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[1] {
                typeof(bool)
            }, methods, PersistentListenerMode.Bool);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[1] {
                typeof(UnityEngine.Object)
            }, methods, PersistentListenerMode.Object);
            UnityEventDrawer.GetMethodsForTargetAndMode(target, new System.Type[0], methods, PersistentListenerMode.Void);
            if (methods.Count <= 0)
            {
                return;
            }
            if (flag)
            {
                menu.AddItem(new GUIContent(targetName + "/ "), false, (GenericMenu.MenuFunction)null);
            }
            if (delegateArgumentsTypes.Length != 0)
            {
                menu.AddDisabledItem(new GUIContent(targetName + "/Static Parameters"));
            }
            UnityEventDrawer.AddMethodsToMenu(menu, listener, methods, targetName);
        }