protected void ScanGrid(RadarableGrid RGrid) { //if (DetectedEntities.Any(x => x.EntityId == RGrid.Grid.EntityId)) return; float Distance = this.DistanceTo(RGrid); if (Distance <= RadarCore.GuaranteedDetectionRange) { AddEntity(RGrid.Grid, RGrid.Position); return; } Vector3D?Hit; if (!DetectorModule.IsInView(RGrid.Grid, out Hit)) { RadarCore.DebugWrite($"{RadarBlock.CustomName}.ScanGrid({RGrid.DisplayName})", "discarded: invisible by ray", true); return; } RadarCore.DebugWrite($"{RadarBlock.CustomName}.ScanGrid({RGrid.DisplayName})", $"Grid rate={RGrid.ActiveDetectionRate}, rate/dist={Math.Round(MyRadarGrid.TotalRadarPower / Position.DistanceTo(RGrid.Position), 2)}", true); float RayPower = ActiveRadar ? PowerModule.EffectiveRadarPower : 800; if (RGrid.HasMarker && RGrid.MarkerRange >= Distance) { AddEntity(RGrid.Grid, null); return; } else if (DetectorModule.CanDetectUsingActiveRadar(RGrid) || DetectorModule.CanDetectByRadar(RGrid) || DetectorModule.CanDetectByHeat(RGrid) || DetectorModule.CanDetectByGravity(RGrid)) { AddEntity(RGrid.Grid, RGrid.Position); return; } }
protected void ScanEntity(IMyEntity Entity) { //if (DetectedEntities.Any(x => x.EntityId == Entity.EntityId)) return; float Distance = this.DistanceTo(Entity); Vector3D?Hit; if (!DetectorModule.IsInView(Entity, out Hit)) { return; } float RayPower = ActiveRadar ? PowerModule.EffectiveRadarPower : 800; if (Distance <= RadarCore.GuaranteedDetectionRange || RayPower >= Distance) { AddEntity(Entity, Hit); } }