[1.187] small airvent reads planetary atmosphere wrong.

Elfi Wolfe shared this bug 5 years ago
Solved

Large airvent reads 0.8911.

Small air vent read 7.1288.

This is 712.88% vs 89.11%

Problem appears to be at SpaceEngineers.Game.Entities.Blocks.MyAirVent.GetOxygenLevel()

If EnvironmentOxygen is 0.8911, and room is not pressurized.

LargeGrid returns max of (0.8911/(2.5x2.5x2.5) or 0.8911

returning 0.8911

SmallGrid returns max of (0.8911/0.5x0.5x0.5) or 0.8911

returning 7.1288

Going deeper into oyxgenBlock.OxygenLevel=> OxygenAmount

OxygenAmount has a float value = (float)(this.Room.IsPressurized ? (this.Room.OxygenAmount / (double)this.Room.blockCount) : ((double)this.Room.EnvironmentOxygen));


So going back to MyAirVent.GetOxygenLevel

If the room is not pressurized then OxygenAmount will be EnvironmentOxygen, but GetOxygenLevel does a check of IsPressurized before the return.


So large grid returns environmentOxygen but small grid returns environmentOxygen/0.125


Suggested fix change GetOxygenLevel from

public float GetOxygenLevel()

{

if (base.IsWorking)

{

MyOxygenBlock oxygenBlock = this.GetOxygenBlock();

if (oxygenBlock.Room != null)

{

float num = oxygenBlock.OxygenLevel(base.CubeGrid.GridSize);

if (oxygenBlock.Room.IsPressurized)

{

return num;

}

return Math.Max(num, oxygenBlock.Room.EnvironmentOxygen);

}

}

return 0f;

}

to

public float GetOxygenLevel()

{

if (base.IsWorking)

{

MyOxygenBlock oxygenBlock = this.GetOxygenBlock();

if (oxygenBlock.Room != null)

{

if (oxygenBlock.Room.IsPressurized)

{

return oxygenBlock.OxygenLevel(base.CubeGrid.GridSize);

}

return oxygenBlock.Room.EnvironmentOxygen;

}

}

return 0f;

}

Replies (3)

photo
1

// SpaceEngineers.Game.Entities.Blocks.MyAirVent
public float GetOxygenLevel()
{
    if (base.IsWorking)
    {
        MyOxygenBlock oxygenBlock = this.GetOxygenBlock();
        if (oxygenBlock != null && oxygenBlock.Room != null)
        {
            if (oxygenBlock.Room.IsAirtight)
            {
                return oxygenBlock.OxygenLevel(base.CubeGrid.GridSize);
            }
            return oxygenBlock.Room.EnvironmentOxygen;
        }
    }
    return 0f;
}

is suggested change

photo
1

Hello, Engineer!


Thank you for your feedback! Your topic has been added between considered issues.

We will address all reported issues during future development and we will attempt to fix your issue as soon as possible. We are currently close to a Major release, which is under heavy development and this takes up a lot of our time.


Please keep voting for the issue as it will help us to identify the most serious bugs.


We really appreciate your patience.


Kind Regards

Keen Software House: QA Department

photo
1

Problem has been fixed in 1.1880.22

Leave a Comment
 
Attach a file