From 6adb254bb046ab337cfd4225ca55e17f196db312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 14 Apr 2020 19:22:18 +0200 Subject: Fix T75686: Animating scene audio volume doesn't work Scene audio volume changes require the scene to be tagged with `ID_RECALC_AUDIO_VOLUME` (see `BKE_scene_update_sound()`). Tagging happens in the RNA update function `rna_Scene_volume_update()`, but that function is not called by the animation system. As a result, animated volume changes are not sent to the audio system. This commit adds a new depsgraph operation node that sets this tag when necessary, so that the animated values are used in the rest of the depsgraph evaluation. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7429 --- .../blender/depsgraph/intern/builder/deg_builder_relations.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.cc') diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 89def9e0bdc..e968ad1ea5d 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -2544,8 +2544,16 @@ void DepsgraphRelationBuilder::build_scene_sequencer(Scene *scene) } } -void DepsgraphRelationBuilder::build_scene_audio(Scene * /*scene*/) +void DepsgraphRelationBuilder::build_scene_audio(Scene *scene) { + OperationKey scene_audio_volume_key(&scene->id, NodeType::AUDIO, OperationCode::AUDIO_VOLUME); + OperationKey scene_sound_eval_key(&scene->id, NodeType::AUDIO, OperationCode::SOUND_EVAL); + add_relation(scene_audio_volume_key, scene_sound_eval_key, "Audio Volume -> Sound"); + + if (scene->audio.flag & AUDIO_VOLUME_ANIMATED) { + ComponentKey scene_anim_key(&scene->id, NodeType::ANIMATION); + add_relation(scene_anim_key, scene_audio_volume_key, "Animation -> Audio Volume"); + } } void DepsgraphRelationBuilder::build_scene_speakers(Scene * /*scene*/, ViewLayer *view_layer) -- cgit v1.2.3