Add support for using InputAction editor on string variable

This commit is contained in:
Wojtek Figat
2024-07-09 11:57:59 +02:00
parent ffddbb455f
commit 70912e1d56

View File

@@ -33,11 +33,25 @@ namespace FlaxEditor.CustomEditors.Editors
names.Add(mapping.Name);
}
_comboBox.Items = names;
if (Values[0] is InputEvent inputEvent && names.Contains(inputEvent.Name))
var prev = GetValue();
if (prev is InputEvent inputEvent && names.Contains(inputEvent.Name))
_comboBox.SelectedItem = inputEvent.Name;
else if (prev is string name && names.Contains(name))
_comboBox.SelectedItem = name;
_comboBox.SelectedIndexChanged += OnSelectedIndexChanged;
}
private object GetValue()
{
if (Values[0] is InputEvent inputEvent)
return inputEvent;
if (Values[0] is string str)
return str;
if (Values.Type.Type == typeof(string))
return string.Empty;
return null;
}
private void OnSetupContextMenu(PropertyNameLabel label, ContextMenu menu, CustomEditor linkedEditor)
{
var button = menu.AddButton("Set to null");
@@ -46,7 +60,16 @@ namespace FlaxEditor.CustomEditors.Editors
private void OnSelectedIndexChanged(ComboBox comboBox)
{
SetValue(comboBox.SelectedItem == null ? null : new InputEvent(comboBox.SelectedItem));
object value = null;
if (comboBox.SelectedItem != null)
{
var prev = GetValue();
if (prev is InputEvent)
value = new InputEvent(comboBox.SelectedItem);
else if (prev is string)
value = comboBox.SelectedItem;
}
SetValue(value);
}
/// <inheritdoc />
@@ -59,8 +82,11 @@ namespace FlaxEditor.CustomEditors.Editors
}
else
{
if (Values[0] is InputEvent inputEvent && _comboBox.Items.Contains(inputEvent.Name))
var prev = GetValue();
if (prev is InputEvent inputEvent && _comboBox.Items.Contains(inputEvent.Name))
_comboBox.SelectedItem = inputEvent.Name;
else if (prev is string name && _comboBox.Items.Contains(name))
_comboBox.SelectedItem = name;
else
_comboBox.SelectedItem = null;
}