From 6e55a7bac48d78617694ac2b470e8cedf3f99751 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Thu, 1 Jan 2026 04:05:09 -0800 Subject: [PATCH] Make some HeatContainerHelpers methods byref (#42197) * make some HeatContainerHelpers methods byref * all of them --- .../HeatContainerHelpers.Conduct.cs | 20 +++++++++---------- .../HeatContainerHelpers.Divide.cs | 3 +-- .../HeatContainerHelpers.Exchange.cs | 16 +++++++-------- .../HeatContainer/HeatContainerHelpers.cs | 6 +++--- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Conduct.cs b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Conduct.cs index deb705b8e2..c0de657fa9 100644 --- a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Conduct.cs +++ b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Conduct.cs @@ -26,7 +26,7 @@ public static partial class HeatContainerHelpers /// integration steps with adaptive step size. /// [PublicAPI] - public static float ConductHeat(this HeatContainer c, float temp, float deltaTime, float g) + public static float ConductHeat(this ref HeatContainer c, float temp, float deltaTime, float g) { var dQ = c.ConductHeatQuery(temp, deltaTime, g); c.AddHeat(dQ); @@ -55,9 +55,9 @@ public static partial class HeatContainerHelpers /// integration steps with adaptive step size. /// [PublicAPI] - public static float ConductHeat(this HeatContainer cA, HeatContainer cB, float deltaTime, float g) + public static float ConductHeat(this ref HeatContainer cA, ref HeatContainer cB, float deltaTime, float g) { - var dQ = ConductHeatQuery(cA, cB.Temperature, deltaTime, g); + var dQ = ConductHeatQuery(ref cA, cB.Temperature, deltaTime, g); cA.AddHeat(dQ); cB.AddHeat(-dQ); return dQ; @@ -85,10 +85,10 @@ public static partial class HeatContainerHelpers /// integration steps with adaptive step size. /// [PublicAPI] - public static float ConductHeatQuery(this HeatContainer c, float temp, float deltaTime, float g) + public static float ConductHeatQuery(this ref HeatContainer c, float temp, float deltaTime, float g) { var dQ = g * (temp - c.Temperature) * deltaTime; - var dQMax = Math.Abs(ConductHeatToTempQuery(c, temp)); + var dQMax = Math.Abs(ConductHeatToTempQuery(ref c, temp)); // Clamp the transferred heat amount in case we are overshooting the equilibrium temperature because our time step was too large. return Math.Clamp(dQ, -dQMax, dQMax); @@ -116,9 +116,9 @@ public static partial class HeatContainerHelpers /// integration steps with adaptive step size. /// [PublicAPI] - public static float ConductHeatQuery(this HeatContainer c1, HeatContainer c2, float deltaTime, float g) + public static float ConductHeatQuery(this ref HeatContainer c1, ref HeatContainer c2, float deltaTime, float g) { - return ConductHeatQuery(c1, c2.Temperature, deltaTime, g); + return ConductHeatQuery(ref c1, c2.Temperature, deltaTime, g); } /// @@ -131,9 +131,9 @@ public static partial class HeatContainerHelpers /// to reach the target temperature. /// A positive value indicates heat must be added to the container to reach the target temperature. [PublicAPI] - public static float ConductHeatToTemp(this HeatContainer c, float targetTemp) + public static float ConductHeatToTemp(this ref HeatContainer c, float targetTemp) { - var dQ = ConductHeatToTempQuery(c, targetTemp); + var dQ = ConductHeatToTempQuery(ref c, targetTemp); c.Temperature = targetTemp; return dQ; } @@ -148,7 +148,7 @@ public static partial class HeatContainerHelpers /// to reach the target temperature. /// A positive value indicates heat must be added to the container to reach the target temperature. [PublicAPI] - public static float ConductHeatToTempQuery(this HeatContainer c, float targetTemp) + public static float ConductHeatToTempQuery(this ref HeatContainer c, float targetTemp) { return (targetTemp - c.Temperature) * c.HeatCapacity; } diff --git a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Divide.cs b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Divide.cs index f1e7206683..e745c59305 100644 --- a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Divide.cs +++ b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Divide.cs @@ -38,8 +38,7 @@ public static partial class HeatContainerHelpers [PublicAPI] public static HeatContainer[] Divide(this HeatContainer c, uint num) { - if (num == 0) - throw new ArgumentException("Cannot divide by zero.", nameof(num)); + ArgumentOutOfRangeException.ThrowIfZero(num); var fraction = 1f / num; var cFrac = c.Split(fraction); diff --git a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Exchange.cs b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Exchange.cs index 6b7eb125dc..a906cfa35e 100644 --- a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Exchange.cs +++ b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.Exchange.cs @@ -17,7 +17,7 @@ public static partial class HeatContainerHelpers /// to bring the containers to thermal equilibrium. /// A positive value indicates heat transfer from a hot cA to a cold cB. [PublicAPI] - public static float EquilibriumHeatQuery(this HeatContainer cA, HeatContainer cB) + public static float EquilibriumHeatQuery(this ref HeatContainer cA, ref HeatContainer cB) { /* The solution is derived from the following facts: @@ -43,7 +43,7 @@ public static partial class HeatContainerHelpers /// The second to exchange heat with. /// The resulting equilibrium temperature both containers will be at. [PublicAPI] - public static float EquilibriumTemperatureQuery(this HeatContainer cA, HeatContainer cB) + public static float EquilibriumTemperatureQuery(this ref HeatContainer cA, ref HeatContainer cB) { // Insert the above solution for Q into T_A_final = T_A_initial - Q / C_A and rearrange the result. return (cA.HeatCapacity * cA.Temperature - cB.HeatCapacity * cB.Temperature) / (cA.HeatCapacity + cB.HeatCapacity); @@ -55,9 +55,9 @@ public static partial class HeatContainerHelpers /// The first to exchange heat. /// The second to exchange heat with. [PublicAPI] - public static void Equilibrate(this HeatContainer cA, HeatContainer cB) + public static void Equilibrate(this ref HeatContainer cA, ref HeatContainer cB) { - var tFinal = EquilibriumTemperatureQuery(cA, cB); + var tFinal = EquilibriumTemperatureQuery(ref cA, ref cB); cA.Temperature = tFinal; cB.Temperature = tFinal; } @@ -69,10 +69,10 @@ public static partial class HeatContainerHelpers /// The second to exchange heat with. /// The amount of heat in joules that was transferred from container A to B. [PublicAPI] - public static void Equilibrate(this HeatContainer cA, HeatContainer cB, out float dQ) + public static void Equilibrate(this ref HeatContainer cA, ref HeatContainer cB, out float dQ) { var tInitialA = cA.Temperature; - var tFinal = EquilibriumTemperatureQuery(cA, cB); + var tFinal = EquilibriumTemperatureQuery(ref cA, ref cB); cA.Temperature = tFinal; cB.Temperature = tFinal; dQ = (tInitialA - tFinal) / cA.HeatCapacity; @@ -103,7 +103,7 @@ public static partial class HeatContainerHelpers /// The first to bring into thermal equilibrium. /// The array of s to bring into thermal equilibrium. [PublicAPI] - public static void Equilibrate(this HeatContainer cA, HeatContainer[] cN) + public static void Equilibrate(this ref HeatContainer cA, HeatContainer[] cN) { var tF = cA.EquilibriumTemperatureQuery(cN); @@ -201,7 +201,7 @@ public static partial class HeatContainerHelpers /// The array of s to bring into thermal equilibrium. /// The temperature of all s involved after reaching thermal equilibrium. [PublicAPI] - public static float EquilibriumTemperatureQuery(this HeatContainer cA, HeatContainer[] cN) + public static float EquilibriumTemperatureQuery(this ref HeatContainer cA, HeatContainer[] cN) { var cAll = new HeatContainer[cN.Length + 1]; cAll[0] = cA; diff --git a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.cs b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.cs index 39078a810e..6ce01c752e 100644 --- a/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.cs +++ b/Content.Shared/Temperature/HeatContainer/HeatContainerHelpers.cs @@ -16,7 +16,7 @@ public static partial class HeatContainerHelpers /// The to add or remove energy. /// The energy in joules to add or remove. [PublicAPI] - public static void AddHeat(this HeatContainer c, float dQ) + public static void AddHeat(this ref HeatContainer c, float dQ) { c.Temperature = c.AddHeatQuery(dQ); } @@ -30,7 +30,7 @@ public static partial class HeatContainerHelpers /// The energy in joules to add or remove. /// The resulting temperature in kelvin after the heat change. [PublicAPI] - public static float AddHeatQuery(this HeatContainer c, float dQ) + public static float AddHeatQuery(this ref HeatContainer c, float dQ) { // Don't allow the temperature to go below the absolute minimum. return Math.Max(0f, c.Temperature + dQ / c.HeatCapacity); @@ -43,7 +43,7 @@ public static partial class HeatContainerHelpers /// The to modify. /// The new heat capacity to set. [PublicAPI] - public static void SetHeatCapacity(this HeatContainer c, float newHeatCapacity) + public static void SetHeatCapacity(this ref HeatContainer c, float newHeatCapacity) { var currentEnergy = c.InternalEnergy; c.HeatCapacity = newHeatCapacity; -- 2.52.0