private void GenerateHeatFromFurniture(Furniture furniture, float deltaTime)
    {
        if (furniture.Tile.Room.IsOutsideRoom() == true)
        {
            return;
        }

        Tile  tile                  = furniture.Tile;
        float pressure              = tile.Room.GetGasPressure();
        float efficiency            = ModUtils.Clamp01(pressure / furniture.Parameters["pressure_threshold"].ToFloat());
        float energyChangePerSecond = furniture.Parameters["base_heating"].ToFloat() * efficiency;
        float energyChange          = energyChangePerSecond * deltaTime;

        tile.Room.Atmosphere.ChangeEnergy(energyChange);
    }
Beispiel #2
0
    public void Test_Clamp01_OutOfRange()
    {
        float value_1 = 1.0001f;
        float ans_1   = ModUtils.Clamp01(value_1);

        Assert.AreNotEqual(value_1, ans_1);
        Assert.GreaterOrEqual(ans_1, 0f);
        Assert.LessOrEqual(ans_1, 1f);

        float value_2 = -0.0001f;
        float ans_2   = ModUtils.Clamp01(value_2);

        Assert.AreNotEqual(value_2, ans_2);
        Assert.GreaterOrEqual(ans_2, 0f);
        Assert.LessOrEqual(ans_2, 1f);
    }
Beispiel #3
0
    public void Test_Clamp01_InRange()
    {
        float value_1 = 0.12345f;

        Assert.AreEqual(value_1, ModUtils.Clamp01(value_1));

        float value_2 = 0.9999f;

        Assert.AreEqual(value_2, ModUtils.Clamp01(value_2));

        float value_3 = float.Epsilon;

        Assert.AreEqual(value_3, ModUtils.Clamp01(value_3));

        float value_4 = 1f - float.Epsilon;

        Assert.AreEqual(value_4, ModUtils.Clamp01(value_4));
    }
Beispiel #4
0
    private void UpdateTemperature(Furniture furniture, float deltaTime)
    {
        if (furniture.Tile.Room.IsOutsideRoom() == true)
        {
            return;
        }

        Tile  tile       = furniture.Tile;
        float pressure   = tile.Room.GetTotalGasPressure();
        float efficiency = ModUtils.Clamp01(pressure / furniture.Parameters["pressure_threshold"].ToFloat());
        float temperatureChangePerSecond = furniture.Parameters["base_heating"].ToFloat() * efficiency;
        float temperatureChange          = temperatureChangePerSecond * deltaTime;

        // This is all wrong, temperature shouldn't be set to the temperature change
        // But as this entire system does not work well, and creates more unrealistic temperatures,
        // I'll leave it as is.

        // Multiply by this just to make the game make sense.
        temperatureChange = temperatureChange * 10;

        World.Current.temperature.SetTemperature(tile.X, tile.Y, tile.Z, temperatureChange);
    }