Fix heat capacity scaling (#22464)

* Correctly apply HeatScale

* Apply HeatScale on InitializeGases()

* Re-add conservative heat scaling and speedup
This commit is contained in:
Kevin Zheng
2023-12-13 18:38:58 -08:00
committed by GitHub
parent 500675ba8a
commit 24629ad487
3 changed files with 5 additions and 5 deletions

View File

@@ -52,7 +52,7 @@ namespace Content.Server.Atmos.EntitySystems
_cfg.OnValueChanged(CCVars.AtmosMaxProcessTime, value => AtmosMaxProcessTime = value, true); _cfg.OnValueChanged(CCVars.AtmosMaxProcessTime, value => AtmosMaxProcessTime = value, true);
_cfg.OnValueChanged(CCVars.AtmosTickRate, value => AtmosTickRate = value, true); _cfg.OnValueChanged(CCVars.AtmosTickRate, value => AtmosTickRate = value, true);
_cfg.OnValueChanged(CCVars.AtmosSpeedup, value => Speedup = value, true); _cfg.OnValueChanged(CCVars.AtmosSpeedup, value => Speedup = value, true);
_cfg.OnValueChanged(CCVars.AtmosHeatScale, value => HeatScale = value, true); _cfg.OnValueChanged(CCVars.AtmosHeatScale, value => { HeatScale = value; InitializeGases(); }, true);
_cfg.OnValueChanged(CCVars.ExcitedGroups, value => ExcitedGroups = value, true); _cfg.OnValueChanged(CCVars.ExcitedGroups, value => ExcitedGroups = value, true);
_cfg.OnValueChanged(CCVars.ExcitedGroupsSpaceIsAllConsuming, value => ExcitedGroupsSpaceIsAllConsuming = value, true); _cfg.OnValueChanged(CCVars.ExcitedGroupsSpaceIsAllConsuming, value => ExcitedGroupsSpaceIsAllConsuming = value, true);
} }

View File

@@ -35,7 +35,7 @@ namespace Content.Server.Atmos.EntitySystems
for (var i = 0; i < GasPrototypes.Length; i++) for (var i = 0; i < GasPrototypes.Length; i++)
{ {
_gasSpecificHeats[i] = GasPrototypes[i].SpecificHeat; _gasSpecificHeats[i] = GasPrototypes[i].SpecificHeat / HeatScale;
GasReagents[i] = GasPrototypes[i].Reagent; GasReagents[i] = GasPrototypes[i].Reagent;
} }
} }
@@ -61,7 +61,7 @@ namespace Content.Server.Atmos.EntitySystems
NumericsHelpers.Multiply(moles, GasSpecificHeats, tmp); NumericsHelpers.Multiply(moles, GasSpecificHeats, tmp);
// Adjust heat capacity by speedup, because this is primarily what // Adjust heat capacity by speedup, because this is primarily what
// determines how quickly gases heat up/cool. // determines how quickly gases heat up/cool.
return MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity) / HeatScale; return MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity);
} }
/// <summary> /// <summary>

View File

@@ -1053,14 +1053,14 @@ namespace Content.Shared.CCVar
/// in-game. /// in-game.
/// </summary> /// </summary>
public static readonly CVarDef<float> AtmosSpeedup = public static readonly CVarDef<float> AtmosSpeedup =
CVarDef.Create("atmos.speedup", 1f, CVar.SERVERONLY); CVarDef.Create("atmos.speedup", 8f, CVar.SERVERONLY);
/// <summary> /// <summary>
/// Like atmos.speedup, but only for gas and reaction heat values. 64x means /// Like atmos.speedup, but only for gas and reaction heat values. 64x means
/// gases heat up and cool down 64x faster than real life. /// gases heat up and cool down 64x faster than real life.
/// </summary> /// </summary>
public static readonly CVarDef<float> AtmosHeatScale = public static readonly CVarDef<float> AtmosHeatScale =
CVarDef.Create("atmos.heat_scale", 1f, CVar.SERVERONLY); CVarDef.Create("atmos.heat_scale", 8f, CVar.SERVERONLY);
/* /*
* MIDI instruments * MIDI instruments