Exemplo n.º 1
0
        private void Update(MetaDataNode node)
        {
            //Gases are frozen within closed airlocks or walls
            if (node.IsOccupied || node.IsClosedAirlock)
            {
                return;
            }

            nodes.Clear();
            nodes.Add(node);

            node.AddNeighborsToList(ref nodes);

            bool isPressureChanged = AtmosUtils.IsPressureChanged(node, out var windDirection, out var windForce);

            if (isPressureChanged)
            {
                node.ReactionManager.AddWindEvent(node, windDirection, windForce);
                Equalize();

                for (int i = 1; i < nodes.Count; i++)
                {
                    updateList.Enqueue(nodes[i]);
                }
            }

            //Check to see if node needs vfx applied
            GasVisualEffects(node);
        }
Exemplo n.º 2
0
        private void Update(MetaDataNode node)
        {
            nodes.Clear();

            if (!node.IsClosedAirlock)
            {             //Gases are frozen within closed airlocks
                nodes.Add(node);
            }

            node.AddNeighborsToList(ref nodes);

            bool isPressureChanged = AtmosUtils.IsPressureChanged(node, out var windDirection, out var windForce);

            if (node.IsOccupied || node.IsSpace || isPressureChanged)
            {
                if (isPressureChanged)
                {
                    node.ReactionManager.AddWindEvent(node, windDirection, windForce);                       //fixme: ass backwards
                }
                Equalize();

                for (int i = 1; i < nodes.Count; i++)
                {
                    updateList.Enqueue(nodes[i]);
                }
            }
        }
Exemplo n.º 3
0
 private GasMix(float[] gases, float pressure, float volume = AtmosConstants.TileVolume)
 {
     Gases       = gases;
     Pressure    = pressure;
     Volume      = volume;
     Temperature = AtmosUtils.CalcTemperature(Pressure, Volume, Gases.Sum());
 }
Exemplo n.º 4
0
        public static GasMix FromTemperature(float[] gases, float temperature, float volume = AtmosUtils.TileVolume)
        {
            float moles = gases.Sum();

            float pressure = AtmosUtils.CalcPressure(volume, moles, temperature);

            return(new GasMix(gases, pressure, volume));
        }
Exemplo n.º 5
0
        public static GasMix FromTemperature(float[] gases, float temperature, float volume = AtmosConstants.TileVolume)
        {
            float pressure = 0;

            if (temperature >= 0)
            {
                pressure = AtmosUtils.CalcPressure(volume, gases.Sum(), temperature);
            }

            return(FromPressure(gases, pressure, volume));
        }
Exemplo n.º 6
0
        private void Update(MetaDataNode node)
        {
            nodes.Clear();
            nodes.Add(node);

            node.AddNeighborsToList(ref nodes);

            if (node.IsOccupied || node.IsSpace || AtmosUtils.IsPressureChanged(node))
            {
                Equalize();

                for (int i = 1; i < nodes.Count; i++)
                {
                    updateList.Enqueue(nodes[i]);
                }
            }
        }
Exemplo n.º 7
0
 private void Recalculate()
 {
     Pressure = AtmosUtils.CalcPressure(Volume, Moles, Temperature);
 }
Exemplo n.º 8
0
 public void SetPressure(float newPressure)
 {
     Pressure    = newPressure;
     Temperature = AtmosUtils.CalcTemperature(Pressure, Volume, Moles);
 }
Exemplo n.º 9
0
 public void SetTemperature(float newTemperature)
 {
     Temperature = newTemperature;
     Pressure    = AtmosUtils.CalcPressure(Volume, Moles, Temperature);
 }