void trigger(double x, double y, double,
                        shape const& shape,
                        double vx, double vy,
                        uint64_t origin_id,
                        noise_queue& nqueue,
                        comm::msg_queue& queue) {

                std::uniform_int_distribution<int> bmp_dist(0, _images.size() - 1);
                for(uint32_t i = 0; i < _num_debris; ++i) {
                        uint32_t index = _randomize
                                ? bmp_dist(rnd::engine)
                                : (i % _images.size());
                        res::res_id bmp = _images[index];
                        double deb_x, deb_y;
                        std::tie(deb_x, deb_y) = shape.get_random_point();
                        queue.push(comm::create_spawn_debris(
                                                deb_x + x, deb_y + y,
                                                vx, vy,
                                                _vmin, _vmax,
                                                _theta_min, _theta_max,
                                                bmp,
                                                _explode,
                                                origin_id));
                }
        }
        void trigger(double x, double y, double phi,
                        shape const& shape,
                        double, double,
                        uint64_t origin_id,
                        noise_queue& nqueue,
                        comm::msg_queue& queue) {

                double delay = 0.0;
                std::uniform_real_distribution<double> delay_dist(_min_delay, _max_delay);
                for(uint32_t i = 0; i < _num_explosions; ++i) {
                        double expl_x, expl_y;
                        std::tie(expl_x, expl_y) = shape.get_random_point();
                        queue.push(comm::create_spawn_explosion(expl_x + x, expl_y + y), delay);
                        nqueue.push(res::res_id::EXPLOSION_SND, delay);
                        delay += delay_dist(rnd::engine);
                }
        }