diff --git a/Glamourer/State/ActorState.cs b/Glamourer/State/ActorState.cs index a770ee3..29b188c 100644 --- a/Glamourer/State/ActorState.cs +++ b/Glamourer/State/ActorState.cs @@ -62,6 +62,14 @@ public class ActorState return !IsLocked; } + /// Lock for temporary changes until after redrawing. + public bool TempLock() + => Lock(1337); + + /// Unlock temp locks. + public bool TempUnlock() + => Unlock(1337); + /// This contains whether a change to the base data was made by the game, the user via manual input or through automatic application. private readonly StateChanged.Source[] _sources = Enumerable .Repeat(StateChanged.Source.Game, EquipFlagExtensions.NumEquipFlags + CustomizationExtensions.NumIndices + 5).ToArray(); diff --git a/Glamourer/State/StateListener.cs b/Glamourer/State/StateListener.cs index 7b81365..c53b4c7 100644 --- a/Glamourer/State/StateListener.cs +++ b/Glamourer/State/StateListener.cs @@ -131,6 +131,8 @@ public class StateListener : IDisposable break; } + + state.TempUnlock(); } _funModule.ApplyFun(actor, new Span((void*)equipDataPtr, 10), ref customize); diff --git a/Glamourer/State/StateManager.cs b/Glamourer/State/StateManager.cs index ec207e9..e6a5b63 100644 --- a/Glamourer/State/StateManager.cs +++ b/Glamourer/State/StateManager.cs @@ -377,6 +377,7 @@ public class StateManager : IReadOnlyDictionary var actors = _applier.ChangeWetness(state, true); if (redraw) { + state.TempLock(); _applier.ForceRedraw(actors); } else