]> git.itanic.dy.fi Git - sdl-planets/commitdiff
quadtree.c: Compare vectors, not quadtrees
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Tue, 7 Dec 2010 18:20:57 +0000 (20:20 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Tue, 7 Dec 2010 18:20:57 +0000 (20:20 +0200)
Factor out the vector comparison into a separate function. That way it
is more useful if plain vector comparison is needed.

Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
quadtree.c

index 10c4ec86f3ec3d93baae1b9543e578516c3922c3..80b285a6f6ba74584abc67bac63dd4c729753d5d 100644 (file)
@@ -15,6 +15,28 @@ static void trap(void)
                exit(1);
 }
 
                exit(1);
 }
 
+static int quadtree_compare_coord(const struct vector *a,
+                               const struct vector *b)
+{
+       int up, left;
+
+       up = b->y < a->y;
+       left = b->x < a->x;
+
+       if (up && left)
+               return 0;
+       if (up && !left)
+               return 1;
+       if (left)
+               return 2;
+       return 3;
+}
+
+static int quadtree_compare(const struct quadtree *a, const struct quadtree *b)
+{
+       return quadtree_compare_coord(&a->pos, &b->pos);
+}
+
 static void validate_subtree(const struct quadtree *node)
 {
        int i;
 static void validate_subtree(const struct quadtree *node)
 {
        int i;
@@ -99,22 +121,6 @@ static void validate_tree(const struct quadtree *node)
                validate_subtree(quadtree_find_parent(node));
 }
 
                validate_subtree(quadtree_find_parent(node));
 }
 
-static int quadtree_compare(struct quadtree *a, struct quadtree *b)
-{
-       int up, left;
-
-       up = b->pos.y < a->pos.y;
-       left = b->pos.x < a->pos.x;
-
-       if (up && left)
-               return 0;
-       if (up && !left)
-               return 1;
-       if (left)
-               return 2;
-       return 3;
-}
-
 /**
  * quadtree_add - add a node to a quadtree
  * @parent: parent node
 /**
  * quadtree_add - add a node to a quadtree
  * @parent: parent node