BodyMemberParticle::BodyMemberParticle(Sprite& spr, const Point2i& position) : Particle("body_member_particle") , angle_rad(0) { SetCollisionModel(true, false, false); m_time_left_to_live = 100; // Bug #17408: make sure there's an available surface for the sprite spr.RefreshSurface(); image = new Sprite(spr.GetSurface()); image->EnableCaches(false, 0); // Some generic particle code requires it to be flipped ASSERT(image->GetWidth() && image->GetHeight()); SetXY(position); SetSize(image->GetSize()); SetOnTop(true); MSG_DEBUG("random.get", "BodyMemberParticle::BodyMemberParticle(...) speed vector length"); Double speed_vector_length = (Double)RandomSync().GetInt(10, 15); MSG_DEBUG("random.get", "BodyMemberParticle::BodyMemberParticle(...) speed vector angle"); Double speed_vector_angle = - RandomSync().GetDouble(0, 3); SetSpeed(speed_vector_length, speed_vector_angle); }