protected override void on_rescale(ModulePair <ModuleResourceHarvester> mp, Scale scale) { mp.module.Efficiency = mp.base_module.Efficiency * scale; var def_ratios = mp.base_module.inputList.ToDictionary(r => r.ResourceName); mp.module.inputList.ForEach(r => r.Ratio = def_ratios[r.ResourceName].Ratio * scale); }
protected override void on_rescale(ModulePair <OrbitalAccelerator> mp, Scale scale) { mp.module.SegmentMass = mp.base_module.SegmentMass * scale.absolute.volume; mp.module.ScaffoldDeployTime = mp.base_module.ScaffoldDeployTime * scale.absolute.volume; mp.module.UpdateParams(); mp.module.UpdateSegmentCost(); }
protected override void on_rescale(ModulePair <ModuleGenerator> mp, Scale scale) { var input_resources = mp.base_module.resHandler.inputResources.ToDictionary(r => r.name); var output_resources = mp.base_module.resHandler.inputResources.ToDictionary(r => r.name); mp.module.resHandler.inputResources.ForEach(r => r.rate = input_resources[r.name].rate * scale.absolute.volume); mp.module.resHandler.inputResources.ForEach(r => r.rate = output_resources[r.name].rate * scale.absolute.volume); }
protected override void on_rescale(ModulePair <HangarPassage> mp, Scale scale) { mp.module.Setup(!scale.FirstTime); foreach (var key in new List <string>(mp.module.Nodes.Keys)) { mp.module.Nodes[key].Size = Vector3.Scale(mp.base_module.Nodes[key].Size, new Vector3(scale, scale, 1)); } }
protected override void on_rescale(ModulePair <ModuleReactionWheel> mp, Scale scale) { mp.module.PitchTorque = mp.base_module.PitchTorque * scale.absolute.quad * scale.absolute.aspect; mp.module.YawTorque = mp.base_module.YawTorque * scale.absolute.quad * scale.absolute.aspect; mp.module.RollTorque = mp.base_module.RollTorque * scale.absolute.quad * scale.absolute.aspect; var input_resources = mp.base_module.resHandler.inputResources.ToDictionary(r => r.name); mp.module.resHandler.inputResources.ForEach(r => r.rate = input_resources[r.name].rate * scale.absolute.quad * scale.absolute.aspect); }
protected override void on_rescale(ModulePair <SingleUseGrappleNode> mp, Scale scale) { var linear = scale.absolute * scale.absolute.aspect; mp.module.GrappleEnergyConsumption = mp.base_module.GrappleEnergyConsumption * linear; mp.module.GrappleForce = mp.base_module.GrappleForce * linear; mp.module.GrappleRange = mp.base_module.GrappleRange * linear; mp.module.DockRange = mp.base_module.DockRange * linear; }
protected override void on_rescale(ModulePair <HangarGenericInflatable> mp, Scale scale) { mp.module.InflatableVolume = mp.base_module.InflatableVolume * scale.absolute.volume; mp.module.CompressedGas *= scale.relative.volume; if (mp.module.Compressor.Valid) { mp.module.Compressor.ConsumptionRate = mp.base_module.Compressor.ConsumptionRate * scale.absolute.volume; } }
protected override void on_rescale(ModulePair <MultiGeometryAnimator> mp, Scale scale) { mp.module.EnergyConsumption = mp.base_module.EnergyConsumption * scale.absolute.quad * scale.absolute.aspect; if (mp.module.CoMCurve != null) { mp.module.CoMCurve.Scale(scale.ScaleVectorRelative(Vector3d.one)); mp.module.UpdateCoMOffset(); } }
protected override void on_rescale(ModulePair <HangarFairings> mp, Scale scale) { mp.module.JettisonForce = mp.base_module.JettisonForce * scale.absolute.volume; mp.module.FairingsCost = mp.base_module.FairingsCost * scale.absolute.volume; mp.module.UpdateBaseCoMOffset(scale.ScaleVector(mp.base_module.BaseCoMOffset)); if (HighLogic.LoadedSceneIsEditor) { mp.module.ResetPayloadResources(); } }
protected override void on_rescale(ModulePair <ModuleDockingNode> mp, Scale scale) { AttachNode node = part.FindAttachNode(mp.module.referenceAttachNode); if (node == null) { return; } if (mp.module.nodeType.StartsWith("size")) { mp.module.nodeType = string.Format("size{0}", node.size); } }
protected override void on_rescale(ModulePair <ModuleJettison> mp, Scale scale) { mp.module.jettisonedObjectMass = mp.base_module.jettisonedObjectMass * scale.absolute.volume; mp.module.jettisonForce = mp.base_module.jettisonForce * scale.absolute.volume; if (mp.module.jettisonTransform != null) { var p = mp.module.jettisonTransform.parent.gameObject.GetComponent <Part>(); if (p == null || p == mp.module.part) { return; } object orig_scale; if (!mp.orig_data.TryGetValue("local_scale", out orig_scale) || !(orig_scale is Vector3)) { return; } mp.module.jettisonTransform.localScale = scale.ScaleVector((Vector3)orig_scale); } }
protected override void on_rescale(ModulePair <ModuleTankManager> mp, Scale scale) { mp.module.Rescale(scale.relative.volume); }
protected override void on_rescale(ModulePair <ModuleControlSurface> mp, Scale scale) { mp.module.ctrlSurfaceArea = mp.base_module.ctrlSurfaceArea * scale.absolute.quad; }
protected override void on_rescale(ModulePair <ModuleResourceIntake> mp, Scale scale) { mp.module.area = mp.base_module.area * scale.absolute.quad; }
protected override void on_rescale(ModulePair <ModuleDecouple> mp, Scale scale) { mp.module.ejectionForce = mp.base_module.ejectionForce * scale.absolute.cube; }
protected override void on_rescale(ModulePair <ModuleEngines> mp, Scale scale) { mp.module.minThrust = mp.base_module.minThrust * scale.absolute.quad; mp.module.maxThrust = mp.base_module.maxThrust * scale.absolute.quad; // mp.module.heatProduction = mp.base_module.heatProduction * scale.absolute; }
protected override void on_rescale(ModulePair <ModuleResourceConverter> mp, Scale scale) { scale_res_list(mp.module.Recipe.Inputs, mp.base_module.Recipe.Inputs, scale); scale_res_list(mp.module.Recipe.Outputs, mp.base_module.Recipe.Outputs, scale); scale_res_list(mp.module.Recipe.Requirements, mp.base_module.Recipe.Requirements, scale); }
protected override void on_rescale(ModulePair <ModuleDeployableSolarPanel> mp, Scale scale) { mp.module.chargeRate = mp.base_module.chargeRate * scale.absolute.quad * scale.absolute.aspect; mp.module.flowRate = mp.base_module.flowRate * scale.absolute.quad * scale.absolute.aspect; }
protected override void on_rescale(ModulePair <ModuleAsteroidDrill> mp, Scale scale) { mp.module.PowerConsumption = mp.base_module.PowerConsumption * scale; mp.module.Efficiency = mp.base_module.Efficiency * scale; }
protected override void on_rescale(ModulePair <MultiAnimator> mp, Scale scale) { mp.module.EnergyConsumption = mp.base_module.EnergyConsumption * scale.absolute.quad * scale.absolute.aspect; }
protected override void on_rescale(ModulePair <MultiLights> mp, Scale scale) { mp.module.RangeMultiplier = mp.base_module.RangeMultiplier * scale; mp.module.UpdateLights(); }
protected override void on_rescale(ModulePair <ModuleSwitchableTank> mp, Scale scale) { mp.module.SetVolume(mp.module.Volume * scale.relative.volume); }
protected override void on_rescale(ModulePair <AnimatedConverterBase> mp, Scale scale) { mp.module.SetRatesMultiplier(mp.base_module.RatesMultiplier * scale.absolute.volume); }
protected override void on_rescale(ModulePair <ModuleRCS> mp, Scale scale) { mp.module.thrusterPower = mp.base_module.thrusterPower * scale.absolute.quad; }
protected abstract void on_rescale(ModulePair <T> mp, Scale scale);