private TextureSet getSet(PartVariant variant) { string setName = variant.GetExtraInfoValue("textureSet"); TextureSet set = null; if (!string.IsNullOrEmpty(setName)) { set = TexturesUnlimitedLoader.getTextureSet(setName); textureSet = setName; modelShaderSet = string.Empty; return(set); } setName = variant.GetExtraInfoValue("modelShader"); if (!string.IsNullOrEmpty(setName)) { set = TexturesUnlimitedLoader.getModelShaderTextureSet(setName); modelShaderSet = setName; textureSet = string.Empty; return(set); } //if nothing found, clear out references if (TexturesUnlimitedLoader.logErrors || TexturesUnlimitedLoader.logAll) { MonoBehaviour.print("Could not load texture set for part variant: " + variant?.Name + " for part: " + part.name); } modelShaderSet = textureSet = string.Empty; return(null); }
private void ProcessModules(Part oPart, PartVariant oVariant) { string sValue; string sDebug = ""; sValue = oVariant.GetExtraInfoValue("AddModule1"); for (int i = 2; !string.IsNullOrEmpty(sValue); i++) { oPart.AddModule(sValue); sValue = oVariant.GetExtraInfoValue("AddModule" + i.ToString()); } List <string> oRemoveModuleList = new List <string>(); sValue = oVariant.GetExtraInfoValue("RemoveModule1"); for (int i = 2; !string.IsNullOrEmpty(sValue); i++) { oRemoveModuleList.Add(sValue); sValue = oVariant.GetExtraInfoValue("RemoveModule" + i.ToString()); } foreach (PartModule oModule in oPart.Modules) { if (Debug.developerConsoleVisible) { sDebug = "Module Fields [" + oModule.moduleName + "]:\r\n"; } foreach (BaseField oField in oModule.Fields) { if (Debug.developerConsoleVisible) { sDebug += oField.name + "\r\n"; } sValue = oVariant.GetExtraInfoValue(oModule.moduleName + "/" + oField.name); if (!string.IsNullOrEmpty(sValue)) { oField.SetValue(Convert.ChangeType(sValue, oField.FieldInfo.FieldType), oField.host); if (Debug.developerConsoleVisible) { sDebug += " Appled: " + oField.name + " = " + sValue + "\r\n"; } } } if (Debug.developerConsoleVisible) { Debug.Log(sDebug); } } }
static internal void GetExtraInfo(PartVariant variant, ref float segmentHeight, ref float segmentWidth) { string strSegmentHeight = variant.GetExtraInfoValue("segmentHeight"); string strSegmentWidth = variant.GetExtraInfoValue("segmentWidth"); if (string.IsNullOrEmpty(strSegmentHeight) || string.IsNullOrEmpty(strSegmentWidth)) { return; } segmentHeight = float.Parse(strSegmentHeight); segmentWidth = float.Parse(strSegmentWidth); }
private void ProcessBase(Part oPart, PartVariant oVariant) { string sDebug = ""; string sValue; if (IsDebug) { sDebug = "Base Part Fields [Part]:\r\n"; } foreach (BaseField oField in oPart.Fields) { if (IsDebug) { sDebug += oField.name + "\r\n"; } sValue = oVariant.GetExtraInfoValue("Part/" + oField.name); if (!string.IsNullOrEmpty(sValue)) { oField.SetValue(Convert.ChangeType(sValue, oField.FieldInfo.FieldType), oField.host); if (IsDebug) { sDebug += " Applied: " + oField.name + " = " + sValue + "\r\n"; } } } if (IsDebug) { Debug.Log(sDebug); } }
private void onVariantApplied(Part variantPart, PartVariant variant) { if (variantPart != part) { return; } if (string.IsNullOrEmpty(resourceName)) { return; } if (!part.Resources.Contains(resourceName)) { return; } string amountString = variant.GetExtraInfoValue(resourceName); if (string.IsNullOrEmpty(amountString)) { return; } double amount = 0; if (double.TryParse(amountString, out amount)) { part.Resources[resourceName].maxAmount = amount; if (!updateMaxOnly) { part.Resources[resourceName].amount = amount; } MonoUtilities.RefreshContextWindows(part); GameEvents.onPartResourceListChange.Fire(part); } }
private void onVariantApplied(Part variantPart, PartVariant variant) { if (!shouldRespondToAppliedVariant(variantPart, variant)) { return; } // If the variant has a meshSet that we recognize, then record it for later. string meshSet = variant.GetExtraInfoValue("meshSet"); if (!string.IsNullOrEmpty(meshSet) && !string.IsNullOrEmpty(meshSets) && meshSets.Contains(meshSet)) { currentMeshSet = meshSet; variantApplied = true; } // Re-apply the variant if we're on the updateVariantModuleIDs list. string updateVariants = variant.GetExtraInfoValue("updateVariantModuleIDs"); if (updateVariants.Contains(moduleID) && variantApplied) { applyVariant(variantIndex, true); } // Enable/disable the UI if we're on the list. string enabledVariants = variant.GetExtraInfoValue("enableVariantModuleIDs"); string disabledVariants = variant.GetExtraInfoValue("disableVariantModuleIDs"); if (enabledVariants.Contains(moduleID)) { Fields["variantIndex"].guiActive = allowFieldUpdate; Fields["variantIndex"].guiActiveEditor = true; } else if (disabledVariants.Contains(moduleID)) { Fields["variantIndex"].guiActive = false; Fields["variantIndex"].guiActiveEditor = false; } }
private void ProcessResources(Part oPart, PartVariant oVariant) { string sValue; double dValue; double dValue2; PartResource oResource; ConfigNode oConfigNode; foreach (PartResourceDefinition oResourceDef in PartResourceLibrary.Instance.resourceDefinitions) { sValue = oVariant.GetExtraInfoValue("Resource/" + oResourceDef.name); if (!string.IsNullOrEmpty(sValue)) { oResource = oPart.Resources[oResourceDef.name]; if (oResource != null) { if (sValue.ToLower() == "none") { oPart.RemoveResource(oResource); } else if (double.TryParse(sValue, out dValue)) { if (oResource.maxAmount == 0.0) { dValue2 = 0.0; } else { dValue2 = oResource.amount / oResource.maxAmount; } oResource.maxAmount = dValue; if (HighLogic.LoadedSceneIsEditor) { oResource.amount = dValue * dValue2; } } } else if (double.TryParse(sValue, out dValue)) { oConfigNode = new ConfigNode("RESOURCE"); oConfigNode.AddValue("name", oResourceDef.name); if (HighLogic.LoadedSceneIsEditor) { oConfigNode.AddValue("amount", dValue); } else { oConfigNode.AddValue("amount", 0.0); } oConfigNode.AddValue("maxAmount", dValue); oPart.AddResource(oConfigNode); } } } }