Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-02-15 20:37:59 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-02-15 21:29:09 +0300
commita428daada080771c75bb2003f60792dfea5f2121 (patch)
tree40430414b7032024e205e9f53c5e7e1c5c574cbd /source
parent883ef2c9cef5b25fb2da9233181e07cd2555c444 (diff)
Layers: Separate between scene render layer (F12) and context render layer (everything else)
For now they are the same. However with workspaces they will be different, and should be treated differently.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_layer.h3
-rw-r--r--source/blender/blenkernel/intern/context.c2
-rw-r--r--source/blender/blenkernel/intern/layer.c14
-rw-r--r--source/blender/blenkernel/intern/scene.c5
-rw-r--r--source/blender/editors/render/render_shading.c2
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c4
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_draw_legacy.c5
8 files changed, 24 insertions, 13 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 6e12b82e558..7021f0ea0b0 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -54,7 +54,8 @@ struct Scene;
struct SceneCollection;
struct SceneLayer;
-struct SceneLayer *BKE_scene_layer_active(struct Scene *scene);
+struct SceneLayer *BKE_scene_layer_render_active(struct Scene *scene);
+struct SceneLayer *BKE_scene_layer_context_active(struct Scene *scene);
struct SceneLayer *BKE_scene_layer_add(struct Scene *scene, const char *name);
bool BKE_scene_layer_remove(struct Main *bmain, struct Scene *scene, struct SceneLayer *sl);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 39c595dfdba..560d84c1d2d 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -906,7 +906,7 @@ SceneLayer *CTX_data_scene_layer(const bContext *C)
return sl;
}
else {
- return BKE_scene_layer_active(CTX_data_scene(C));
+ return BKE_scene_layer_context_active(CTX_data_scene(C));
}
}
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 1fae242a644..2d1b77867f9 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -60,8 +60,9 @@ static void object_bases_Iterator_next(Iterator *iter, const int flag);
/**
* Returns the SceneLayer to be used for rendering
+ * Most of the time BKE_scene_layer_context_active should be used instead
*/
-SceneLayer *BKE_scene_layer_active(struct Scene *scene)
+SceneLayer *BKE_scene_layer_render_active(Scene *scene)
{
SceneLayer *sl = BLI_findlink(&scene->render_layers, scene->active_layer);
BLI_assert(sl);
@@ -69,6 +70,17 @@ SceneLayer *BKE_scene_layer_active(struct Scene *scene)
}
/**
+ * Returns the SceneLayer to be used for drawing, outliner, and
+ * other context related areas.
+ */
+SceneLayer *BKE_scene_layer_context_active(Scene *scene)
+{
+ /* waiting for workspace to get the layer from context*/
+ TODO_LAYER_CONTEXT;
+ return BKE_scene_layer_render_active(scene);
+}
+
+/**
* Add a new renderlayer
* by default, a renderlayer has the master collection
*/
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 3a7428b1b50..8f3783bc4a3 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1704,8 +1704,7 @@ Base *_setlooper_base_step(Scene **sce_iter, Base *base)
/* first time looping, return the scenes first base */
/* for the first loop we should get the layer from context */
- TODO_LAYER_CONTEXT;
- SceneLayer *sl = BKE_scene_layer_active((*sce_iter));
+ SceneLayer *sl = BKE_scene_layer_context_active((*sce_iter));
if (sl->object_bases.first) {
return (Base *)sl->object_bases.first;
@@ -1717,7 +1716,7 @@ Base *_setlooper_base_step(Scene **sce_iter, Base *base)
next_set:
/* reached the end, get the next base in the set */
while ((*sce_iter = (*sce_iter)->set)) {
- SceneLayer *sl = BKE_scene_layer_active((*sce_iter));
+ SceneLayer *sl = BKE_scene_layer_render_active((*sce_iter));
base = (Base *)sl->object_bases.first;
if (base) {
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 986e9623fef..490182b17ed 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -653,7 +653,7 @@ void SCENE_OT_render_layer_add(wmOperatorType *ot)
static int render_layer_remove_exec(bContext *C, wmOperator *UNUSED(op))
{
Scene *scene = CTX_data_scene(C);
- SceneLayer *sl = BKE_scene_layer_active(scene);
+ SceneLayer *sl = BKE_scene_layer_context_active(scene);
if (!BKE_scene_layer_remove(CTX_data_main(C), scene, sl)) {
return OPERATOR_CANCELLED;
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 34213d3d565..3727c29d9d0 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -181,8 +181,8 @@ static int buttons_context_path_object(ButsContextPath *path)
/* if we have a scene, use the scene's active object */
else if (buttons_context_path_scene(path)) {
scene = path->ptr[path->len - 1].data;
- TODO_LAYER_CONTEXT; /* use context, not active one */
- SceneLayer *sl = BKE_scene_layer_active(scene);
+
+ SceneLayer *sl = BKE_scene_layer_context_active(scene);
ob = (sl->basact) ? sl->basact->object : NULL;
if (ob) {
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 1ba33970aad..bbabb9e2d7a 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -1849,7 +1849,7 @@ void outliner_build_tree(Main *mainvar, Scene *scene, SceneLayer *sl, SpaceOops
outliner_add_orphaned_datablocks(mainvar, soops);
}
else if (soops->outlinevis == SO_COLLECTIONS) {
- outliner_add_collections(soops, BLI_findlink(&scene->render_layers, scene->active_layer), scene);
+ outliner_add_collections(soops, BKE_scene_layer_context_active(scene), scene);
}
else {
ten = outliner_add_element(soops, &soops->tree, OBACT_NEW, NULL, 0, 0);
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index d23b2ac23c1..c4d980ec7e9 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -1259,8 +1259,7 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover
short flag = v3d->flag;
float glalphaclip = U.glalphaclip;
int obcenter_dia = U.obcenter_dia;
- TODO_LAYER_CONTEXT; /* we should pass context, really */
- SceneLayer *sl = BKE_scene_layer_active(scene);
+ SceneLayer *sl = BKE_scene_layer_context_active(scene);
/* no need for color when drawing depth buffer */
const short dflag_depth = DRAW_CONSTCOLOR;
/* temp set drawtype to solid */
@@ -1548,7 +1547,7 @@ static void view3d_draw_objects(
const char **grid_unit,
const bool do_bgpic, const bool draw_offscreen, GPUFX *fx)
{
- SceneLayer *sl = C ? CTX_data_scene_layer(C) : BKE_scene_layer_active(scene);
+ SceneLayer *sl = C ? CTX_data_scene_layer(C) : BKE_scene_layer_render_active(scene);
RegionView3D *rv3d = ar->regiondata;
Base *base;
const bool do_camera_frame = !draw_offscreen;