Beispiel #1
0
        private void ConnectToBeamGenerator()
        {
            try
            {
                // connect with bbeam gnerators
                beamGenerators = part.FindModulesImplementing <BeamGenerator>().Where(m => (m.beamType & compatibleBeamTypes) == m.beamType).ToList();

                if (beamGenerators.Count == 0 && part.parent != null)
                {
                    beamGenerators.AddRange(part.parent.FindModulesImplementing <BeamGenerator>().Where(m => (m.beamType & compatibleBeamTypes) == m.beamType));
                }

                if (beamGenerators.Count == 0)
                {
                    var attachedParts = part.attachNodes
                                        .Where(m => m.attachedPart != null)
                                        .Select(m => m.attachedPart)
                                        .SelectMany(m => m.FindModulesImplementing <BeamGenerator>())
                                        .Where(m => (m.beamType & compatibleBeamTypes) == m.beamType);

                    beamGenerators.AddRange(attachedParts);
                }

                activeBeamGenerator = beamGenerators.FirstOrDefault();

                if (activeBeamGenerator != null && activeBeamGenerator.part != this.part)
                {
                    activeBeamGenerator.UpdateMass(this.maximumPower);
                }
            }
            catch (Exception ex)
            {
                Debug.LogError("[KSPI] Microwave Transmitter OnStart search for beamGenerator: " + ex);
            }
        }