Implementation copied from: https://akkartik.itch.io/carousel/devlog/649349/handling-cascading-collisions