From 03bd670f8286c841a8696badb492256ca6fcadd8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 5 Sep 2013 15:47:52 +0000 Subject: Fix #36649 and #36650: animation of freestyle line thickness and linestyle did not render correct in animations, due to missing updates. --- source/blender/blenkernel/intern/scene.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender/blenkernel/intern/scene.c') diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 1874523dac9..5829ff4995e 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -44,6 +44,7 @@ #include "DNA_anim_types.h" #include "DNA_group_types.h" +#include "DNA_linestyle_types.h" #include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_rigidbody_types.h" @@ -1064,6 +1065,7 @@ void BKE_scene_frame_set(struct Scene *scene, double cfra) */ static void scene_update_drivers(Main *UNUSED(bmain), Scene *scene) { + SceneRenderLayer *srl; float ctime = BKE_scene_frame_get(scene); /* scene itself */ @@ -1098,6 +1100,22 @@ static void scene_update_drivers(Main *UNUSED(bmain), Scene *scene) if (adt && adt->drivers.first) BKE_animsys_evaluate_animdata(scene, nid, adt, ctime, ADT_RECALC_DRIVERS); } + + /* freestyle */ + for (srl = scene->r.layers.first; srl; srl = srl->next) { + FreestyleConfig *config = &srl->freestyleConfig; + FreestyleLineSet *lineset; + + for (lineset = config->linesets.first; lineset; lineset = lineset->next) { + if (lineset->linestyle) { + ID *lid = &lineset->linestyle->id; + AnimData *adt = BKE_animdata_from_id(lid); + + if (adt && adt->drivers.first) + BKE_animsys_evaluate_animdata(scene, lid, adt, ctime, ADT_RECALC_DRIVERS); + } + } + } } /* deps hack - do extra recalcs at end */ -- cgit v1.2.3