[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27329] trunk/blender/source/blender/ blenkernel/intern/depsgraph.c: Depsgraph: always execute scene camera as if it was on a visible layer,

Brecht Van Lommel brecht at blender.org
Mon Mar 8 16:21:39 CET 2010


Revision: 27329
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27329
Author:   blendix
Date:     2010-03-08 16:21:39 +0100 (Mon, 08 Mar 2010)

Log Message:
-----------
Depsgraph: always execute scene camera as if it was on a visible layer,
because even if it is not it can still affect the 3d view or render.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/depsgraph.c

Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2010-03-08 14:35:38 UTC (rev 27328)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2010-03-08 15:21:39 UTC (rev 27329)
@@ -1925,15 +1925,33 @@
 	sce->theDag->time++;	// so we know which nodes were accessed
 	lasttime= sce->theDag->time;
 
-
+	/* update layer flags in nodes */
 	for(base= sce->base.first; base; base= base->next) {
 		node= dag_get_node(sce->theDag, base->object);
-		if(node)
-			node->scelay= base->object->lay;
-		else
-			node->scelay= 0;
+		node->scelay= base->object->lay;
 	}
 
+	/* ensure cameras are set as if they are on a visible layer, because
+	   they ared still used for rendering or setting the camera view */
+	if(sce->camera) {
+		node= dag_get_node(sce->theDag, sce->camera);
+		node->scelay= lay;
+	}
+
+#ifdef DURIAN_CAMERA_SWITCH
+	{
+		TimeMarker *m;
+
+		for(m= sce->markers.first; m; m= m->next) {
+			if(m->camera) {
+				node= dag_get_node(sce->theDag, sce->camera);
+				node->scelay= lay;
+			}
+		}
+	}
+#endif
+
+	/* flush layer nodes to dependencies */
 	for(itA = firstnode->child; itA; itA= itA->next)
 		if(itA->node->lasttime!=lasttime && itA->node->type==ID_OB) 
 			flush_layer_node(sce, itA->node, lasttime);





More information about the Bf-blender-cvs mailing list