private void RegisterFluidLine(FluidLine fluidLine) { List <FluidLine> fluidLineList; // add the new FluidLine into the SortedDictionary of all FluidLines if (fluidLines.TryGetValue(fluidLine.y, out fluidLineList)) { fluidLineList.Add(fluidLine); } else { fluidLineList = new List <FluidLine>(); fluidLineList.Add(fluidLine); fluidLines.Add(fluidLine.y, fluidLineList); } // connect to above FluidLines if (fluidLines.TryGetValue(fluidLine.y + 1, out fluidLineList)) { foreach (FluidLine aboveFluidLine in fluidLineList) { if (fluidLine.VerticallyConnectedTo(aboveFluidLine)) { fluidLine.AddAboveLine(aboveFluidLine); aboveFluidLine.AddBelowLine(fluidLine); } } } // connect to below FluidLines if (fluidLines.TryGetValue(fluidLine.y - 1, out fluidLineList)) { foreach (FluidLine belowFluidLine in fluidLineList) { if (fluidLine.VerticallyConnectedTo(belowFluidLine)) { fluidLine.AddBelowLine(belowFluidLine); belowFluidLine.AddAboveLine(fluidLine); } } } }