Пример #1
0
 internal void ModelChangedHandler(bool pushNodes)
 {
     if (validateNose || validateMount)
     {
         ValidateModules();
     }
     ValidateLength();
     UpdateModulePositions();
     UpdateTankVolume(lengthWidth);
     UpdateDimensions();
     UpdateModelMeshes();
     UpdateAttachNodes(pushNodes);
     UpdateAvailableVariants();
     //UpdateFairing(true);
     UpdateDragCubes();
     if (scaleMass)
     {
         UpdateMass();
     }
     if (scaleCost)
     {
         UpdateCost();
     }
     ROLStockInterop.UpdatePartHighlighting(part);
     if (HighLogic.LoadedSceneIsEditor)
     {
         GameEvents.onEditorShipModified.Fire(EditorLogic.fetch.ship);
     }
 }
Пример #2
0
 internal void ModelChangedHandler(bool pushNodes)
 {
     stl         = SolarTechLimit.GetTechLevel(techLevel);
     retractable = stl.retractable && solarPanelType != "static";
     UpdateModulePositions();
     startFSM();
     UpdateAttachNodes(pushNodes);
     UpdateAvailableVariants();
     UpdateDragCubes();
     UpdateMassAndCost();
     RecalculateStats();
     ROLStockInterop.UpdatePartHighlighting(part);
     if (HighLogic.LoadedSceneIsEditor)
     {
         ROLStockInterop.FireEditorUpdate();
     }
 }
Пример #3
0
 /// <summary>
 /// Updates part highlight renderer list, sends message to ModuleROTFlagDecal to update its renderer,
 ///  sends message to FAR to update voxels, or if createDefaultCube==true will re-render the 'default' stock drag cube for the part<para/>
 /// Should be called anytime the model geometry in a part is changed -- either models added/deleted, procedural meshes updated.  Other methods exist for pure drag-cube updating in ROLStockInterop.
 /// </summary>
 /// <param name="part"></param>
 /// <param name="createDefaultCube"></param>
 public static void OnPartGeometryUpdate(Part part, bool createDefaultCube)
 {
     if (!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight)
     {
         return;
     }                                                                                //noop on prefabs
     ROLStockInterop.UpdatePartHighlighting(part);
     part.airlock = LocateAirlock(part);
     PartGeometryUpdate(part);
     if (createDefaultCube && (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight))
     {
         ROLStockInterop.UpdatePartDragCube(part);
     }
     if (IsFARInstalled())
     {
         part.SendMessage("GeometryPartModuleRebuildMeshData");
     }
     if (HighLogic.LoadedSceneIsEditor && part.parent == null && part != EditorLogic.RootPart) //likely the part under the cursor; this fixes problems with modular parts not wanting to attach to stuff
     {
         part.gameObject.SetLayerRecursive(1, 2097152);                                        //1<<21 = Part Triggers get skipped by the relayering (hatches, ladders, ??)
     }
 }