public override void OnLoad(ConfigNode node) { base.OnLoad(node); if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) { return; } foreach (ConfigNode node2 in node.GetNodes("MATERIAL")) { IEnumerable <Renderer> renderers = GetRenderers(node2); if (node2.GetValue("shader") is string newShaderName) { if (Shader.Find(newShaderName) is Shader newShader) { foreach (Renderer renderer in renderers) { renderer.material.shader = newShader; } } else { this.LogError($"Can't find shader {newShaderName}"); continue; } } MaterialModifierParser parser = new MaterialModifierParser(); foreach (ConfigNode node3 in node2.nodes) { IMaterialModifier modifier; try { modifier = parser.Parse(node3); } catch (Exception ex) { this.LogException($"cannot parse node as material modifier: \n{node3.ToString()}\n", ex); continue; } foreach (Renderer renderer in renderers) { modifier.Modify(renderer.material); } } } isEnabled = false; moduleIsEnabled = false; }
private IEnumerator WaitAndUpdateMaterials() { yield return(null); if (string.IsNullOrEmpty(serializedNode)) { this.LogError("Serialized node is null or empty!"); yield break; } ConfigNode node = ConfigNode.Parse(serializedNode).nodes[0]; ModuleProceduralFairing fairingModule = part.FindModuleImplementing <ModuleProceduralFairing>(); if (fairingModule == null) { this.LogError("No fairing module found on part!"); yield break; } MaterialModifierParser parser = new MaterialModifierParser(); foreach (ConfigNode node2 in node.nodes) { IMaterialModifier modifier; try { modifier = parser.Parse(node2); } catch (Exception ex) { this.LogException($"cannot parse node as material modifier: \n{node2.ToString()}\n", ex); continue; } modifier.Modify(fairingModule.FairingMaterial); modifier.Modify(fairingModule.FairingConeMaterial); modifier.Modify(fairingModule.FairingFlightMaterial); modifier.Modify(fairingModule.FairingFlightConeMaterial); foreach (ProceduralFairings.FairingPanel fairingPanel in fairingModule.Panels) { MeshRenderer renderer = fairingPanel.go.GetComponent <MeshRenderer>(); modifier.Modify(renderer.material); } } }