[Bf-blender-cvs] [518c4cd] soc-2016-layer_manager: Add object layer tree to scene data
Julian Eisel
noreply at git.blender.org
Tue May 24 02:09:54 CEST 2016
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) */
More information about the Bf-blender-cvs
mailing list