/// <summary> /// Updates the current intertank mesh/model from user input /// </summary> /// <param name="newDef"></param> private void updateIntertankModelFromEditor(SSTUCustomUpperStageIntertank newDef) { removeCurrentModel(currentIntertankModule); currentIntertankModule = newDef; currentIntertank = newDef.name; setupModel(currentIntertankModule, part.transform.FindRecursive("model").FindOrCreate(baseTransformName)); updateModules(true); updateModels(); updateTankStats(); updatePartResources(); updateGuiState(); }
/// <summary> /// Loads all of the part definitions and values from the stashed config node data /// </summary> private void loadConfigData() { ConfigNode node = SSTUNodeUtils.parseConfigNode(configNodeData); fuelTypes = FuelTypeData.parseFuelTypeData(node.GetNodes("FUELTYPE")); currentFuelTypeData = Array.Find(fuelTypes, l => l.name == currentFuelType); if (currentFuelTypeData == null) { MonoBehaviour.print("ERROR: Could not locate fuel type for: " + currentFuelType + ". reverting to default fuel type of: " + defaultFuelType); currentFuelType = defaultFuelType; currentFuelTypeData = Array.Find(fuelTypes, l => l.name == currentFuelType); initializedResources = false; } reserveFuelTypeData = FuelTypes.INSTANCE.getFuelTypeData(reserveFuelType); //mandatory nodes, -all- tank types must have these ConfigNode tankUpperNode = node.GetNode("TANKUPPER"); ConfigNode upperTopCapNode = node.GetNode("TANKUPPERTOPCAP"); ConfigNode upperBottomCapNode = node.GetNode("TANKUPPERBOTTOMCAP"); ConfigNode[] limitNodes = node.GetNodes("TECHLIMIT"); ConfigNode rcsNode = node.GetNode("RCS"); ConfigNode[] mountNodes = node.GetNodes("MOUNT"); upperModule = new SSTUCustomUpperStagePart(tankUpperNode); upperTopCapModule = new SSTUCustomUpperStageTopCap(upperTopCapNode); upperBottomCapModule = new SSTUCustomUpperStagePart(upperBottomCapNode); rcsModule = new SSTUCustomUpperStageRCS(rcsNode); //load mount configs int len = mountNodes.Length; mountModules = new MountModelData[len]; for (int i = 0; i < len; i++) { mountModules[i] = new MountModelData(mountNodes[i], false); } currentMountModule = Array.Find(mountModules, l => l.name == currentMount); if (splitTank) { //fields that are only populated by split-tank type upper-stages ConfigNode tankLowerNode = node.GetNode("TANKLOWER"); ConfigNode lowerBottomCapNode = node.GetNode("TANKLOWERBOTTOMCAP"); ConfigNode[] intertankNodes = node.GetNodes("INTERTANK"); lowerModule = new SSTUCustomUpperStagePart(tankLowerNode); lowerBottomCapModule = new SSTUCustomUpperStagePart(lowerBottomCapNode); //load intertank configs len = intertankNodes.Length; intertankModules = new SSTUCustomUpperStageIntertank[len]; for (int i = 0; i < len; i++) { intertankModules[i] = new SSTUCustomUpperStageIntertank(intertankNodes[i]); } currentIntertankModule = Array.Find(intertankModules, l => l.name == currentIntertank); } len = limitNodes.Length; techLimits = new TechLimitHeightDiameter[len]; for (int i = 0; i < len; i++) { techLimits[i] = new TechLimitHeightDiameter(limitNodes[i]); } print("loaded config data, split tank: " + splitTank); }