diff --git a/scenes/engine/collisions.c b/scenes/engine/collisions.c index 6bef940..ee71f9d 100644 --- a/scenes/engine/collisions.c +++ b/scenes/engine/collisions.c @@ -4,12 +4,15 @@ void remove_entity_from_tilemap(EntityManager_t *p_manager, TileGrid_t* tilemap, Entity_t* p_ent) { CTileCoord_t* p_tilecoord = get_component(p_ent, CTILECOORD_COMP_T); - for (size_t i = 0;i < p_tilecoord->n_tiles; ++i) + if (p_tilecoord != NULL) { - // Use previously store tile position - // Clear from those positions - unsigned int tile_idx = p_tilecoord->tiles[i]; - sc_map_del_64v(&(tilemap->tiles[tile_idx].entities_set), p_ent->m_id); + for (size_t i = 0;i < p_tilecoord->n_tiles; ++i) + { + // Use previously store tile position + // Clear from those positions + unsigned int tile_idx = p_tilecoord->tiles[i]; + sc_map_del_64v(&(tilemap->tiles[tile_idx].entities_set), p_ent->m_id); + } } remove_entity(p_manager, p_ent->m_id); } diff --git a/scenes/game_systems.c b/scenes/game_systems.c index b7d85e6..a14a0cd 100644 --- a/scenes/game_systems.c +++ b/scenes/game_systems.c @@ -1305,6 +1305,7 @@ void update_tilemap_system(Scene_t* scene) sc_map_foreach(&scene->ent_manager.component_map[CTILECOORD_COMP_T], ent_idx, p_tilecoord) { Entity_t* p_ent = get_entity(&scene->ent_manager, ent_idx); + if (!p_ent->m_alive) continue; CTransform_t* p_ctransform = get_component(p_ent, CTRANSFORM_COMP_T); if (p_ctransform == NULL) continue; CBBox_t* p_bbox = get_component(p_ent, CBBOX_COMP_T);