TL;DR
To make fluid flow to behave exactly the same way for rotated / flipped layoutsWhat ?
Now (ver 1.1.32) fluid flow is highly dependent on the direction of the pipes. For example, here is totally symmetric layout (inner infinity pipes have 100% of water, outer infinity pipes have 0% of water), which was left for more than 1 hour to run (to exclude initial irregularities). Regular pipes in corners contain amounts as shown: I would expect to see something like that:Why ?
To make fluid dynamics more logical and easier to understand, to make designs scalable, to reduce ugly bulky "fixes" for complex designs with heavy fluid load (like large nuclear plants), to reduce frustration among players (when rotation / flip of a perfectly working layout can shrink or even break it's capability) etc.How ? (boring tech suggestions)
I guess that flow is dependent on the direction because of iterative changing of live pipe contains from tick to tick. But one can keep in memory two copies of pipe contains - a "live" one and a "next tick" one. A "next" copy can be calculated using "live" copy data (totally ignoring "next" copy data and just rewriting it). And after that references to these copies can be switched, so the fresh "next" one will be a new "live".Pros:
- that can be done in any order / in parallel, easier to maintain, better user experience
- result is much more clear, predictable and testable
Cons:
- adds negligible cpu load (3 assignments per tick for the reference switch)
- adds memory load (depends on current implementation, can't estimate)