Improve timeline selection performance

But selecting a large number of hit objects is still very slow
because all DHOs must be added
and also `AddBlueprintFor` has quadratic behaviors
This commit is contained in:
ekrctb
2022-10-05 21:26:00 +09:00
parent 0613388aaa
commit 00b3d97f69
2 changed files with 12 additions and 16 deletions

View File

@ -58,13 +58,19 @@ namespace osu.Game.Screens.Edit.Compose.Components
{
case NotifyCollectionChangedAction.Add:
foreach (object o in args.NewItems)
SelectionBlueprints.FirstOrDefault(b => b.Item == o)?.Select();
{
if (blueprintMap.TryGetValue((T)o, out var blueprint))
blueprint.Select();
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (object o in args.OldItems)
SelectionBlueprints.FirstOrDefault(b => b.Item == o)?.Deselect();
{
if (blueprintMap.TryGetValue((T)o, out var blueprint))
blueprint.Deselect();
}
break;
}