/// <summary> /// Draws the dropdown menu for picking a property in the view model to bind to. /// </summary> private void ShowViewModelPropertyMenu(TwoWayPropertyBinding target, PropertyInfo[] bindableProperties, Type viewPropertyType, Rect position) { var selectedIndex = Array.IndexOf( bindableProperties.Select(p => p.ReflectedType + p.Name).ToArray(), target.viewModelName + target.viewModelPropertyName ); var options = bindableProperties.Select(p => new InspectorUtils.MenuItem( new GUIContent(p.ReflectedType + "/" + p.Name + " : " + p.PropertyType.Name), p.PropertyType == viewPropertyType ) ).ToArray(); InspectorUtils.ShowCustomSelectionMenu(index => SetViewModelProperty(target, bindableProperties[index]), options, selectedIndex, position); }
/// <summary> /// Draws the dropdown for selecting a method from bindableViewModelCollections /// </summary> private void ShowCollectionSelectorDropdown(CollectionBinding targetScript, PropertyInfo[] bindableViewModelCollections, Rect position) { var selectedIndex = Array.IndexOf( bindableViewModelCollections.Select(m => m.ReflectedType + m.Name).ToArray(), targetScript.viewModelName + targetScript.viewModelPropertyName ); var options = bindableViewModelCollections.Select(m => new InspectorUtils.MenuItem( new GUIContent(m.ReflectedType + "/" + m.Name), true ) ).ToArray(); InspectorUtils.ShowCustomSelectionMenu( index => SetViewModelProperty(targetScript, bindableViewModelCollections[index]), options, selectedIndex, position); }
private void ShowViewModelMethodDropdown(EventBinding target, MethodInfo[] bindableViewModelMethods, Type[] viewEventArgs, Rect position) { var selectedIndex = Array.IndexOf( bindableViewModelMethods.Select(m => m.ReflectedType + m.Name).ToArray(), target.viewModelName + target.viewModelMethodName ); var options = bindableViewModelMethods.Select(m => new InspectorUtils.MenuItem( new GUIContent(m.ReflectedType + "/" + m.Name + "(" + ParameterInfoToString(m.GetParameters()) + ")"), MethodMatchesSignature(m, viewEventArgs) ) ).ToArray(); InspectorUtils.ShowCustomSelectionMenu( index => SetBoundMethod(target, bindableViewModelMethods[index]), options, selectedIndex, position); }