Пример #1
0
        void Detect()
        {
            if (wcTurrets != null)
            {
                threatsTemp.Clear();
                wcTurrets.GetSortedThreats(Me, threatsTemp);
                if (threatsTemp.Count > 0)
                {
                    SetEnemy(threatsTemp.Keys.First());
                    return;
                }
            }
            else if (turrets.Count == 0)
            {
                Stop();
                throw new Exception("No turrets remain for detection.");
            }

            foreach (IMyLargeTurretBase t in turrets)
            {
                if (t.HasTarget)
                {
                    SetEnemy(t.GetTargetedEntity());
                    return;
                }
            }
            detected = false;
        }
Пример #2
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)}");
                    }
                }
            }