diff --git a/Makefile b/Makefile index 71b67da..97b8169 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ SRC = src/quadtree.c \ src/qt_split.c \ src/qt_getcollide.c \ + src/qt_destroy.c \ src/utility/calloc.c OBJ = $(SRC:%.c=%.o) diff --git a/include/quadtree.h b/include/quadtree.h index 205572d..cd485fb 100644 --- a/include/quadtree.h +++ b/include/quadtree.h @@ -47,4 +47,5 @@ int qt_add(quadtree *tree, qt_object obj); qt_collision collision_get_info(quadtree *tree, int entity_id); bool qt_collide(qt_intrect r1, qt_intrect r2); qt_object *qt_getobj(quadtree *tree, int id); -int qt_update(quadtree *tree, qt_object obj); \ No newline at end of file +int qt_update(quadtree *tree, qt_object obj); +void qt_destroy(quadtree *tree); \ No newline at end of file diff --git a/src/qt_destroy.c b/src/qt_destroy.c new file mode 100644 index 0000000..e0f6918 --- /dev/null +++ b/src/qt_destroy.c @@ -0,0 +1,25 @@ +/* +** EPITECH PROJECT, 2019 +** MUL_my_runner_2019 +** File description: +** qt_destroy +*/ + +#include "quadtree.h" +#include + +void qt_child_destroy(quadtree *tree) +{ + if (tree->capacity < 0) { + for (int i = 0; i < 4; i++) { + qt_child_destroy(&((quadtree *)tree->objects)[i]); + } + } + free(tree->objects); +} + +void qt_destroy(quadtree *tree) +{ + qt_child_destroy(tree); + free(tree); +} \ No newline at end of file diff --git a/src/qt_split.c b/src/qt_split.c index 62717e6..43ee036 100644 --- a/src/qt_split.c +++ b/src/qt_split.c @@ -49,6 +49,7 @@ quadtree *qt_split(quadtree *tree) ret[i].objects = (void *)qt_filter_objects(tree, ret[i].rect); } tree->capacity = -1; + free(tree->objects); tree->objects = (void *)ret; return (ret); } \ No newline at end of file