summaryrefslogtreecommitdiff
path: root/src/ix2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ix2.c')
-rw-r--r--src/ix2.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ix2.c b/src/ix2.c
index 3569ae6..9a8fd02 100644
--- a/src/ix2.c
+++ b/src/ix2.c
@@ -150,7 +150,9 @@ static void init_node(ix2_node_t *node, bb2f_t *aabb)
assert(node);
assert(aabb);
+ node->children = NULL;
INIT_LIST_HEAD(&node->objects);
+ node->n_objects = 0;
node->center.x = aabb->min.x;
node->center.y = aabb->min.y;
@@ -450,6 +452,23 @@ fail_ix2:
}
+/* Reset the index ix2 to its state as-returned by ix2_new()
+ *
+ * Note this doesn't free memory, it just discards the index while keeping all
+ * the memory around in the caches for efficient reuse.
+ */
+void ix2_reset(ix2_t *ix2)
+{
+ assert(ix2);
+
+ pad_reset(ix2->node_pad);
+ pad_reset(ix2->ref_pad);
+ pad_reset(ix2->object_pad);
+
+ init_node(&ix2->root, &ix2->aabb);
+}
+
+
/* Free the index ix2 and everything associated with it */
/* Note the external objects which have been indexed are not freed */
void ix2_free(ix2_t *ix2)
© All Rights Reserved