def get_collision_instant(self, collision, time_offset, measured_time): abs_measured_time = abs(measured_time) if abs_measured_time < COLLISION_EPSILON: if is_colliding(*collision): time_offset += measured_time self.step_time(measured_time, collision) return time_offset time_jump = measured_time/2.0 time_offset += time_jump self.step_time(time_jump, collision) colliding = is_colliding(*collision) time_jump = abs(time_jump) if colliding: time_jump = -time_jump return self.get_collision_instant(collision, time_offset, time_jump)