using System; using UnityEngine; using UnityEditor; namespace AmplifyShaderEditor { public class UpperLeftWidgetHelper { public int DrawWidget( ParentNode owner, int selectedIndex, GUIContent[] displayedOptions ) { if( owner.DropdownEditing ) { int newValue = owner.EditorGUIPopup( owner.DropdownRect, selectedIndex, displayedOptions, UIUtils.PropertyPopUp ); if( newValue != selectedIndex ) { owner.DropdownEditing = false; } return newValue; } return selectedIndex; } public int DrawWidget( ParentNode owner, int selectedIndex, string[] displayedOptions ) { if( owner.DropdownEditing ) { int newValue = owner.EditorGUIPopup( owner.DropdownRect, selectedIndex, displayedOptions, UIUtils.PropertyPopUp ); if( newValue != selectedIndex ) { owner.DropdownEditing = false; } return newValue; } return selectedIndex; } public int DrawWidget( ParentNode owner, int selectedIndex, string[] displayedOptions, int[] optionValues ) { if( owner.DropdownEditing ) { int newValue = owner.EditorGUIIntPopup( owner.DropdownRect, selectedIndex, displayedOptions, optionValues, UIUtils.PropertyPopUp ); if( newValue != selectedIndex ) { owner.DropdownEditing = false; } return newValue; } return selectedIndex; } // GC free version public void DrawWidget( ref TEnum selectedIndex, ParentNode owner, Action callback ) where TEnum : struct { if( owner.DropdownEditing ) { Enum asEnumType = selectedIndex as Enum; if( asEnumType != null ) { EditorGUI.BeginChangeCheck(); selectedIndex = ( owner.EditorGUIEnumPopup( owner.DropdownRect, asEnumType, UIUtils.PropertyPopUp ) as TEnum? ).Value; if( EditorGUI.EndChangeCheck() ) { owner.DropdownEditing = false; if( callback != null ) callback( owner ); } } } } /* * USE THIS OVERRIDE IN CASE THE NODE DOESN'T HAVE PREVIEW */ //public override void AfterCommonInit() //{ // base.AfterCommonInit(); // if( PaddingTitleLeft == 0 ) // { // PaddingTitleLeft = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin; // if( PaddingTitleRight == 0 ) // PaddingTitleRight = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin; // } //} /* * USE THE SOURCE CODE BELOW INTO THE NODE YOU WANT THE WIDGET TO SHOW */ //private UpperLeftWidgetHelper m_upperLeftWidget = new UpperLeftWidgetHelper(); } }