]> git.itanic.dy.fi Git - sdl-planets/commitdiff
Revert "Revert "Revert "Try to optimze"""
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Wed, 14 Apr 2010 17:15:05 +0000 (20:15 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Wed, 14 Apr 2010 17:15:05 +0000 (20:15 +0300)
This reverts commit df41bc01e2d3ffd9be2bfba023c97c5aabcefc4e.

quadtree.c

index 63f56970ef927c06540f1833f52e84229185bd2b..a914f66324a8e0a6ba09d5ccfc50bd6d0c3c1128 100644 (file)
@@ -148,39 +148,22 @@ _quadtree_reposition_reqursively(struct quadtree *root,
                                 struct quadtree *node,
                                 struct quadtree_ops *ops)
 {
-       int i, max_child, max_child_idx;
+       int i;
 
        validate_tree(root);
 
        /* First remove all children, if any */
-       while (1) {
-
-               /*
-                * Attempt to move from the middle of the most dense
-                * branch. That might increase the chances of creating
-                * a tree with better balance.
-                */
-
-               max_child = -1;
-               max_child_idx = -1;
-               for (i = 0; i < 4; i++) {
-                       if (!node->child[i])
-                               continue;
-
-                       if (node->child[i]->children > max_child) {
-                               max_child = node->child[i]->children;
-                               max_child_idx = i;
-                       }
 
-               }
+       for (i = 0; i < 4; i++) {
+               if (!node->child[i])
+                       continue;
 
-               if (max_child < 0)
-                       break;
+               if (node->child[i] == node ||
+                   node->child[i] == node->parent)
+                       trap();
 
-               _quadtree_reposition_reqursively(root,
-                                                node->child[max_child_idx],
-                                                ops);
-               node->child[max_child_idx] = 0;
+               _quadtree_reposition_reqursively(root, node->child[i], ops);
+               node->child[i] = 0;
        }
 
        /* There are no children left, reset stats */