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)); }
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)); }
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); } }
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); }