void DrawProviderPreview(Rect position, ReceiverLinkerItem linkerItem, ReceiverMethod method, Type receiverType, MonoBehaviour targetObject) { var controlPosition = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), new GUIContent(" ")); IDataProviderObject provider = null; if (receiverType != null) { provider = ReceiverComponentBuilder.FindProvider(targetObject, receiverType, ReceiverComponentBuilder.TypeDataProviderObject); } if (provider != null) { GUI.enabled = false; EditorGUI.ObjectField( new Rect(controlPosition.x, controlPosition.y, controlPosition.width, EditorGUIUtility.singleLineHeight), provider as Component, typeof(Component), true ); GUI.enabled = true; } else { var style = new GUIStyle(); style.normal.textColor = Color.red; EditorGUI.LabelField( new Rect(controlPosition.x, controlPosition.y, controlPosition.width, EditorGUIUtility.singleLineHeight), "Provider not found!", style ); } }
public static Provider TypeProvider(IDataProviderObject obj, Func <Type, bool> typeFilter) { foreach (var provider in obj.GetProviders().All) { if (typeFilter(provider.Type)) { return(provider); } } return(null); }
public static IDataProviderObject TypeDataProviderObject(IDataProviderObject obj, Func <Type, bool> typeFilter) => ProvidersCreator.GetProviderTypes(obj.GetType()).Any(typeFilter) ? obj : null;