public void UpdateThreatsFromWC(long currentTime) { trackPanel?.Reset(); sitconPanel?.Reset(); foreach (var threatInfo in CurrentThreats) { threatInfo.Value.CurrentlyDetected = false; } threatsFromApi.Clear(); api.GetSortedThreats(me, threatsFromApi); foreach (var threat in threatsFromApi.Keys) { if (!CurrentThreats.ContainsKey(threat.EntityId)) { CurrentThreats.Add(threat.EntityId, new ThreatInfo(accelerationFilterCoeff)); } ThreatInfo threatInfo = CurrentThreats[threat.EntityId]; threatInfo.Update(threat, currentTime); sitconPanel?.WriteLine($"{threat.Name}: {Math.Round(threatInfo.DetectedInfo.Position.X, 2)}, {Math.Round(threatInfo.DetectedInfo.Position.Y, 2)}, {Math.Round(threatInfo.DetectedInfo.Position.Z, 2)}"); if (trackPanel != null && threat.EntityId == TrackedThreat) { trackPanel?.WriteLine($"Name: {threatInfo.DetectedInfo.Name}"); trackPanel?.WriteLine($"Pos: {Math.Round(threatInfo.DetectedInfo.Position.X, 2)}, {Math.Round(threatInfo.DetectedInfo.Position.Y, 2)}, {Math.Round(threatInfo.DetectedInfo.Position.Z, 2)}"); trackPanel?.WriteLine($"Vel: {Math.Round(threatInfo.DetectedInfo.Velocity.X, 2)}, {Math.Round(threatInfo.DetectedInfo.Velocity.Y, 2)}, {Math.Round(threatInfo.DetectedInfo.Velocity.Z, 2)}"); trackPanel?.WriteLine($"Acc: {Math.Round(threatInfo.EstimatedAcceleration.X, 2)}, {Math.Round(threatInfo.EstimatedAcceleration.Y, 2)}, {Math.Round(threatInfo.EstimatedAcceleration.Z, 2)}"); } } }
private static void AddBonusThreatInfo <T>(ThreatInfo <T> threatInfo, InternalThreat newThreat) where T : Threat { if (threatInfo.BonusExternalThreatInfo != null) { AddBonusThreatInfo(threatInfo.BonusExternalThreatInfo, newThreat); } else if (threatInfo.BonusInternalThreatInfo != null) { AddBonusThreatInfo(threatInfo.BonusInternalThreatInfo, newThreat); } else { threatInfo.BonusInternalThreatInfo = new ThreatInfo <InternalThreat> { Threat = newThreat } }; }
private static void InitializeBonusThreats <T>(ThreatInfo <T> threatInfo) where T : Threat { if (threatInfo == null) { throw new InvalidOperationException("Missing extra threat."); } if (threatInfo.Threat.NeedsBonusInternalThreat) { InitializeBonusThreats(threatInfo.BonusInternalThreatInfo); ((IThreatWithBonusThreat <InternalThreat>)threatInfo.Threat).BonusThreat = threatInfo.BonusInternalThreatInfo.Threat; } if (threatInfo.Threat.NeedsBonusExternalThreat) { InitializeBonusThreats(threatInfo.BonusExternalThreatInfo); ((IThreatWithBonusThreat <ExternalThreat>)threatInfo.Threat).BonusThreat = threatInfo.BonusExternalThreatInfo.Threat; } }