public void AddAsChild(VMObstacle rect) { bool rightSide = false; switch (Dimension) { case IntersectRectDimension.Top: rightSide = rect.y1 > Rect.y1; break; case IntersectRectDimension.Left: rightSide = rect.x1 > Rect.x1; break; case IntersectRectDimension.Bottom: rightSide = rect.y2 > Rect.y2; break; case IntersectRectDimension.Right: rightSide = rect.x2 > Rect.x2; break; } if (rightSide) { if (RightChild != null) { RightChild.AddAsChild(rect); } else { RightChild = new VMObstacleSetNodeOld { Dimension = (IntersectRectDimension)(((int)Dimension + 1) % 4), Rect = rect }; } } else { if (LeftChild != null) { LeftChild.AddAsChild(rect); } else { LeftChild = new VMObstacleSetNodeOld { Dimension = (IntersectRectDimension)(((int)Dimension + 1) % 4), Rect = rect }; } } }
public void Add(VMObstacle rect) { Count++; if (Root == null) { Root = new VMObstacleSetNodeOld { Dimension = IntersectRectDimension.Left, Rect = rect }; } else { Root.AddAsChild(rect); } }