void FromStateFilterInspector(TransitionProfile profile, FromStateFilter filter, ref Rect stateRect)
{
EGL.BeginHorizontal();
filter.type = (FromStateType)EGL.EnumPopup(filter.type, GL.Width(70));
if (filter.type == FromStateType.State)
{
EditorGUIUtil.AutoCompleteList(filter.stateOrTagName, allStateNames, str => filter.stateOrTagName = str, ref stateRect);
}
else if (filter.type == FromStateType.Tag)
{
EditorGUIUtil.AutoCompleteList(filter.stateOrTagName, transition.profile.tags, str => filter.stateOrTagName = str, ref stateRect);
}
if (filter.type == FromStateType.State)
{
var state = transition.profile.FindState(filter.stateOrTagName);
if (state == null)
{
EGL.EndHorizontal();
EGL.HelpBox("No Source State", MessageType.Error);
}
else
{
List <string> portionSelections = new List <string>();
portionSelections.Add("<any>");
foreach (var p in state.allPortions)
{
portionSelections.Add(p.name);
}
var prevIndex = portionSelections.IndexOf(filter.portionName);
if (prevIndex == -1)
{
prevIndex = 0;
}
prevIndex = EGL.Popup(prevIndex, portionSelections.ToArray());
filter.portionName = prevIndex == 0 ? "" : portionSelections[prevIndex];
if (GL.Button("Focus"))
{
Utils.FocusEditingAnimation(profile, state.stateName);
}
EGL.EndHorizontal();
}
}
else
{
EGL.EndHorizontal();
}
}