Add support for using InputAction editor on string variable
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user