[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