//creates/recreates FairingData instances from data from config node and any persistent node (if applicable) private void loadFairingData(ConfigNode node) { ConfigNode[] fairingNodes = node.GetNodes("FAIRING"); fairingParts = new SSTUNodeFairingData[fairingNodes.Length]; Transform modelBase = part.transform.FindRecursive("model"); Transform parent; SSTUNodeFairing[] cs = part.GetComponents <SSTUNodeFairing>(); int l = Array.IndexOf(cs, this); int moduleIndex = l; for (int i = 0; i < fairingNodes.Length; i++) { parent = modelBase.FindOrCreate(fairingName + "-" + moduleIndex + "-" + i); fairingParts[i] = new SSTUNodeFairingData(); fairingParts[i].load(fairingNodes[i], parent.gameObject); if (fairingParts[i].canAdjustTop) { enableTopDiameterControls = true; } if (fairingParts[i].canAdjustBottom) { enableBottomDiameterControls = true; } } if (!String.IsNullOrEmpty(persistentDataString)) { String[] datas = SSTUUtils.parseCSV(persistentDataString, ":"); int length = datas.Length; for (int i = 0; i < length; i++) { fairingParts[i].loadPersistence(datas[i]); } } textureSets = TextureSet.loadTextureSets(node.GetNodes("TEXTURESET")); if (fairingMaterial != null) { Material.Destroy(fairingMaterial); fairingMaterial = null; } if (textureSets != null && !String.IsNullOrEmpty(currentTextureSet)) { TextureSet t = Array.Find(textureSets, m => m.setName == currentTextureSet); if (t != null) { TextureData d = t.textureDatas[0]; if (d != null) { diffuseTextureName = d.diffuseTextureName; normalTextureName = d.normalTextureName; } } } fairingMaterial = SSTUUtils.loadMaterial(diffuseTextureName, normalTextureName, "KSP/Bumped Specular"); }
//creates/recreates FairingData instances from data from config node and any persistent node (if applicable) private void loadFairingData(ConfigNode node) { ConfigNode[] fairingNodes = node.GetNodes("FAIRING"); fairingParts = new SSTUNodeFairingData[fairingNodes.Length]; Transform modelBase = part.transform.FindRecursive("model"); Transform parent; SSTUNodeFairing[] cs = part.GetComponents<SSTUNodeFairing>(); int l = Array.IndexOf(cs, this); int moduleIndex = l;// part.Modules.IndexOf(this); for (int i = 0; i < fairingNodes.Length; i++) { parent = modelBase.FindOrCreate(fairingName + "-" + moduleIndex + "-"+i); fairingParts[i] = new SSTUNodeFairingData(); fairingParts[i].load(fairingNodes[i], parent.gameObject); if (fairingParts[i].canAdjustTop) { canAdjustTopRadius = true; } if (fairingParts[i].canAdjustBottom) { canAdjustBottomRadius = true; } } if (!String.IsNullOrEmpty(persistentDataString)) { String[] datas = SSTUUtils.parseCSV(persistentDataString, ":"); int length = datas.Length; for (int i = 0; i < length; i++) { fairingParts[i].loadPersistence(datas[i]); } } textureSets = TextureSet.loadTextureSets(node.GetNodes("TEXTURESET")); }
//creates/recreates FairingData instances from data from config node and any persistent node (if applicable) private void loadFairingData(ConfigNode node) { recolorHandler = new RecoloringHandler(Fields[nameof(customColorData)]); ConfigNode[] fairingNodes = node.GetNodes("FAIRING"); fairingParts = new SSTUNodeFairingData[fairingNodes.Length]; Transform modelBase = part.transform.FindRecursive("model"); Transform parent; SSTUNodeFairing[] cs = part.GetComponents <SSTUNodeFairing>(); int l = Array.IndexOf(cs, this); int moduleIndex = l; for (int i = 0; i < fairingNodes.Length; i++) { parent = modelBase.FindOrCreate(fairingName + "-" + moduleIndex + "-" + i); fairingParts[i] = new SSTUNodeFairingData(); fairingParts[i].load(fairingNodes[i], parent.gameObject); if (fairingParts[i].canAdjustTop) { enableTopDiameterControls = true; if (guiTopDiameter < 0) { guiTopDiameter = fairingParts[i].topRadius * 2f; } else { fairingParts[i].topRadius = guiTopDiameter * 0.5f; } } if (fairingParts[i].canAdjustBottom) { enableBottomDiameterControls = true; if (guiBottomDiameter < 0) { guiBottomDiameter = fairingParts[i].bottomRadius * 2f; } else { fairingParts[i].bottomRadius = guiBottomDiameter * 0.5f; } } } //reload fairing data from persistence; //it -should- already match the guiTopDiameter/guiBottomDiameter (or else was already corrupted/invalid when saved out). if (!String.IsNullOrEmpty(persistentDataString)) { String[] datas = SSTUUtils.parseCSV(persistentDataString, ":"); int length = datas.Length; for (int i = 0; i < length; i++) { fairingParts[i].loadPersistence(datas[i]); } } ConfigNode[] textureNodes = node.GetNodes("TEXTURESET"); string[] names = TextureSet.getTextureSetNames(textureNodes); string[] titles = TextureSet.getTextureSetTitles(textureNodes); TextureSet t = KSPShaderLoader.getTextureSet(currentTextureSet); if (t == null) { currentTextureSet = names[0]; t = KSPShaderLoader.getTextureSet(currentTextureSet); initializedColors = false; } if (!initializedColors) { initializedColors = true; recolorHandler.setColorData(t.maskColors); } this.updateUIChooseOptionControl(nameof(currentTextureSet), names, titles, true, currentTextureSet); fairingMaterial = t.textureData[0].createMaterial("SSTUFairingMaterial"); }
//creates/recreates FairingData instances from data from config node and any persistent node (if applicable) private void loadFairingData(ConfigNode node) { ConfigNode[] fairingNodes = node.GetNodes("FAIRING"); fairingParts = new SSTUNodeFairingData[fairingNodes.Length]; Transform modelBase = part.transform.FindRecursive("model"); Transform parent; SSTUNodeFairing[] cs = part.GetComponents<SSTUNodeFairing>(); int l = Array.IndexOf(cs, this); int moduleIndex = l; for (int i = 0; i < fairingNodes.Length; i++) { parent = modelBase.FindOrCreate(fairingName + "-" + moduleIndex + "-"+i); fairingParts[i] = new SSTUNodeFairingData(); fairingParts[i].load(fairingNodes[i], parent.gameObject); if (fairingParts[i].canAdjustTop) { enableTopDiameterControls = true; } if (fairingParts[i].canAdjustBottom) { enableBottomDiameterControls = true; } } if (!String.IsNullOrEmpty(persistentDataString)) { String[] datas = SSTUUtils.parseCSV(persistentDataString, ":"); int length = datas.Length; for (int i = 0; i < length; i++) { fairingParts[i].loadPersistence(datas[i]); } } textureSets = TextureSet.loadTextureSets(node.GetNodes("TEXTURESET")); if (fairingMaterial != null) { Material.Destroy(fairingMaterial); fairingMaterial = null; } if (textureSets != null && !String.IsNullOrEmpty(currentTextureSet)) { TextureSet t = Array.Find(textureSets, m => m.setName == currentTextureSet); if (t != null) { TextureData d = t.textureDatas[0]; if (d != null) { diffuseTextureName = d.diffuseTextureName; normalTextureName = d.normalTextureName; } } } fairingMaterial = SSTUUtils.loadMaterial(diffuseTextureName, normalTextureName, "KSP/Bumped Specular"); }