diff --git a/multi_user/bl_types/bl_scene.py b/multi_user/bl_types/bl_scene.py index 0c485f4..02f0c89 100644 --- a/multi_user/bl_types/bl_scene.py +++ b/multi_user/bl_types/bl_scene.py @@ -384,6 +384,12 @@ class BlScene(BlDatablock): ] data['view_settings']['curve_mapping']['curves'] = scene_dumper.dump( instance.view_settings.curve_mapping.curves) + + if instance.sequence_editor: + data['has_sequence'] = True + else: + data['has_sequence'] = False + return data def _resolve_deps_implementation(self): diff --git a/multi_user/bl_types/bl_sequencer.py b/multi_user/bl_types/bl_sequencer.py index 2e3ef1a..8862a56 100644 --- a/multi_user/bl_types/bl_sequencer.py +++ b/multi_user/bl_types/bl_sequencer.py @@ -26,6 +26,12 @@ from .dump_anything import Loader, Dumper from .bl_datablock import BlDatablock, get_datablock_from_uuid def dump_sequence(sequence: bpy.types.Sequence) -> dict: + """ Dump a sequence to a dict + + :arg sequence: sequence to dump + :type sequence: bpy.types.Sequence + :return dict: + """ dumper = Dumper() dumper.exclude_filter = [ 'lock', @@ -36,18 +42,30 @@ def dump_sequence(sequence: bpy.types.Sequence) -> dict: ] dumper.depth = 1 data = dumper.dump(sequence) - input_count = getattr(sequence, 'input_count', None) + + # TODO: Support multiple images if sequence.type == 'IMAGE': data['filename'] = sequence.elements[0].filename + + # Effect strip inputs + input_count = getattr(sequence, 'input_count', None) if input_count: for n in range(input_count): input_name = f"input_{n+1}" data[input_name] = getattr(sequence, input_name).name + return data def load_sequence(sequence_data: dict, sequence_editor: bpy.types.SequenceEditor): + """ Load sequence from dumped data + + :arg sequence_data: sequence to dump + :type sequence_data:dict + :arg sequence_editor: root sequence editor + :type sequence_editor: bpy.types.SequenceEditor + """ strip_type = sequence_data.get('type') strip_name = sequence_data.get('name') strip_channel = sequence_data.get('channel') diff --git a/multi_user/utils.py b/multi_user/utils.py index a8317c3..57ed532 100644 --- a/multi_user/utils.py +++ b/multi_user/utils.py @@ -99,7 +99,9 @@ def clean_scene(): type_collection.remove(item) except: continue - + + # Clear sequencer + bpy.context.scene.sequence_editor_clear() def get_selected_objects(scene, active_view_layer): return [obj.uuid for obj in scene.objects if obj.select_get(view_layer=active_view_layer)]