Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2008-04-19 06:19:46 +0400
committerCampbell Barton <ideasman42@gmail.com>2008-04-19 06:19:46 +0400
commitd00a0e56f69c00748c635bb06860041a8726d9fd (patch)
tree3b6a58372ebf7f5b13bfcd661ac58378c356b793 /source
parent92f15c7c0c27fa57e731df69e276ae82a118e7bb (diff)
fix for [#8236] Lens Change by driver won't update in 3d View
Lamps would not update either.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c10
-rw-r--r--source/blender/blenkernel/intern/object.c10
-rw-r--r--source/blender/render/intern/source/initrender.c6
3 files changed, 21 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index eb59ed885a9..5b84617f8d5 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -46,6 +46,7 @@
#include "DNA_effect_types.h"
#include "DNA_group_types.h"
#include "DNA_lattice_types.h"
+#include "DNA_lamp_types.h"
#include "DNA_key_types.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
@@ -494,11 +495,20 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int
}
if (ob->type==OB_CAMERA) {
Camera *cam = (Camera *)ob->data;
+ if (cam->ipo) {
+ dag_add_driver_relation(cam->ipo, dag, node, 1);
+ }
if (cam->dof_ob) {
node2 = dag_get_node(dag, cam->dof_ob);
dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Camera DoF");
}
}
+ if (ob->type==OB_LAMP) {
+ Lamp *la = (Lamp *)ob->data;
+ if (la->ipo) {
+ dag_add_driver_relation(la->ipo, dag, node, 1);
+ }
+ }
if (ob->transflag & OB_DUPLI) {
if((ob->transflag & OB_DUPLIGROUP) && ob->dup_group) {
GroupObject *go;
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index a5243b3f55d..5029ac458ab 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2224,6 +2224,16 @@ void object_handle_update(Object *ob)
else if(ob->type==OB_LATTICE) {
lattice_calc_modifiers(ob);
}
+ else if(ob->type==OB_CAMERA) {
+ Camera *cam = (Camera *)ob->data;
+ calc_ipo(cam->ipo, frame_to_float(G.scene->r.cfra));
+ execute_ipo(&cam->id, cam->ipo);
+ }
+ else if(ob->type==OB_LAMP) {
+ Lamp *la = (Lamp *)ob->data;
+ calc_ipo(la->ipo, frame_to_float(G.scene->r.cfra));
+ execute_ipo(&la->id, la->ipo);
+ }
else if(ob->type==OB_ARMATURE) {
/* this happens for reading old files and to match library armatures with poses */
if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index add89d6249f..ba971d28524 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -459,11 +459,7 @@ void RE_SetCamera(Render *re, Object *camera)
if(cam->type==CAM_ORTHO) re->r.mode |= R_ORTHO;
- /* solve this too... all time depending stuff is in convertblender.c? */
- if(cam->ipo) {
- calc_ipo(cam->ipo, frame_to_float(re->r.cfra));
- execute_ipo(&cam->id, cam->ipo);
- }
+ /* updating these values from ipo's/drivers is handeled by the depgraph */
lens= cam->lens;
shiftx=cam->shiftx;
shifty=cam->shifty;