HumanoidProfileEditor defers preview updates to FrameUpdate.

Fixes most of the perf problems with it.
This commit is contained in:
Pieter-Jan Briers
2021-06-20 19:40:12 +02:00
parent efad7b8dbb
commit 1eae13a863

View File

@@ -21,6 +21,7 @@ using Robust.Shared.Map;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Client.Preferences.UI namespace Content.Client.Preferences.UI
@@ -60,6 +61,7 @@ namespace Content.Client.Preferences.UI
private readonly SpriteView _previewSpriteSide; private readonly SpriteView _previewSpriteSide;
private bool _isDirty; private bool _isDirty;
private bool _needUpdatePreview;
public int CharacterSlot; public int CharacterSlot;
public HumanoidCharacterProfile? Profile; public HumanoidCharacterProfile? Profile;
@@ -724,7 +726,7 @@ namespace Content.Client.Preferences.UI
set set
{ {
_isDirty = value; _isDirty = value;
UpdatePreview(); _needUpdatePreview = true;
UpdateSaveButton(); UpdateSaveButton();
} }
} }
@@ -843,11 +845,23 @@ namespace Content.Client.Preferences.UI
UpdateJobPriorities(); UpdateJobPriorities();
UpdateAntagPreferences(); UpdateAntagPreferences();
UpdatePreview(); _needUpdatePreview = true;
_preferenceUnavailableButton.SelectId((int) Profile.PreferenceUnavailable); _preferenceUnavailableButton.SelectId((int) Profile.PreferenceUnavailable);
} }
protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
if (_needUpdatePreview)
{
UpdatePreview();
_needUpdatePreview = false;
}
}
private void UpdateJobPriorities() private void UpdateJobPriorities()
{ {
foreach (var prioritySelector in _jobPriorities) foreach (var prioritySelector in _jobPriorities)