Example #1
0
        public void Merge()
        {
            VertexTop.Activated    = false;
            VertexLeft.Activated   = false;
            VertexRight.Activated  = false;
            VertexBottom.Activated = false;

            if (Type != NodeType.FullNode)
            {
                VertexTopLeft.Activated     = false;
                VertexTopRight.Activated    = false;
                VertexBottomLeft.Activated  = false;
                VertexBottomRight.Activated = false;
            }
            IsActive = true;
            isSplit  = false;

            if (hasChildren)
            {
                if (ChildTopLeft.IsSplit)
                {
                    ChildTopLeft.Merge();
                    ChildTopLeft.IsActive = false;
                }
                else
                {
                    ChildTopLeft.VertexTop.Activated    = false;
                    ChildTopLeft.VertexLeft.Activated   = false;
                    ChildTopLeft.VertexRight.Activated  = false;
                    ChildTopLeft.VertexBottom.Activated = false;
                }

                if (ChildTopRight.IsSplit)
                {
                    ChildTopRight.Merge();
                    ChildTopRight.IsActive = false;
                }
                else
                {
                    ChildTopRight.VertexTop.Activated    = false;
                    ChildTopRight.VertexLeft.Activated   = false;
                    ChildTopRight.VertexRight.Activated  = false;
                    ChildTopRight.VertexBottom.Activated = false;
                }


                if (ChildBottomLeft.IsSplit)
                {
                    ChildBottomLeft.Merge();
                    ChildBottomLeft.IsActive = false;
                }
                else
                {
                    ChildBottomLeft.VertexTop.Activated    = false;
                    ChildBottomLeft.VertexLeft.Activated   = false;
                    ChildBottomLeft.VertexRight.Activated  = false;
                    ChildBottomLeft.VertexBottom.Activated = false;
                }


                if (ChildBottomRight.IsSplit)
                {
                    ChildBottomRight.Merge();
                    ChildBottomRight.IsActive = false;
                }
                else
                {
                    ChildBottomRight.VertexTop.Activated    = false;
                    ChildBottomRight.VertexLeft.Activated   = false;
                    ChildBottomRight.VertexRight.Activated  = false;
                    ChildBottomRight.VertexBottom.Activated = false;
                }
            }
        }