Example #1
0
        List <PopupOption> GetOptions(object obj, Type linkedType)
        {
            var options      = new List <PopupOption>();
            var targetObject = obj as Component;

            if (targetObject != null)
            {
                foreach (var provider in targetObject.transform.GetComponentsInParent <IDataProviderObject>(includeInactive: true))
                {
                    if (object.ReferenceEquals(provider, targetObject))
                    {
                        continue;
                    }

                    //var providers = provider.GetProviders();
                    var providerTypes = ProvidersCreator.GetProviderTypes(provider.GetType());
                    if (providerTypes != null)
                    {
                        foreach (var dataType in providerTypes)
                        {
                            GetGetterMethods(new List <Type> {
                                dataType
                            }, new List <string>(), linkedType, options);
                        }
                    }
                }
            }
            return(options);
        }
Example #2
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            EditorGUI.BeginProperty(position, label, property);

            var providerTypes = ProvidersCreator.GetProviderTypes(property.serializedObject.targetObject.GetType());
            int count         = providerTypes.Count();

            if (count > 0)
            {
                position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), new GUIContent("Provides"));

                EditorGUI.LabelField(
                    new Rect(position.x, position.y, position.width, count * EditorGUIUtility.singleLineHeight),
                    string.Join("\n", providerTypes.Select(type => type.GetFriendlyName()))
                    );
            }

            EditorGUI.EndProperty();
        }
Example #3
0
 public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
 {
     return(ProvidersCreator.GetProviderTypes(property.serializedObject.targetObject.GetType()).Count() * EditorGUIUtility.singleLineHeight);
 }