You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

91 lines
2.5 KiB

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<TEnum>( ref TEnum selectedIndex, ParentNode owner, Action<ParentNode> 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();
}
}