protected override bool RecomputeOverriddenParameters(MyEntity thrustEntity, FuelTypeData fuelData) { var thruster = thrustEntity as MyThrust; if (thruster == null) return false; if (!IsOverridden(thruster)) return false; var thrustOverride = thruster.ThrustOverride * -thruster.ThrustForwardVector * CalculateForceMultiplier(thrustEntity, m_lastPlanetaryInfluence, m_lastPlanetaryInfluenceHasAtmosphere); var thrustOverridePower = thruster.ThrustOverride / thruster.ThrustForce.Length() * thruster.MaxPowerConsumption; if (fuelData.ThrustsByDirection[thruster.ThrustForwardVector].Contains(thrustEntity)) { fuelData.ThrustOverride += thrustOverride; fuelData.ThrustOverridePower += thrustOverridePower; } return true; }
public override void OnStart(StartState state) { base.OnStart(state); ConfigNode node = SSTUConfigNodeUtils.parseConfigNode(configNodeData); ConfigNode[] limitNodes = node.GetNodes("TECHLIMIT"); int len = limitNodes.Length; techLimits = new TechLimitHeightDiameter[len]; for (int i = 0; i < len; i++) { techLimits[i] = new TechLimitHeightDiameter(limitNodes[i]); } updateTechLimits(); if (radius * 2 > techLimitMaxDiameter) { radius = techLimitMaxDiameter * 0.5f; } if (height > techLimitMaxHeight) { height = techLimitMaxHeight; } fuelType = new FuelTypeData(node.GetNode("FUELTYPE")); GameEvents.onEditorShipModified.Add(new EventData<ShipConstruct>.OnEvent(onEditorVesselModified)); locateTransforms(); updateModelPositions(); updateModelScales(); if (!initializedResources && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)) { initializedResources = true; updatePartResources(); } updateEngineThrust(); restoreEditorFields(); }
protected override bool RecomputeOverriddenParameters(MyEntity thrustEntity, FuelTypeData fuelData) { return false; }
private void initialize() { if (initialized) { return; } initialized = true; fairingMaterial = SSTUUtils.loadMaterial(diffuseTextureName, String.Empty, "KSP/Specular"); ConfigNode node = SSTUConfigNodeUtils.parseConfigNode(configNodeData); techLimits = TechLimitHeightDiameter.loadTechLimits(node.GetNodes("TECHLIMIT")); outsideUV = new UVArea(node.GetNode("UVMAP", "name", "outside")); insideUV = new UVArea(node.GetNode("UVMAP", "name", "inside")); edgesUV = new UVArea(node.GetNode("UVMAP", "name", "edges")); updateTechLimits(); fuelType = new FuelTypeData(node.GetNode("FUELTYPE")); Transform modelBase = part.transform.FindRecursive("model"); setupEngineModels(modelBase); Transform root = modelBase.FindOrCreate(baseTransformName); Transform collider = modelBase.FindOrCreate("InterstageFairingBaseCollider"); fairingBase = new InterstageDecouplerModel(root.gameObject, collider.gameObject, 0.25f, cylinderSides, numberOfPanels, wallThickness); buildFairing(); updateNodePositions(false); updateEditorFields(); if (!initializedResources && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)) { initializedResources = true; updateResources(); } updatePartMass(); updateEngineThrust(); updateGuiFields(); }