[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24091] trunk/blender/source/blender: Bugfix: 3d view with scene layer lock were not updated when the

Brecht Van Lommel brecht at blender.org
Mon Oct 26 13:42:25 CET 2009


Revision: 24091
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24091
Author:   blendix
Date:     2009-10-26 13:42:25 +0100 (Mon, 26 Oct 2009)

Log Message:
-----------
Bugfix: 3d view with scene layer lock were not updated when the
scene layer or other 3d view layers were changed.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c
    trunk/blender/source/blender/editors/space_outliner/space_outliner.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/editors/space_view3d/view3d_header.c
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/windowmanager/WM_types.h

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2009-10-26 12:42:25 UTC (rev 24091)
@@ -43,6 +43,7 @@
 struct ImBuf;
 struct Scene;
 struct bContext;
+struct Main;
 
 /* for derivedmesh drawing callbacks, for view3d_select, .... */
 typedef struct ViewContext {
@@ -136,5 +137,7 @@
 
 void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d);
 
+void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene);
+
 #endif /* ED_VIEW3D_H */
 

Modified: trunk/blender/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2009-10-26 12:42:25 UTC (rev 24091)
@@ -252,6 +252,7 @@
 				case ND_MODE:
 				case ND_RENDER_OPTIONS:
 				case ND_KEYINGSET:
+				case ND_LAYER:
 					ED_area_tag_redraw(sa);
 					break;
 					

Modified: trunk/blender/source/blender/editors/space_outliner/space_outliner.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/space_outliner.c	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/editors/space_outliner/space_outliner.c	2009-10-26 12:42:25 UTC (rev 24091)
@@ -121,6 +121,7 @@
 				case ND_KEYINGSET:
 				case ND_FRAME:
 				case ND_RENDER_OPTIONS:
+				case ND_LAYER:
 					ED_region_tag_redraw(ar);
 					break;
 			}

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2009-10-26 12:42:25 UTC (rev 24091)
@@ -445,6 +445,7 @@
 				case ND_FRAME:
 				case ND_OB_ACTIVE:
 				case ND_OB_SELECT:
+				case ND_LAYER:
 					ED_region_tag_redraw(ar);
 					break;
 				case ND_MODE:
@@ -551,6 +552,7 @@
 				case ND_OB_ACTIVE:
 				case ND_OB_SELECT:
 				case ND_MODE:
+				case ND_LAYER:
 					ED_region_tag_redraw(ar);
 					break;
 			}
@@ -598,6 +600,7 @@
 				case ND_OB_ACTIVE:
 				case ND_OB_SELECT:
 				case ND_MODE:
+				case ND_LAYER:
 					ED_region_tag_redraw(ar);
 					break;
 			}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_header.c	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_header.c	2009-10-26 12:42:25 UTC (rev 24091)
@@ -134,7 +134,6 @@
 #define B_VIEWBUT	104
 #define B_PERSP		105
 #define B_VIEWRENDER	106
-#define B_STARTGAME	107
 #define B_MODESELECT 108
 #define B_AROUND	109
 #define B_SEL_VERT	110
@@ -169,9 +168,50 @@
 	return NULL;
 }
 
+static void copy_view3d_lock_space(View3D *vd, Scene *scene)
+{
+	int bit;
+
+	if(vd->scenelock && vd->localvd==NULL) {
+		vd->lay= scene->lay;
+		vd->camera= scene->camera;
+		
+		if(vd->camera==0 && vd->persp==V3D_CAMOB)
+			vd->persp= V3D_PERSP;
+		
+		if((vd->lay & vd->layact) == 0) {
+			for(bit= 0; bit<32; bit++) {
+				if(vd->lay & (1<<bit)) {
+					vd->layact= 1<<bit;
+					break;
+				}
+			}
+		}
+	}
+}
+
+void ED_view3d_scene_layers_update(Main *bmain, Scene *scene)
+{
+	bScreen *sc;
+	ScrArea *sa;
+	SpaceLink *sl;
+	
+	/* from scene copy to the other views */
+	for(sc=bmain->screen.first; sc; sc=sc->id.next) {
+		if(sc->scene!=scene)
+			continue;
+
+		for(sa=sc->areabase.first; sa; sa=sa->next)
+			for(sl=sa->spacedata.first; sl; sl=sl->next)
+				if(sl->spacetype==SPACE_VIEW3D)
+					copy_view3d_lock_space((View3D*)sl, scene);
+	}
+}
+
 // XXX quickly ported across
 static void handle_view3d_lock(bContext *C) 
 {
+	Main *bmain= CTX_data_main(C);
 	Scene *scene= CTX_data_scene(C);
 	ScrArea *sa= CTX_wm_area(C);
 	View3D *v3d= CTX_wm_view3d(C);
@@ -181,9 +221,13 @@
 			/* copy to scene */
 			scene->lay= v3d->lay;
 			scene->camera= v3d->camera;
+
+			/* not through notifiery, listener don't have context
+			   and non-open screens or spaces need to be updated too */
+			ED_view3d_scene_layers_update(bmain, scene);
 			
 			/* notifiers for scene update */
-			WM_event_add_notifier(C, NC_SCENE, scene);
+			WM_event_add_notifier(C, NC_SCENE|ND_LAYER, scene);
 		}
 	}
 }
@@ -1713,21 +1757,11 @@
 		}
 		break;
 		
-	case B_VIEWBUT:
-	
-
-	case B_PERSP:
-	
-		
-		break;
 	case B_VIEWRENDER:
 		if (sa->spacetype==SPACE_VIEW3D) {
 // XXX			BIF_do_ogl_render(v3d, shift);
 		}
 		break;
-	case B_STARTGAME:
-// XXX		start_game();
-		break;
 	case B_MODESELECT:
 		WM_operator_properties_create(&props_ptr, "OBJECT_OT_mode_set");
 		RNA_enum_set(&props_ptr, "mode", v3d->modeselect);

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c	2009-10-26 12:42:25 UTC (rev 24091)
@@ -76,14 +76,16 @@
 
 #include "BKE_context.h"
 #include "BKE_global.h"
-#include "BKE_scene.h"
+#include "BKE_main.h"
 #include "BKE_node.h"
 #include "BKE_pointcache.h"
+#include "BKE_scene.h"
 
 #include "BLI_threads.h"
 
 #include "ED_info.h"
 #include "ED_node.h"
+#include "ED_view3d.h"
 
 #include "RE_pipeline.h"
 
@@ -160,6 +162,14 @@
 	scene->lay= layer_set(scene->lay, values);
 }
 
+static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr)
+{
+	Main *bmain= CTX_data_main(C);
+	Scene *scene= (Scene*)ptr->data;
+
+	ED_view3d_scene_layers_update(bmain, scene);
+}
+
 static void rna_Scene_start_frame_set(PointerRNA *ptr, int value)
 {
 	Scene *data= (Scene*)ptr->data;
@@ -2219,10 +2229,10 @@
 	prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
 	RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);
 	RNA_def_property_array(prop, 20);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_layer_set");
 	RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible when rendering the scene.");
-	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_layer_set");
+	RNA_def_property_update(prop, NC_SCENE|ND_LAYER, "rna_Scene_layer_update");
 	
-	
 	/* Frame Range Stuff */
 	prop= RNA_def_property(srna, "current_frame", PROP_INT, PROP_TIME);
 	RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE);

Modified: trunk/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_types.h	2009-10-26 12:30:28 UTC (rev 24090)
+++ trunk/blender/source/blender/windowmanager/WM_types.h	2009-10-26 12:42:25 UTC (rev 24091)
@@ -165,6 +165,7 @@
 #define ND_COMPO_RESULT		(11<<16)
 #define ND_KEYINGSET		(12<<16)
 #define ND_SCENEDELETE		(13<<16)
+#define ND_LAYER			(14<<16)
 
 	/* NC_OBJECT Object */
 #define	ND_TRANSFORM		(16<<16)





More information about the Bf-blender-cvs mailing list