Exemplo n.º 1
0
        public Initializer()
        {
            // move radar blocks to radar resource group

            // first make sure radar group exists. If it does not, radar will stay in its original group.
            MyStringHash radar = MyStringHash.GetOrCompute("Radar");

            foreach (MyDefinitionBase radarGroupDefn in MyDefinitionManager.Static.GetAllDefinitions())
            {
                if (radarGroupDefn is MyResourceDistributionGroupDefinition && radarGroupDefn.Id.SubtypeId == radar)
                {
                    // find each radar block and move it to radar group
                    foreach (MyDefinitionBase radarBlockDefn in MyDefinitionManager.Static.GetAllDefinitions())
                    {
                        if (radarBlockDefn is MyCubeBlockDefinition &&
                            radarBlockDefn.Id.SubtypeName.ToLower().Contains("radar"))                             // RadarEquipment.IsRadarOrJammer
                        {
                            MyBeaconDefinition beaconDefn = radarBlockDefn as MyBeaconDefinition;
                            if (beaconDefn != null)
                            {
                                beaconDefn.ResourceSinkGroup = radar.ToString();
                                continue;
                            }
                            MyLaserAntennaDefinition lasAntDefn = radarBlockDefn as MyLaserAntennaDefinition;
                            if (lasAntDefn != null)
                            {
                                lasAntDefn.ResourceSinkGroup = radar;
                                continue;
                            }
                            MyRadioAntennaDefinition radAntDefn = radarBlockDefn as MyRadioAntennaDefinition;
                            if (radAntDefn != null)
                            {
                                radAntDefn.ResourceSinkGroup = radar;
                                continue;
                            }

                            // stop trying to guess what the radar block is made of
                        }
                    }

                    break;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Distance in meters, returns power in MW.
        /// </summary>
        public static float LaserAntenna_PowerUsage(MyLaserAntennaDefinition def, double distanceMeters)
        {
            // HACK copied and converted from MyLaserAntenna.UpdatePowerInput()

            double powerRatio = def.PowerInputLasing;
            double maxRange   = (def.MaxRange < 0 ? double.MaxValue : def.MaxRange);

            double A        = powerRatio / 2.0 / 200000.0;
            double B        = powerRatio * 200000.0 - A * 200000.0 * 200000.0;
            double distance = Math.Min(distanceMeters, maxRange);

            if (distance > 200000)
            {
                return((float)((distance * distance) * A + B) / 1000000f);
            }
            else
            {
                return((float)(powerRatio * distance) / 1000000f);
            }
        }