Esempio n. 1
0
 /// <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();
 }
Esempio n. 2
0
        /// <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);
        }