private void initialize() { if (initialized) { return; } initialized = true; recolorHandler = new RecoloringHandler(Fields[nameof(customColorData)]); ConfigNode node = SSTUConfigNodeUtils.parseConfigNode(configNodeData); ConfigNode[] textureNodes = node.GetNodes("TEXTURESET"); string[] names = TextureSet.getTextureSetNames(textureNodes); string[] titles = TextureSet.getTextureSetTitles(textureNodes); TextureSet currentTextureSetData = KSPShaderLoader.getTextureSet(currentTextureSet); if (currentTextureSetData == null) { currentTextureSet = names[0]; currentTextureSetData = KSPShaderLoader.getTextureSet(currentTextureSet); initializedColors = false; } if (!initializedColors) { initializedColors = true; recolorHandler.setColorData(currentTextureSetData.maskColors); } this.updateUIChooseOptionControl("currentTextureSet", names, titles, true, currentTextureSet); Fields[nameof(currentTextureSet)].guiActiveEditor = textureNodes.Length > 1; fairingMaterial = currentTextureSetData.textureData[0].createMaterial("SSTUFairingMaterial"); fuelType = VolumeContainerLoader.getPreset(fuelPreset); Transform modelBase = part.transform.FindRecursive("model"); setupEngineModels(modelBase); minHeight = engineHeight * getEngineScale(); Transform root = modelBase.FindOrCreate(baseTransformName); Transform collider = modelBase.FindOrCreate("InterstageFairingBaseCollider"); fairingBase = new InterstageDecouplerModel(root.gameObject, collider.gameObject, 0.25f, cylinderSides, numberOfPanels, wallThickness); updateEditorFields(); buildFairing(); updateTextureSet(false); updateNodePositions(false); if (!initializedResources && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)) { initializedResources = true; updateResources(); } updatePartMass(); updateEngineThrust(); }
private void initialize() { if (initialized) { return; } initialized = true; ConfigNode node = SSTUConfigNodeUtils.parseConfigNode(configNodeData); ConfigNode[] textureNodes = node.GetNodes("TEXTURESET"); textureSetData = TextureSet.loadTextureSets(textureNodes); currentTextureSetData = Array.Find(textureSetData, m => m.setName == currentTextureSet); if (currentTextureSetData == null) { currentTextureSetData = textureSetData[0]; currentTextureSet = currentTextureSetData.setName; } int len = textureSetData.Length; string[] textureSetNames = new string[len]; for (int i = 0; i < len; i++) { textureSetNames[i] = textureSetData[i].setName; } this.updateUIChooseOptionControl("currentTextureSet", textureSetNames, textureSetNames, true, currentTextureSet); TextureData data = currentTextureSetData.textureDatas[0]; fairingMaterial = SSTUUtils.loadMaterial(data.diffuseTextureName, null, "KSP/Specular"); fuelType = VolumeContainerLoader.getPreset(fuelPreset); Transform modelBase = part.transform.FindRecursive("model"); setupEngineModels(modelBase); minHeight = engineHeight * getEngineScale(); Transform root = modelBase.FindOrCreate(baseTransformName); Transform collider = modelBase.FindOrCreate("InterstageFairingBaseCollider"); fairingBase = new InterstageDecouplerModel(root.gameObject, collider.gameObject, 0.25f, cylinderSides, numberOfPanels, wallThickness); updateEditorFields(); buildFairing(); updateNodePositions(false); if (!initializedResources && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)) { initializedResources = true; updateResources(); } updatePartMass(); updateEngineThrust(); }
public override void OnStart(StartState state) { base.OnStart(state); ConfigNode node = SSTUConfigNodeUtils.parseConfigNode(configNodeData); fuelType = VolumeContainerLoader.getPreset(fuelPreset); this.updateUIFloatEditControl("height", minHeight, maxHeight, heightIncrement * 2, heightIncrement, heightIncrement * 0.05f, true, height); this.updateUIFloatEditControl("diameter", minDiameter, maxDiameter, diameterIncrement * 2, diameterIncrement, diameterIncrement * 0.05f, true, diameter); locateTransforms(); updateModelScales(); updateModelPositions(); updateAttachNodes(false); //can just check if part has -any- resources? if it does, then don't touch it... if it does not, then put some there (as long as it is not the prefab...) if (!initializedResources && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)) { initializedResources = true; updatePartResources(); } updateEditorFields(); Fields["height"].uiControlEditor.onFieldChanged = onHeightUpdated; Fields["diameter"].uiControlEditor.onFieldChanged = onDiameterUpdated; }