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); }
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(); }
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return(ProvidersCreator.GetProviderTypes(property.serializedObject.targetObject.GetType()).Count() * EditorGUIUtility.singleLineHeight); }