* Make ReactionResults an array
We're making the dictionaries fixed-size anyway.
Alternatively could use a frozendictionary but not sure on the perf difference. Worst case whoever adds another reactionresult makes a minor adjustment
* apply conventions
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Moved GasMixture to shared
* Temp Fix for sandbox violation, idk why Array.Resize isn't working properly. It's already sandboxed.
* The most powerful webedit in history
* Add RemoveVolume()
RemoveVolume(vol) captures the common pattern of:
air.RemoveRatio(vol / air.Volume)
Change existing code to use this method where appropriate.
* Add gas recyclers
Gas recyclers catalyze the conversion of CO2 and N2O to O2 and N2. The
gas recycler component takes waste gas from the input net and releases
the result into the output net.
To make things more fun, the input net must be pressurized to 3 MPa and
heated to at least 300 C; otherwise, no reaction will occur.
Game-mechanic wise, gas recyclers contain the catalyst for the
conversion reaction, and therefore, requires no external power. However,
the external pumps and heaters required to make the reaction happen
still do.
* Fix gas recyclers
Fix negative sqrt, fix pressure check after remove.
* Moves all atmos logic from TileAtmosphere to AtmosphereSystem.
* Atmos uses grid anchoring to check for firelocks instead of grid tile lookups.
* CVar for space wind sound
* CVar for explosive depressurization