From efa2d0eeef3cee258f565870d7f0d45814129f00 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Mon, 25 Nov 2019 17:39:46 +0100 Subject: [PATCH] feat: driver fcurve loading Related to #39. --- multi_user/bl_types/bl_datablock.py | 14 ++++++++++++++ multi_user/libs/replication | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/multi_user/bl_types/bl_datablock.py b/multi_user/bl_types/bl_datablock.py index 1000bbd..9d5fadd 100644 --- a/multi_user/bl_types/bl_datablock.py +++ b/multi_user/bl_types/bl_datablock.py @@ -19,9 +19,12 @@ def load_driver(target_datablock, src_driver): src_driver_data = src_driver['driver'] new_driver = drivers.new(src_driver['data_path']) + # Settings new_driver.driver.type = src_driver_data['type'] new_driver.driver.expression = src_driver_data['expression'] + utils.dump_anything.load(new_driver, src_driver) + # Variables for src_variable in src_driver_data['variables']: src_var_data = src_driver_data['variables'][src_variable] new_var = new_driver.driver.variables.new() @@ -33,6 +36,17 @@ def load_driver(target_datablock, src_driver): new_var.targets[src_target].id = utils.resolve_from_id(src_target_data['id'],src_target_data['id_type']) utils.dump_anything.load(new_var.targets[src_target], src_target_data) + # Fcurve + new_fcurve = new_driver.keyframe_points + for p in reversed(new_fcurve): + new_fcurve.remove(p, fast=True) + + new_fcurve.add(len(src_driver['keyframe_points'])) + + for index, src_point in enumerate(src_driver['keyframe_points']): + new_point = new_fcurve[index] + utils.dump_anything.load(new_point, src_driver['keyframe_points'][src_point]) + class BlDatablock(ReplicatedDatablock): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/multi_user/libs/replication b/multi_user/libs/replication index 56cf86f..f3abe80 160000 --- a/multi_user/libs/replication +++ b/multi_user/libs/replication @@ -1 +1 @@ -Subproject commit 56cf86f05d1bb5fab9c3491945bbd5f7f207325b +Subproject commit f3abe8074fcdaf5a1dc1df496a2700fb111da75a