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);
        }
Beispiel #2
0
        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());
        }