public override void Pulse() { var methodName = "Pulse"; LogTrace(methodName); if (!ShouldPulse()) { return; } if (!_meCache.InSpace || _meCache.InStation || (_movement.IsMoving && _movement.MovementType != MovementTypes.Approach)) { return; } StartPulseProfiling(); var wasTargetUnlocked = UnlockUnqueuedTargets(); if (wasTargetUnlocked) { EndPulseProfiling(); return; } WasTargetChangedThisFrame = false; //reset the modules dictionary _modulesBuilt = false; ModulesOnEntity.Clear(); _queueTargetsByEntityId.Clear(); if (_targetQueue.Targets.Count == 0) { _ship.DeactivateModuleList(_ship.SensorBoosterModules, true); EndPulseProfiling(); return; } //Activate sensor boosters _ship.ActivateModuleList(_ship.SensorBoosterModules, true); //TargetQueue.SortQueue(); //StartMethodProfiling("BuildE_QT_Dictionary"); foreach (QueueTarget queueTarget in _targetQueue.Targets) { _queueTargetsByEntityId.Add(queueTarget.Id, queueTarget); } //EndMethodProfiling(); //StartMethodProfiling("TargetNext"); if (_randomWait.ShouldWait()) { EndPulseProfiling(); return; } if (IsTargetJammed) { LogMessage(methodName, LogSeverityTypes.Standard, "Targeting jammed, not targeting"); _alerts.TargetJammed(); return; } ProcessTargetQueue(); //EndMethodProfiling(); EndPulseProfiling(); }