Example #1
0
        private static void AddFunctionsForScript(GenericMenu menu, SerializedProperty listener, TesityEventDrawer.ValidMethodMap method, string targetName)
        {
            TestityPersistentListenerMode mode = method.mode;

            UnityEngine.Object            objectReferenceValue = listener.FindPropertyRelative("m_Target").objectReferenceValue;
            string                        stringValue          = listener.FindPropertyRelative("m_MethodName").stringValue;
            TestityPersistentListenerMode mode2 = TesityEventDrawer.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}", TesityEventDrawer.GetTypeName(parameterInfo.ParameterType)));
                if (i < num - 1)
                {
                    stringBuilder.Append(", ");
                }
            }
            bool flag = objectReferenceValue == method.target && stringValue == method.methodInfo.Name && mode == mode2;

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

            menu.AddItem(new GUIContent(formattedMethodName), flag, new GenericMenu.MenuFunction2(TesityEventDrawer.SetEventFunction), new TesityEventDrawer.UnityEventFunction(listener, method.target, method.methodInfo, mode));
        }
Example #2
0
        protected bool ValidateRegistration(MethodInfo method, object targetObj, TestityPersistentListenerMode mode, Type argumentType)
        {
            if (method == null)
            {
                throw new ArgumentNullException("method", String.Format("Can not register null method on {0} for callback!", new object[] { targetObj }));
            }

            UnityEngine.Object obj = targetObj as UnityEngine.Object;
            if (obj == null || obj.GetInstanceID() == 0)
            {
                object[] name = new object[] { method.Name, targetObj, null };
                name[2] = (targetObj != null ? targetObj.GetType().ToString() : "null");
                throw new ArgumentException(String.Format("Could not register callback {0} on {1}. The class {2} does not derive from UnityEngine.Object", name));
            }
            if (method.IsStatic)
            {
                throw new ArgumentException(String.Format("Could not register listener {0} on {1} static functions are not supported.", new object[] { method, this.GetType() }));
            }
            if (this.FindMethod(method.Name, targetObj, mode, argumentType) != null)
            {
                return(true);
            }
            Debug.LogWarning(String.Format("Could not register listener {0}.{1} on {2} the method could not be found.", new object[] { targetObj, method, this.GetType() }));
            return(false);
        }
			public UnityEventFunction(SerializedProperty listener, UnityEngine.Object target, MethodInfo method, TestityPersistentListenerMode mode)
			{
				this.m_Listener = listener;
				this.m_Target = target;
				this.m_Method = method;
				this.m_Mode = mode;
			}
Example #4
0
 public UnityEventFunction(SerializedProperty listener, UnityEngine.Object target, MethodInfo method, TestityPersistentListenerMode mode)
 {
     this.m_Listener = listener;
     this.m_Target   = target;
     this.m_Method   = method;
     this.m_Mode     = mode;
 }
Example #5
0
        public MethodInfo FindMethod(string name, object listener, TestityPersistentListenerMode mode, Type argumentType)
        {
            switch (mode)
            {
            case TestityPersistentListenerMode.EventDefined:
            {
                return(this.FindMethod_Impl(name, listener));
            }

            case TestityPersistentListenerMode.Void:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[0]));
            }

            case TestityPersistentListenerMode.Object:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[] { argumentType ?? typeof(UnityEngine.Object) }));
            }

            case TestityPersistentListenerMode.Int:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[] { typeof(int) }));
            }

            case TestityPersistentListenerMode.Float:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[] { typeof(float) }));
            }

            case TestityPersistentListenerMode.String:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[] { typeof(string) }));
            }

            case TestityPersistentListenerMode.Bool:
            {
                return(TestityEventBase.GetValidMethodInfo(listener, name, new Type[] { typeof(bool) }));
            }
            }
            return(null);
        }
			private void ValidateObjectParamater(SerializedProperty arguments, TestityPersistentListenerMode mode)
			{
				SerializedProperty serializedProperty = arguments.FindPropertyRelative("m_ObjectArgumentAssemblyTypeName");
				SerializedProperty serializedProperty2 = arguments.FindPropertyRelative("m_ObjectArgument");
				UnityEngine.Object objectReferenceValue = serializedProperty2.objectReferenceValue;
				if (mode != TestityPersistentListenerMode.Object)
				{
					serializedProperty.stringValue = typeof(UnityEngine.Object).AssemblyQualifiedName;
					serializedProperty2.objectReferenceValue = null;
					return;
				}
				if (objectReferenceValue == null)
				{
					return;
				}
				Type type = Type.GetType(serializedProperty.stringValue, false);
				if (!typeof(UnityEngine.Object).IsAssignableFrom(type) || !type.IsInstanceOfType(objectReferenceValue))
				{
					serializedProperty2.objectReferenceValue = null;
				}
			}
Example #7
0
            private void ValidateObjectParamater(SerializedProperty arguments, TestityPersistentListenerMode mode)
            {
                SerializedProperty serializedProperty  = arguments.FindPropertyRelative("m_ObjectArgumentAssemblyTypeName");
                SerializedProperty serializedProperty2 = arguments.FindPropertyRelative("m_ObjectArgument");

                UnityEngine.Object objectReferenceValue = serializedProperty2.objectReferenceValue;
                if (mode != TestityPersistentListenerMode.Object)
                {
                    serializedProperty.stringValue           = typeof(UnityEngine.Object).AssemblyQualifiedName;
                    serializedProperty2.objectReferenceValue = null;
                    return;
                }
                if (objectReferenceValue == null)
                {
                    return;
                }
                Type type = Type.GetType(serializedProperty.stringValue, false);

                if (!typeof(UnityEngine.Object).IsAssignableFrom(type) || !type.IsInstanceOfType(objectReferenceValue))
                {
                    serializedProperty2.objectReferenceValue = null;
                }
            }
Example #8
0
 protected bool ValidateRegistration(MethodInfo method, object targetObj, TestityPersistentListenerMode mode)
 {
     return(this.ValidateRegistration(method, targetObj, mode, typeof(UnityEngine.Object)));
 }
		private static void GetMethodsForTargetAndMode(UnityEngine.Object target, Type[] delegateArgumentsTypes, List<TesityEventDrawer.ValidMethodMap> methods, TestityPersistentListenerMode mode)
		{
			IEnumerable<TesityEventDrawer.ValidMethodMap> enumerable = TesityEventDrawer.CalculateMethodMap(target, delegateArgumentsTypes, mode == TestityPersistentListenerMode.Object);
			foreach (TesityEventDrawer.ValidMethodMap current in enumerable)
			{
				TesityEventDrawer.ValidMethodMap item = current;
				item.mode = mode;
				methods.Add(item);
			}
		}
		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;
		}
Example #11
0
        private static void GetMethodsForTargetAndMode(UnityEngine.Object target, Type[] delegateArgumentsTypes, List <TesityEventDrawer.ValidMethodMap> methods, TestityPersistentListenerMode mode)
        {
            IEnumerable <TesityEventDrawer.ValidMethodMap> enumerable = TesityEventDrawer.CalculateMethodMap(target, delegateArgumentsTypes, mode == TestityPersistentListenerMode.Object);

            foreach (TesityEventDrawer.ValidMethodMap current in enumerable)
            {
                TesityEventDrawer.ValidMethodMap item = current;
                item.mode = mode;
                methods.Add(item);
            }
        }
Example #12
0
 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);
 }
Example #13
0
        private void DrawEventListener(Rect rect, int index, bool isactive, bool isfocused)
        {
            SerializedProperty arrayElementAtIndex = this.m_ListenersArray.GetArrayElementAtIndex(index);

            rect.y += 1f;
            Rect[]             rowRects            = this.GetRowRects(rect);
            Rect               position            = rowRects[0];
            Rect               position2           = rowRects[1];
            Rect               rect2               = rowRects[2];
            Rect               position3           = rowRects[3];
            SerializedProperty property            = arrayElementAtIndex.FindPropertyRelative("m_CallState");
            SerializedProperty mode                = arrayElementAtIndex.FindPropertyRelative("m_Mode");
            SerializedProperty serializedProperty  = arrayElementAtIndex.FindPropertyRelative("m_Arguments");
            SerializedProperty serializedProperty2 = arrayElementAtIndex.FindPropertyRelative("m_Target");
            SerializedProperty serializedProperty3 = arrayElementAtIndex.FindPropertyRelative("m_MethodName");
            Color              backgroundColor     = GUI.backgroundColor;

            GUI.backgroundColor = Color.white;
            EditorGUI.PropertyField(position, property, GUIContent.none);
            EditorGUI.BeginChangeCheck();
            GUI.Box(position2, GUIContent.none);
            EditorGUI.PropertyField(position2, serializedProperty2, GUIContent.none);
            if (EditorGUI.EndChangeCheck())
            {
                serializedProperty3.stringValue = null;
            }
            TestityPersistentListenerMode mode2 = TesityEventDrawer.GetMode(mode);
            SerializedProperty            serializedProperty4;

            switch (mode2)
            {
            case TestityPersistentListenerMode.Object:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_ObjectArgument");
                break;

            case TestityPersistentListenerMode.Int:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_IntArgument");
                break;

            case TestityPersistentListenerMode.Float:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_FloatArgument");
                break;

            case TestityPersistentListenerMode.String:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_StringArgument");
                break;

            case TestityPersistentListenerMode.Bool:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_BoolArgument");
                break;

            default:
                serializedProperty4 = serializedProperty.FindPropertyRelative("m_IntArgument");
                break;
            }
            string stringValue = serializedProperty.FindPropertyRelative("m_ObjectArgumentAssemblyTypeName").stringValue;
            Type   type        = typeof(UnityEngine.Object);

            if (!string.IsNullOrEmpty(stringValue))
            {
                type = (Type.GetType(stringValue, false) ?? typeof(UnityEngine.Object));
            }
            if (mode2 == TestityPersistentListenerMode.Object)
            {
                EditorGUI.BeginChangeCheck();
                UnityEngine.Object objectReferenceValue = EditorGUI.ObjectField(position3, GUIContent.none, serializedProperty4.objectReferenceValue, type, true);
                if (EditorGUI.EndChangeCheck())
                {
                    serializedProperty4.objectReferenceValue = objectReferenceValue;
                }
            }
            else
            {
                if (mode2 != TestityPersistentListenerMode.Void && mode2 != TestityPersistentListenerMode.EventDefined)
                {
                    EditorGUI.PropertyField(position3, serializedProperty4, GUIContent.none);
                }
            }
            EditorGUI.BeginDisabledGroup(serializedProperty2.objectReferenceValue == null);
            EditorGUI.BeginProperty(rect2, GUIContent.none, serializedProperty3);
            GUIContent content;

            if (EditorGUI.showMixedValue)
            {
                content = new GUIContent("Temp");                //MODIFIED: EditorGUI.mixedValueContent;
            }
            else
            {
                StringBuilder stringBuilder = new StringBuilder();
                if (serializedProperty2.objectReferenceValue == null || string.IsNullOrEmpty(serializedProperty3.stringValue))
                {
                    stringBuilder.Append("No Function");
                }
                else
                {
                    if (!TesityEventDrawer.IsPersistantListenerValid(this.m_DummyEvent, serializedProperty3.stringValue, serializedProperty2.objectReferenceValue, TesityEventDrawer.GetMode(mode), type))
                    {
                        string             arg = "UnknownComponent";
                        UnityEngine.Object objectReferenceValue2 = serializedProperty2.objectReferenceValue;
                        if (objectReferenceValue2 != null)
                        {
                            arg = objectReferenceValue2.GetType().Name;
                        }
                        stringBuilder.Append(string.Format("<Missing {0}.{1}>", arg, serializedProperty3.stringValue));
                    }
                    else
                    {
                        stringBuilder.Append(serializedProperty2.objectReferenceValue.GetType().Name);
                        if (!string.IsNullOrEmpty(serializedProperty3.stringValue))
                        {
                            stringBuilder.Append(".");
                            if (serializedProperty3.stringValue.StartsWith("set_"))
                            {
                                stringBuilder.Append(serializedProperty3.stringValue.Substring(4));
                            }
                            else
                            {
                                stringBuilder.Append(serializedProperty3.stringValue);
                            }
                        }
                    }
                }

                content = new GUIContent("Temp");                //MODIFIED: GUIContent.Temp(stringBuilder.ToString());
            }
            if (GUI.Button(rect2, content, EditorStyles.popup))
            {
                TesityEventDrawer.BuildPopupList(serializedProperty2.objectReferenceValue, this.m_DummyEvent, arrayElementAtIndex).DropDown(rect2);
            }
            EditorGUI.EndProperty();
            EditorGUI.EndDisabledGroup();
            GUI.backgroundColor = backgroundColor;
        }