diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 68 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/context.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 14 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 5 | ||||
-rw-r--r-- | source/blender/editors/render/render_shading.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_buttons/buttons_context.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_tree.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw_legacy.c | 5 |
9 files changed, 24 insertions, 81 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index f605712510a..9ed59d830e3 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3146,74 +3146,6 @@ class VIEW3D_PT_viewport_debug(Panel): col.row(align=True).prop(view, "debug_background", expand=True) -class VIEW3D_PT_collections_editor(Panel): - bl_space_type = 'VIEW_3D' - bl_region_type = 'UI' - bl_label = "Collections" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - return context.space_data - - def draw(self, context): - layout = self.layout - layer = context.render_layer - active_collection = context.layer_collection - - col = layout.column() - box = col.box() - - index = -1 - for collection in layer.collections: - index = self._draw_layer_collection(box, index, active_collection, collection, True, True) - - row = layout.row(align=True) - row.operator("collections.collection_new", text="", icon='NEW') - row.operator("collections.override_new", text="", icon='LINK_AREA') - row.operator("collections.collection_link", text="", icon='LINKED') - row.operator("collections.collection_unlink", text="", icon='UNLINKED') - row.operator("collections.delete", text="", icon='X') - - def _draw_layer_collection(self, box, index, active_collection, collection, is_active, is_draw, depth=0): - index += 1 - nested_collections = collection.collections - - if is_draw: - row = box.row() - row.active = is_active - is_collection_selected = (collection == active_collection) - - if is_collection_selected: - sub_box = row.box() - row = sub_box.row() - - row.label(text="{0}{1}{2}".format( - " " * depth, - u'\u21b3 ' if depth else "", - collection.name)) - - row.prop(collection, "hide", text="", emboss=False) - row.prop(collection, "hide_select", text="", emboss=False) - - row.operator("collections.select", text="", icon='BLANK1' if is_collection_selected else 'HAND', emboss=False).collection_index=index - - if nested_collections: - row.prop(collection, "is_unfolded", text="", emboss=False) - else: - row.label(icon='BLANK1') - - if not collection.is_unfolded: - is_draw = False - - is_active &= not collection.hide - - for nested_collection in nested_collections: - index = self._draw_layer_collection(box, index, active_collection, nested_collection, is_active, is_draw, depth + 1) - - return index - - class VIEW3D_PT_grease_pencil(GreasePencilDataPanel, Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' 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; |