public void Initialize(TestityInvokableCallList invokableList, TestityEventBase unityEventBase) { foreach (TestityPersistentCall mCall in this.m_Calls) { if (mCall.IsValid()) { TestityBaseInvokableCall runtimeCall = mCall.GetRuntimeCall(unityEventBase); if (runtimeCall == null) { continue; } invokableList.AddPersistentInvokableCall(runtimeCall); } } }
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); }
private static string GetEventParams(TestityEventBase evt) { MethodInfo methodInfo = evt.FindMethod("Invoke", evt, TestityPersistentListenerMode.EventDefined, null); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(" ("); Type[] array = ( from x in methodInfo.GetParameters() select x.ParameterType).ToArray <Type>(); for (int i = 0; i < array.Length; i++) { stringBuilder.Append(array[i].Name); if (i < array.Length - 1) { stringBuilder.Append(", "); } } stringBuilder.Append(")"); return(stringBuilder.ToString()); }
public void OnGUI(Rect position) { if (this.m_ListenersArray == null || !this.m_ListenersArray.isArray) { return; } this.m_DummyEvent = TesityEventDrawer.GetDummyEvent(this.m_Prop); if (this.m_DummyEvent == null) { return; } if (this.m_Styles == null) { this.m_Styles = new TesityEventDrawer.Styles(); } if (this.m_ReorderableList != null) { int indentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; this.m_ReorderableList.DoList(position); EditorGUI.indentLevel = indentLevel; } }
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; }
public static bool IsPersistantListenerValid(TestityEventBase dummyEvent, string methodName, UnityEngine.Object uObject, TestityPersistentListenerMode modeEnum, Type argumentType) { return !(uObject == null) && !string.IsNullOrEmpty(methodName) && dummyEvent.FindMethod(methodName, uObject, modeEnum, argumentType) != null; }
private static string GetEventParams(TestityEventBase evt) { MethodInfo methodInfo = evt.FindMethod("Invoke", evt, TestityPersistentListenerMode.EventDefined, null); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(" ("); Type[] array = ( from x in methodInfo.GetParameters() select x.ParameterType).ToArray<Type>(); for (int i = 0; i < array.Length; i++) { stringBuilder.Append(array[i].Name); if (i < array.Length - 1) { stringBuilder.Append(", "); } } stringBuilder.Append(")"); return stringBuilder.ToString(); }
public TestityBaseInvokableCall GetRuntimeCall(TestityEventBase theEvent) { if (this.m_CallState == TestityEventCallState.RuntimeOnly && !Application.isPlaying) { return null; } if (this.m_CallState == TestityEventCallState.Off || theEvent == null) { return null; } MethodInfo methodInfo = theEvent.FindMethod(this); if (methodInfo == null) { return null; } switch (this.m_Mode) { case TestityPersistentListenerMode.EventDefined: { return theEvent.GetDelegate(this.target, methodInfo); } case TestityPersistentListenerMode.Void: { return new TestityInvokableCall(this.target, methodInfo); } case TestityPersistentListenerMode.Object: { return TestityPersistentCall.GetObjectCall(this.target, methodInfo, this.m_Arguments); } case TestityPersistentListenerMode.Int: { return new TestityCachedInvokableCall<int>(this.target, methodInfo, this.m_Arguments.intArgument); } case TestityPersistentListenerMode.Float: { return new TestityCachedInvokableCall<float>(this.target, methodInfo, this.m_Arguments.floatArgument); } case TestityPersistentListenerMode.String: { return new TestityCachedInvokableCall<string>(this.target, methodInfo, this.m_Arguments.stringArgument); } case TestityPersistentListenerMode.Bool: { return new TestityCachedInvokableCall<bool>(this.target, methodInfo, this.m_Arguments.boolArgument); } } return null; }
public static bool IsPersistantListenerValid(TestityEventBase dummyEvent, string methodName, UnityEngine.Object uObject, TestityPersistentListenerMode modeEnum, Type argumentType) { return(!(uObject == null) && !string.IsNullOrEmpty(methodName) && dummyEvent.FindMethod(methodName, uObject, modeEnum, argumentType) != null); }