VeeGen.Generators.VGGBSPDungeon.Connect C# (CSharp) Method

Connect() public method

public Connect ( VGArea mAreaStart, VGArea mAreaEnd ) : void
mAreaStart VGArea
mAreaEnd VGArea
return void
        public void Connect(VGArea mAreaStart, VGArea mAreaEnd)
        {
            int mStartCX = mAreaStart.XStart + mAreaStart.Width/2;
            int mStartCY = mAreaStart.YStart + mAreaStart.Height/2;
            int mEndCX = mAreaEnd.XStart + mAreaEnd.Width/2;
            int mEndCY = mAreaEnd.YStart + mAreaEnd.Height/2;

            if (Math.Abs(mEndCX - mStartCX) < Math.Abs(mEndCY - mStartCY))
            {
                if (mStartCX > mEndCX && mStartCY == mEndCY)
                {
                    mStartCX -= mAreaStart.Width/2;
                    mEndCX += mAreaEnd.Width/2;
                }

                if (mStartCX < mEndCX && mStartCY == mEndCY)
                {
                    mStartCX += mAreaStart.Width/2;
                    mEndCX -= mAreaEnd.Width/2;
                }
            }

            else
            {
                if (mStartCY > mEndCY && mStartCX == mEndCX)
                {
                    mStartCY -= mAreaStart.Height/2;
                    mEndCY += mAreaEnd.Height/2;
                }

                if (mStartCY < mEndCY && mStartCX == mEndCX)
                {
                    mStartCY += mAreaStart.Height/2;
                    mEndCY -= mAreaEnd.Height/2;
                }
            }

            int currentX = mStartCX;
            int currentY = mStartCY;

            mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);

            if (Math.Abs(mEndCX - mStartCX) < Math.Abs(mEndCY - mStartCY))
            {
                while (currentX != mEndCX)
                {
                    if (currentX > mEndCX) currentX--;
                    else currentX++;

                    mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
                }

                while (currentY != mEndCY)
                {
                    if (currentY > mEndCY) currentY--;
                    else currentY++;

                    mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
                }
            }
            else
            {
                while (currentY != mEndCY)
                {
                    if (currentY > mEndCY) currentY--;
                    else currentY++;

                    mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
                }

                while (currentX != mEndCX)
                {
                    if (currentX > mEndCX) currentX--;
                    else currentX++;

                    mAreaStart.World.WorldArea[currentX, currentY].Set(ValuePath);
                }
            }
        }