Commit: 518c4cd462fdf28fa09f5969963c73aba42b79bf
Author: Julian Eisel
Date:   Tue May 24 02:08:49 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB518c4cd462fdf28fa09f5969963c73aba42b79bf

Add object layer tree to scene data

===================================================================

M       source/blender/blenkernel/BKE_layer.h
M       source/blender/blenkernel/intern/scene.c
M       source/blender/blenloader/CMakeLists.txt
M       source/blender/blenloader/intern/versioning_270.c
M       source/blender/makesdna/DNA_scene_types.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_layer.h 
b/source/blender/blenkernel/BKE_layer.h
index 7198f66..fe44926 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -30,6 +30,7 @@
 #ifndef __BKE_LAYER_H__
 #define __BKE_LAYER_H__
 
+struct bContext;
 struct LayerTree;
 struct LayerTreeItem;
 
diff --git a/source/blender/blenkernel/intern/scene.c 
b/source/blender/blenkernel/intern/scene.c
index d307ba1..9c1917d 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -75,6 +75,7 @@
 #include "BKE_icons.h"
 #include "BKE_idprop.h"
 #include "BKE_image.h"
+#include "BKE_layer.h"
 #include "BKE_library.h"
 #include "BKE_linestyle.h"
 #include "BKE_main.h"
@@ -454,6 +455,11 @@ void BKE_scene_free(Scene *sce)
        if (sce->fps_info)
                MEM_freeN(sce->fps_info);
 
+#ifdef WITH_ADVANCED_LAYERS
+       BLI_assert(sce->object_layers != NULL);
+       BKE_layertree_delete(sce->object_layers);
+#endif
+
        BKE_sound_destroy_scene(sce);
 
        BKE_color_managed_view_settings_free(&sce->view_settings);
@@ -740,6 +746,10 @@ void BKE_scene_init(Scene *sce)
 
        sce->gm.exitkey = 218; // Blender key code for ESC
 
+#ifdef WITH_ADVANCED_LAYERS
+       sce->object_layers = BKE_layertree_new(LAYER_TREETYPE_OBJECT);
+#endif
+
        BKE_sound_create_scene(sce);
 
        /* color management */
diff --git a/source/blender/blenloader/CMakeLists.txt 
b/source/blender/blenloader/CMakeLists.txt
index 8364df3..906720d 100644
--- a/source/blender/blenloader/CMakeLists.txt
+++ b/source/blender/blenloader/CMakeLists.txt
@@ -73,4 +73,8 @@ if(WITH_CODEC_FFMPEG)
        add_definitions(-DWITH_FFMPEG)
 endif()
 
+if(WITH_ADVANCED_LAYERS)
+       add_definitions(-DWITH_ADVANCED_LAYERS)
+endif()
+
 blender_add_lib(bf_blenloader "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/blenloader/intern/versioning_270.c 
b/source/blender/blenloader/intern/versioning_270.c
index 0ea4078..3a176af 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -56,6 +56,7 @@
 #include "DNA_genfile.h"
 
 #include "BKE_colortools.h"
+#include "BKE_layer.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_modifier.h"
@@ -1201,4 +1202,16 @@ void blo_do_versions_270(FileData *fd, Library 
*UNUSED(lib), Main *main)
                        }
                }
        }
+
+#ifdef WITH_ADVANCED_LAYERS
+       /* Convert to new layer system */
+       {
+               if (!DNA_struct_elem_find(fd->filesdna, "Scene", "LayerTree", 
"object_layers")) {
+                       for (Scene *sce = main->scene.first; sce; sce = 
sce->id.next) {
+                               sce->object_layers = 
BKE_layertree_new(LAYER_TREETYPE_OBJECT);
+                               /* TODO convert old layers to new ones */
+                       }
+               }
+       }
+#endif
 }
diff --git a/source/blender/makesdna/DNA_scene_types.h 
b/source/blender/makesdna/DNA_scene_types.h
index 1bf044f..35da922 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1522,11 +1522,14 @@ typedef struct Scene {
        float cursor[3];                        /* 3d cursor location */
        float twcent[3];                        /* center for transform widget 
*/
        float twmin[3], twmax[3];       /* boundbox of selection for transform 
widget */
-       
+
+       /* the object layer tree of this scene */
+       struct LayerTree *object_layers;
+
        unsigned int lay;                       /* bitflags for layer 
visibility */
        int layact;             /* active layer */
        unsigned int lay_updated;       /* runtime flag, has layer ever been 
updated since load? */
-       
+
        short flag;                                                             
/* various settings */
        
        char use_nodes;
@@ -1582,6 +1585,8 @@ typedef struct Scene {
        /* Movie Tracking */
        struct MovieClip *clip;                 /* active movie clip */
 
+       void *pad2;
+
        uint64_t customdata_mask;       /* XXX. runtime flag for drawing, 
actually belongs in the window, only used by BKE_object_handle_update() */
        uint64_t customdata_mask_modal; /* XXX. same as above but for temp 
operator use (gl renders) */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to