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); } }