diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d4563df4d2c..b9be5e66106 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10852,6 +10852,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* put 2.50 compatibility code here until next subversion bump */ { Object *ob; + Scene *scene; bScreen *sc; for (sc= main->screen.first; sc; sc= sc->id.next) { @@ -10908,6 +10909,18 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } } + + /* initialise scene active layer */ + for (scene= main->scene.first; scene; scene=scene->id.next) { + int i; + for(i=0; i<20; i++) { + if(scene->lay & (1<layact= 1<layact; + layer = (v3d->scenelock)?scene->layact:v3d->layact; + for(a=0; a<32; a++) values[a]= (layer & (1<lay; + layer = scene->layact; for(a=0; a<32; a++) values[a]= (layer & (1<localvd==NULL && v3d->scenelock && sa->spacetype==SPACE_VIEW3D) { /* copy to scene */ scene->lay= v3d->lay; + scene->layact= v3d->layact; scene->camera= v3d->camera; /* not through notifiery, listener don't have context diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 9790e928188..54cf6233cf8 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1380,7 +1380,7 @@ static unsigned int free_localbit(void) return 0; } -int ED_view3d_scene_layer_set(int lay, const int *values) +int ED_view3d_scene_layer_set(int lay, const int *values, int *active) { int i, tot= 0; @@ -1393,10 +1393,28 @@ int ED_view3d_scene_layer_set(int lay, const int *values) return lay; for(i=0; i<20; i++) { - if(values[i]) lay |= (1<data; - scene->lay= ED_view3d_scene_layer_set(scene->lay, values); + scene->lay= ED_view3d_scene_layer_set(scene->lay, values, &scene->layact); } static void rna_Scene_view3d_update(Main *bmain, Scene *unused, PointerRNA *ptr) @@ -734,7 +734,7 @@ static int rna_RenderSettings_use_game_engine_get(PointerRNA *ptr) static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values) { SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data; - rl->lay= ED_view3d_scene_layer_set(rl->lay, values); + rl->lay= ED_view3d_scene_layer_set(rl->lay, values, NULL); } static void rna_SceneRenderLayer_pass_update(Main *bmain, Scene *unused, PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 47dccda58f2..a0f0f3d2f4d 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -303,7 +303,7 @@ static void rna_SpaceView3D_layer_set(PointerRNA *ptr, const int *values) { View3D *v3d= (View3D*)(ptr->data); - v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values); + v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values, &v3d->layact); } static PointerRNA rna_SpaceView3D_region_3d_get(PointerRNA *ptr)