diff --git a/engine/breeze/world/map.c b/engine/breeze/world/map.c index 8245aa4..d1e742e 100644 --- a/engine/breeze/world/map.c +++ b/engine/breeze/world/map.c @@ -206,10 +206,24 @@ BzTileMap bzTileMapCreate(const BzTileMapDesc *desc) { void bzTileMapDestroy(BzTileMap *tilemap) { for (i32 i = 0; i < tilemap->layerCount; i++) { BzTileLayer *layer = tilemap->layers + i; - bzFree(layer->data); - layer->data = NULL; - layer->dataCount = 0; + if (layer->data) { + bzFree(layer->data); + layer->data = NULL; + layer->dataCount = 0; + } } + for (i32 i = 0; i < tilemap->objectLayerCount; i++) { + BzTileObjectLayer *objectLayer = tilemap->objectLayers + i; + if (objectLayer->objects) { + bzFree(objectLayer->objects); + objectLayer->objects = NULL; + objectLayer->objectCount = 0; + } + } + + bzFree(tilemap->colliderMap); + tilemap->collidersCount = 0; + *tilemap = BZ_TILEMAP_INVALID; }