Beispiel #1
0
        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;