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); }
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]); } } }
private GasMix(float[] gases, float pressure, float volume = AtmosConstants.TileVolume) { Gases = gases; Pressure = pressure; Volume = volume; Temperature = AtmosUtils.CalcTemperature(Pressure, Volume, Gases.Sum()); }
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)); }
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)); }
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]); } } }
private void Recalculate() { Pressure = AtmosUtils.CalcPressure(Volume, Moles, Temperature); }
public void SetPressure(float newPressure) { Pressure = newPressure; Temperature = AtmosUtils.CalcTemperature(Pressure, Volume, Moles); }
public void SetTemperature(float newTemperature) { Temperature = newTemperature; Pressure = AtmosUtils.CalcPressure(Volume, Moles, Temperature); }