Optimize allocations in MetabolismComponent and TileAtmosphere
This commit is contained in:
parent
9a3dee2042
commit
8e8594063d
|
|
@ -574,7 +574,7 @@ namespace Content.Server.Atmos
|
|||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private void FinalizeEq()
|
||||
{
|
||||
var transferDirections = new float[Atmospherics.Directions];
|
||||
Span<float> transferDirections = stackalloc float[Atmospherics.Directions];
|
||||
var hasTransferDirs = false;
|
||||
for (var i = 0; i < Atmospherics.Directions; i++)
|
||||
{
|
||||
|
|
@ -609,7 +609,7 @@ namespace Content.Server.Atmos
|
|||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private void FinalizeEqNeighbors(in float[] transferDirs)
|
||||
private void FinalizeEqNeighbors(ReadOnlySpan<float> transferDirs)
|
||||
{
|
||||
for (var i = 0; i < Atmospherics.Directions; i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -145,20 +145,20 @@ namespace Content.Server.GameObjects.Components.Metabolism
|
|||
|
||||
private float SuffocatingPercentage()
|
||||
{
|
||||
var percentages = new float[Atmospherics.TotalNumberOfGases];
|
||||
var total = 0f;
|
||||
|
||||
foreach (var (gas, deficit) in DeficitGases)
|
||||
{
|
||||
if (!NeedsGases.TryGetValue(gas, out var needed))
|
||||
var lack = 1f;
|
||||
if (NeedsGases.TryGetValue(gas, out var needed))
|
||||
{
|
||||
percentages[(int) gas] = 1;
|
||||
continue;
|
||||
lack = deficit / needed;
|
||||
}
|
||||
|
||||
percentages[(int) gas] = deficit / needed;
|
||||
total += lack / Atmospherics.TotalNumberOfGases;
|
||||
}
|
||||
|
||||
return percentages.Average();
|
||||
return total;
|
||||
}
|
||||
|
||||
private float GasProducedMultiplier(Gas gas, float usedAverage)
|
||||
|
|
|
|||
Loading…
Reference in New Issue