/// <summary> /// Restore the currently selected modules' models, and restore their current texture-set selection /// Removes any existing models from special-named root transforms with no attempt at re-use /// </summary> private void restoreModels() { topDockModule.setupModel(getTopDockRoot(true), ModelOrientation.TOP); topModule.setupModel(getTopRoot(true), ModelOrientation.TOP); coreModule.setupModel(getCoreRoot(false), ModelOrientation.CENTRAL, true);//setup model on prefab part and don't touch it after that bottomModule.setupModel(getBottomRoot(true), ModelOrientation.BOTTOM); bottomDockModule.setupModel(getBottomDockRoot(true), ModelOrientation.BOTTOM); solarModule.enable(getSolarRoot(true), 0); topModule.enableTextureSet(currentTopTexture); coreModule.enableTextureSet(currentCoreTexture); bottomModule.enableTextureSet(currentBottomTexture); //control transforms need to exist during part initialization //else things will explode if one of those transforms is the reference transform when a vessel is reloaded //so create them on prefab and restore on other instances if (!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight) { Transform modelRoot = part.transform.FindRecursive("model"); topDockTransform = new GameObject(topDockName).transform; topDockTransform.NestToParent(modelRoot); topDockTransform.Rotate(-90, 0, 0, Space.Self); topControlTransform = new GameObject(topDockName + "Control").transform; topControlTransform.NestToParent(modelRoot); bottomDockTransform = new GameObject(bottomDockName).transform; bottomDockTransform.NestToParent(modelRoot); bottomDockTransform.Rotate(90, 0, 0, Space.Self); bottomControlTransform = new GameObject(bottomDockName + "Control").transform; bottomControlTransform.NestToParent(modelRoot); bottomControlTransform.Rotate(180, 0, 0, Space.Self); } else { topDockTransform = part.transform.FindRecursive(topDockName); topControlTransform = part.transform.FindRecursive(topDockName + "Control"); bottomDockTransform = part.transform.FindRecursive(bottomDockName); bottomControlTransform = part.transform.FindRecursive(bottomDockName + "Control"); } SSTUStockInterop.updatePartHighlighting(part); }
private void setSolarEditor(string newSolar, bool updateSymmetry) { currentSolar = newSolar; solarModule.disable(); solarModule = Array.Find(solarModules, m => m.name == currentSolar);//TODO cleanup solarModule.enable(getSolarRoot(false), coreModule.currentVerticalPosition); updateSolarModules(); updateCost(); updateMass(); updateDragCubes(); updateGUI(); SSTUStockInterop.fireEditorUpdate();//update editor for mass/cost values if (updateSymmetry) { foreach (Part p in part.symmetryCounterparts) { p.GetComponent <SSTUModularStationCore>().setSolarEditor(newSolar, false); } } }
private void setSolarEditor(string newSolar, bool updateSymmetry) { currentSolar = newSolar; solarModule.disable(); solarModule = Array.Find(solarModules, m => m.name == currentSolar);//TODO cleanup solarModule.enable(getSolarRoot(false), coreModule.currentVerticalPosition); updateSolarModules(); updateCost(); updateMass(); updateDragCubes(); updateGUI(); SSTUStockInterop.fireEditorUpdate();//update editor for mass/cost values if (updateSymmetry) { foreach (Part p in part.symmetryCounterparts) { p.GetComponent<SSTUModularStationCore>().setSolarEditor(newSolar, false); } } }