示例#1
0
            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);
                        }
                    }
                }
            }