Beispiel #1
0
            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;
     }
 }