Beispiel #1
0
    private void ReJoin()
    {
        HasChildren = false;
        NeedsReedge = true;

        //relinks all children neighbors to point to this level
        //then delete children

        ReJoinChild(0, PatchNeighborDirection.Top);
        ReJoinChild(0, PatchNeighborDirection.Left);

        ReJoinChild(1, PatchNeighborDirection.Top);
        ReJoinChild(1, PatchNeighborDirection.Right);

        ReJoinChild(2, PatchNeighborDirection.Bottom);
        ReJoinChild(2, PatchNeighborDirection.Right);

        ReJoinChild(3, PatchNeighborDirection.Bottom);
        ReJoinChild(3, PatchNeighborDirection.Left);

        for (byte i = 0; i < 4; i++)
        {
            if (Sphere.CloserNode == Children[i])
            {
                Sphere.CloserNode = this;
            }

            Children[i].DestroyTree();
            Children[i] = null;
        }

        if (Parent != null)
        {
            Parent.ReLink();
        }

        Sphere.Rejoined = true;
        NeedsTerrain    = true;
    }