public MapItemQuadTreeNode(MapItemQuadTreeNode parent, int childIdx) { Parent = parent; if (Parent == null) { Rect = new Rect(0, 0, 1, 1); ZoomLevel = 0; X = Y = 0L; } else { Rect = parent.GetChildRect(childIdx); ZoomLevel = parent.ZoomLevel + 1; X = (Parent.X << 1) + (childIdx % 2); Y = (Parent.Y << 1) + (childIdx / 2); } _Children = new MapItemQuadTreeNode[4]; _Items = new HashSet<MapItem>(); }