def playblast_all_shots(self, extra_playblast_options=None):
        shots = pm.ls(type='shot')
        if len(shots) <= 0:
            raise RuntimeError('There are no Shots in your Camera Sequencer.')

        from anima.ui.progress_dialog import ProgressDialogManager
        pdm = ProgressDialogManager()
        pdm.close()

        caller = pdm.register(len(shots), 'Generating Playblasts...')

        generic_playblast_options = {}
        if extra_playblast_options:
            generic_playblast_options.update(extra_playblast_options)

        # if the time range is selected from the time line
        # just use this range
        range_start, range_end = self.get_frame_range()
        range_selected = False
        if range_end - range_start > 1:
            # means that there is a range selected in the time slider
            range_selected = True
            generic_playblast_options['startTime'] = range_start
            generic_playblast_options['endTime'] = range_end

        # check audio
        audio_node = self.get_audio_node()
        if audio_node:
            generic_playblast_options.update({
                'useTraxSounds': False,
                'sound': audio_node
            })
        else:
            generic_playblast_options['useTraxSounds'] = True

        temp_video_file_full_paths = []
        for shot in shots:
            per_shot_playblast_options = copy.copy(generic_playblast_options)

            if range_selected:
                # skip this shot if the selected playback range do not
                # coincide with this shot range

                shot_start_frame = shot.startFrame.get()
                shot_end_frame = shot.endFrame.get()

                if (range_start > shot_start_frame and range_start > shot_end_frame) or \
                   (range_end < shot_start_frame and range_end < shot_end_frame):
                    caller.step()
                    continue

            temp_video_file_full_path = \
                self.playblast_shot(shot, per_shot_playblast_options)
            temp_video_file_full_paths.append(temp_video_file_full_path)

            caller.step()

        return temp_video_file_full_paths
Construct a new `_CacheableMapperOption`.
dataset/ETHPy150Open eoyilmaz/anima/anima/env/mayaEnv/auxiliary.py/Playblaster.playblast_all_shots--crossover with--dataset/ETHPy150Open iurisilvio/Flask-SQLAlchemy-Cache/flask_sqlalchemy_cache/core.py/_CacheableMapperOption.__init__