+ if (m_document.GetQuadTree().nodes[m_current_quadtree_node].top_right == QUADTREE_EMPTY)
+ {
+ // We want to reparent into a child node, but none exist. Get the document to create one.
+ m_document.GenQuadChild(m_current_quadtree_node, QTC_TOP_RIGHT);
+ m_render_dirty = true;
+ }
+ m_bounds = TransformToQuadChild(m_bounds, QTC_TOP_RIGHT);
+ m_current_quadtree_node = m_document.GetQuadTree().nodes[m_current_quadtree_node].top_right;
+ }
+ if (ContainedInQuadChild(m_bounds, QTC_BOTTOM_LEFT))
+ {
+ if (m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_left == QUADTREE_EMPTY)
+ {
+ // We want to reparent into a child node, but none exist. Get the document to create one.
+ m_document.GenQuadChild(m_current_quadtree_node, QTC_BOTTOM_LEFT);
+ m_render_dirty = true;
+ }
+ m_bounds = TransformToQuadChild(m_bounds, QTC_BOTTOM_LEFT);
+ m_current_quadtree_node = m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_left;
+ }
+ if (ContainedInQuadChild(m_bounds, QTC_BOTTOM_RIGHT))
+ {
+ if (m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_right == QUADTREE_EMPTY)
+ {
+ // We want to reparent into a child node, but none exist. Get the document to create one.
+ m_document.GenQuadChild(m_current_quadtree_node, QTC_BOTTOM_RIGHT);
+ m_render_dirty = true;
+ }
+ m_bounds = TransformToQuadChild(m_bounds, QTC_BOTTOM_RIGHT);
+ m_current_quadtree_node = m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_right;
+ }
+
+ // Otherwise, we'll arbitrarily select the bottom-right.
+ // TODO: Perhaps select based on greatest area?
+ if (m_bounds.w < 0.5 || m_bounds.h < 0.5)
+ {
+ if (m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_right == QUADTREE_EMPTY)
+ {
+ // We want to reparent into a child node, but none exist. Get the document to create one.
+ m_document.GenQuadChild(m_current_quadtree_node, QTC_BOTTOM_RIGHT);
+ m_render_dirty = true;
+ }
+ m_bounds = TransformToQuadChild(m_bounds, QTC_BOTTOM_RIGHT);
+ m_current_quadtree_node = m_document.GetQuadTree().nodes[m_current_quadtree_node].bottom_right;