Skip to content

Commit 40ce21e

Browse files
committed
Moved the optimization into migration function, assigned proper versioning to the checks.
1 parent b3f63c9 commit 40ce21e

File tree

1 file changed

+46
-43
lines changed

1 file changed

+46
-43
lines changed

Packages/com.unity.inputsystem/InputSystem/Actions/InputActionAsset.cs

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,10 @@ public void LoadFromJson(string json)
398398
throw new ArgumentNullException(nameof(json));
399399

400400
var parsedJson = JsonUtility.FromJson<ReadFileJson>(json);
401-
if ((parsedJson.maps?.Length ?? 0) > 0 && (parsedJson.version ?? 0) < JsonVersion.Current)
402-
{
403-
MigrateJson(ref parsedJson);
404-
}
401+
//if ((parsedJson.maps?.Length ?? 0) > 0 && (parsedJson.version ?? 0) < JsonVersion.Version1)
402+
//{
403+
MigrateJson(ref parsedJson);
404+
//}
405405

406406
parsedJson.ToAsset(this);
407407
}
@@ -1015,64 +1015,67 @@ public void ToAsset(InputActionAsset asset)
10151015
/// </summary>
10161016
internal void MigrateJson(ref ReadFileJson parsedJson)
10171017
{
1018-
var existing = parsedJson.version ?? JsonVersion.Version0;
1018+
var existing = parsedJson.version ?? JsonVersion.Version1;
10191019
if (existing >= JsonVersion.Current)
10201020
return;
10211021

1022-
for (var mi = 0; mi < parsedJson.maps.Length; ++mi)
1022+
if ((parsedJson.maps?.Length ?? 0) > 0 && (parsedJson.version ?? 0) < JsonVersion.Version1)
10231023
{
1024-
var mapJson = parsedJson.maps[mi];
1025-
for (var ai = 0; ai < mapJson.actions.Length; ++ai)
1024+
for (var mi = 0; mi < parsedJson.maps.Length; ++mi)
10261025
{
1027-
var actionJson = mapJson.actions[ai];
1028-
var raw = actionJson.processors;
1029-
if (string.IsNullOrEmpty(raw))
1030-
continue;
1031-
1032-
var list = NameAndParameters.ParseMultiple(raw).ToList();
1033-
var rebuilt = new List<string>(list.Count);
1034-
foreach (var nap in list)
1026+
var mapJson = parsedJson.maps[mi];
1027+
for (var ai = 0; ai < mapJson.actions.Length; ++ai)
10351028
{
1036-
var procType = InputSystem.TryGetProcessor(nap.name);
1037-
if (nap.parameters.Count == 0 || procType == null)
1038-
{
1039-
rebuilt.Add(nap.ToString());
1029+
var actionJson = mapJson.actions[ai];
1030+
var raw = actionJson.processors;
1031+
if (string.IsNullOrEmpty(raw))
10401032
continue;
1041-
}
10421033

1043-
var dict = nap.parameters.ToDictionary(p => p.name, p => p.value.ToString());
1044-
var anyChanged = false;
1045-
foreach (var field in procType.GetFields(BindingFlags.Public | BindingFlags.Instance).Where(f => f.FieldType.IsEnum))
1034+
var list = NameAndParameters.ParseMultiple(raw).ToList();
1035+
var rebuilt = new List<string>(list.Count);
1036+
foreach (var nap in list)
10461037
{
1047-
if (dict.TryGetValue(field.Name, out var ordS) && int.TryParse(ordS, out var ord))
1038+
var procType = InputSystem.TryGetProcessor(nap.name);
1039+
if (nap.parameters.Count == 0 || procType == null)
10481040
{
1049-
var values = Enum.GetValues(field.FieldType).Cast<object>().ToArray();
1050-
if (ord >= 0 && ord < values.Length)
1041+
rebuilt.Add(nap.ToString());
1042+
continue;
1043+
}
1044+
1045+
var dict = nap.parameters.ToDictionary(p => p.name, p => p.value.ToString());
1046+
var anyChanged = false;
1047+
foreach (var field in procType.GetFields(BindingFlags.Public | BindingFlags.Instance).Where(f => f.FieldType.IsEnum))
1048+
{
1049+
if (dict.TryGetValue(field.Name, out var ordS) && int.TryParse(ordS, out var ord))
10511050
{
1052-
dict[field.Name] = Convert.ToInt32(values[ord]).ToString();
1053-
anyChanged = true;
1051+
var values = Enum.GetValues(field.FieldType).Cast<object>().ToArray();
1052+
if (ord >= 0 && ord < values.Length)
1053+
{
1054+
dict[field.Name] = Convert.ToInt32(values[ord]).ToString();
1055+
anyChanged = true;
1056+
}
10541057
}
10551058
}
1056-
}
10571059

1058-
if (!anyChanged)
1059-
{
1060-
rebuilt.Add(nap.ToString());
1061-
}
1062-
else
1063-
{
1064-
var paramText = string.Join(",", dict.Select(kv => $"{kv.Key}={kv.Value}"));
1065-
rebuilt.Add($"{nap.name}({paramText})");
1060+
if (!anyChanged)
1061+
{
1062+
rebuilt.Add(nap.ToString());
1063+
}
1064+
else
1065+
{
1066+
var paramText = string.Join(",", dict.Select(kv => $"{kv.Key}={kv.Value}"));
1067+
rebuilt.Add($"{nap.name}({paramText})");
1068+
}
10661069
}
1067-
}
10681070

1069-
actionJson.processors = string.Join(";", rebuilt);
1070-
mapJson.actions[ai] = actionJson;
1071+
actionJson.processors = string.Join(";", rebuilt);
1072+
mapJson.actions[ai] = actionJson;
1073+
}
1074+
parsedJson.maps[mi] = mapJson;
10711075
}
1072-
parsedJson.maps[mi] = mapJson;
10731076
}
10741077
// Bump the version so we never re-migrate
1075-
parsedJson.version = JsonVersion.Current;
1078+
parsedJson.version = JsonVersion.Version1;
10761079
}
10771080
}
10781081
}

0 commit comments

Comments
 (0)