public void Main(string argument, UpdateType updateType) { string tag1 = "pack"; string tag2 = "pack2"; string messageOut1 = antenna.GetPosition().ToString(); string messageOut2 = controller.GetShipVelocities().LinearVelocity.ToString(); Echo(messageOut2); IGC.SendBroadcastMessage(tag1, messageOut1, TransmissionDistance.TransmissionDistanceMax); IGC.RegisterBroadcastListener(tag1); IGC.SendBroadcastMessage(tag2, messageOut2, TransmissionDistance.TransmissionDistanceMax); IGC.RegisterBroadcastListener(tag2); }
static void CalculateAntennaRecievers(this IMyRadioAntenna antenna, IMyRadioAntenna source, HashSet <IMyEntity> alreadyChecked, HashSet <IMyEntity> result, bool allowEnemy) { if (!antenna.IsWorking || !antenna.IsBroadcasting) { return; } var sp = new BoundingSphereD(antenna.GetPosition(), antenna.Radius); var entities = MyAPIGateway.Entities.GetEntitiesInSphere(ref sp); var lst = new List <IMySlimBlock>(); foreach (var ent in entities) { if (!alreadyChecked.Add(ent)) { continue; } ; if (ent is IMyCharacter) { if (!allowEnemy) { var pl = MyAPIGateway.Players.GetPlayerControllingEntity(ent); if (pl != null && source.GetUserRelationToOwner(pl.IdentityId) != MyRelationsBetweenPlayerAndBlock.Enemies) { result.Add(ent); } } else { result.Add(ent); } } else { var grid = ent as IMyCubeGrid; if (grid != null) { lst.Clear(); grid.GetBlocks(lst, b => b.FatBlock is IMyRadioAntenna); foreach (var ant in lst.Select(c => c.FatBlock as IMyRadioAntenna)) { ant.CalculateAntennaRecievers(source, alreadyChecked, result, allowEnemy); } } } } }
bool CheckBlockForSuppression(IMyFunctionalBlock block) { if (block == null || !IsWorking || !Antenna.IsBroadcasting) { return(false); } if (AffectBlocksAttachedToOwnGrid) { if (Antenna.SlimBlock.CubeGrid.IsSameConstructAs(block.SlimBlock.CubeGrid)) { return(false); } } return(Vector3D.Distance(Antenna.GetPosition(), block.GetPosition()) < Antenna.Radius); }
public Vector3D FindPosition() { IMyRadioAntenna Antenna = FindAntennaBlock(); return(Antenna.GetPosition()); }