diff --git a/LightlessSync/Services/ActorTracking/ActorObjectService.cs b/LightlessSync/Services/ActorTracking/ActorObjectService.cs index 3813fb4..c5529cf 100644 --- a/LightlessSync/Services/ActorTracking/ActorObjectService.cs +++ b/LightlessSync/Services/ActorTracking/ActorObjectService.cs @@ -77,21 +77,6 @@ public sealed class ActorObjectService : IHostedService, IDisposable, IMediatorS _clientState = clientState; _condition = condition; _mediator = mediator; - _mediator.Subscribe(this, _ => - { - QueueWarmStart("PenumbraInitialized"); - }); - - _mediator.Subscribe(this, _ => - { - QueueWarmStart("Connected"); - }); - - // Optional: helps after zoning - _mediator.Subscribe(this, _ => - { - QueueWarmStart("ZoneSwitchEnd"); - }); _mediator.Subscribe(this, (msg) => { if (!msg.OwnedObject) return; @@ -1165,57 +1150,6 @@ public sealed class ActorObjectService : IHostedService, IDisposable, IMediatorS PublishGposeSnapshot(); } - private void QueueWarmStart(string reason) - { - if (Interlocked.Exchange(ref _warmStartQueued, 1) == 1) - return; - - _ = Task.Run(async () => - { - try - { - if (Interlocked.Exchange(ref _warmStartRan, 1) == 1) - return; - - await Task.Delay(500).ConfigureAwait(false); - - if (IsZoning) - return; - - await _framework.RunOnFrameworkThread(() => - { - RefreshTrackedActorsInternal(); - - var snapshot = Snapshot; - - var published = new HashSet(); - - foreach (var d in snapshot.PlayerDescriptors) - { - if (d.Address != nint.Zero && published.Add(d.Address)) - _mediator.Publish(new ActorTrackedMessage(d)); - } - - foreach (var d in snapshot.OwnedDescriptors) - { - if (d.Address != nint.Zero && published.Add(d.Address)) - _mediator.Publish(new ActorTrackedMessage(d)); - } - - _logger.LogDebug("WarmStart republished {count} actors ({reason})", published.Count, reason); - }).ConfigureAwait(false); - } - catch (Exception ex) - { - _logger.LogDebug(ex, "WarmStart failed ({reason})", reason); - } - finally - { - Interlocked.Exchange(ref _warmStartQueued, 0); - } - }); - } - private unsafe void TrackGposeObject(GameObject* gameObject) { if (gameObject == null)