public static GPSMarker Create(IMyEntity AttachTo, string Name, string Description, Color MarkerColor, long PlayerID) { if (AttachTo == null) { return(null); } GPSMarker Marker = new GPSMarker(); Marker.Name = Name; Marker.Description = Description; Marker.GPSColor = MarkerColor; Marker.OwnerPlayerID = PlayerID; AttachTo.EnsureName(); MyVisualScriptLogicProvider.AddGPSToEntity(AttachTo.Name, Name, Description, MarkerColor, PlayerID); Marker.Valid = true; return(Marker); }
public void AddGPSMarker(Ingame.MyDetectedEntityInfo RadarScan, string EntityName, bool DontAddIfDetectedByRadioMarker = true) { try { try { //RadarCore.DebugWrite($"{Radar.CustomName}", $"Trying to add marker for entity {RadarScan.Type.ToString()} {RadarScan.Name}"); if (Radar.OwnerID == 0) { return; } if (!Radar.HasOwnerInRelay) { return; } if (Radar.OwnerGPSes.Any(x => x.Description == $"RadarEntity {RadarScan.EntityId}")) { return; } if (Radar.OwnerEntity?.GetTopMostParent()?.EntityId == RadarScan.EntityId) { return; } if (Radar.MyRadarGrid.RelayedGrids.Any(x => x.EntityId == RadarScan.EntityId)) { return; } if (DontAddIfDetectedByRadioMarker && RadarScan.HitPosition == null) { return; } } catch (Exception Scrap) { RadarCore.LogError("Radar.AddGPSMarker.GetOwnerPlayer", Scrap); return; } if (RadarMarkers.ContainsKey(RadarScan.EntityId)) { return; } IMyEntity AttachTo = MyAPIGateway.Entities.GetEntityById(RadarScan.EntityId); if (AttachTo == null) { return; } StringBuilder MarkerName = new StringBuilder(); if (RadarScan.Type == Ingame.MyDetectedEntityType.Asteroid && EntityName == "Asteroid") { MarkerName.Append("[Asteroid]"); } else if (RadarScan.IsGrid() && (EntityName.StartsWith("Large Grid") || EntityName.StartsWith("Small Grid"))) { if (RadarScan.Type == Ingame.MyDetectedEntityType.LargeGrid) { MarkerName.Append("[Large Grid]"); } else { MarkerName.Append("[Small Grid]"); } } else { MarkerName.Append($"[{RadarScan.Type.ToString()}{(RadarScan.IsAllied() ? $" | {RadarScan.Name.Truncate(50)}" : $"{(!string.IsNullOrWhiteSpace(EntityName) ? " | " + EntityName.Truncate(50) : "")}")}]"); } GPSMarker Marker = GPSMarker.Create(AttachTo, MarkerName.ToString(), $"RadarEntity {RadarScan.EntityId}", RadarScan.GetRelationshipColor(), Radar.OwnerID); RadarMarkers.Add(RadarScan.EntityId, Marker); } catch (Exception Scrap) { RadarCore.LogError("Radar.AddGPSMarker", Scrap); } }