[Bf-blender-cvs] [ce485104627] soc-2019-npr: LANPR: Added collection tab and put collection specific LANPR settings in it.
YimingWu
noreply at git.blender.org
Tue Jun 25 10:20:09 CEST 2019
Commit: ce485104627fe7be5ffd2df75107eaf14d90cda4
Author: YimingWu
Date: Tue Jun 25 16:18:58 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBce485104627fe7be5ffd2df75107eaf14d90cda4
LANPR: Added collection tab and put collection specific LANPR settings in it.
===================================================================
M release/scripts/startup/bl_ui/__init__.py
A release/scripts/startup/bl_ui/properties_collection.py
M release/scripts/startup/bl_ui/properties_view_layer.py
M source/blender/editors/space_buttons/buttons_context.c
M source/blender/editors/space_buttons/space_buttons.c
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/intern/rna_space.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index 44229b2afdf..b11a6bfcc8f 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -65,6 +65,7 @@ _modules = [
"properties_scene",
"properties_texture",
"properties_world",
+ "properties_collection",
# Generic Space Modules
#
diff --git a/release/scripts/startup/bl_ui/properties_collection.py b/release/scripts/startup/bl_ui/properties_collection.py
new file mode 100644
index 00000000000..73e2ef43bea
--- /dev/null
+++ b/release/scripts/startup/bl_ui/properties_collection.py
@@ -0,0 +1,82 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+from bpy.types import Panel
+from bpy import data
+
+
+class CollectionButtonsPanel:
+ bl_space_type = 'PROPERTIES'
+ bl_region_type = 'WINDOW'
+ bl_context = "collection"
+ # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+ @classmethod
+ def poll(cls, context):
+ return (context.engine in cls.COMPAT_ENGINES)
+
+class COLLECTION_PT_collection_flags(CollectionButtonsPanel, Panel):
+ bl_label = "Collection Flags"
+
+ def draw(self, context):
+ layout=self.layout
+ collection=context.collection
+ vl = context.view_layer
+ vlc = vl.active_layer_collection
+ if vlc.name == 'Master Collection':
+ row = layout.row()
+ row.label(text="This is the master collection")
+ return
+
+ row = layout.row()
+ col = row.column(align=True)
+ col.prop(vlc,"hide_viewport")
+ col.prop(vlc,"holdout")
+ col.prop(vlc,"indirect_only")
+ row = layout.row()
+ col = row.column(align=True)
+ col.prop(collection,"hide_select")
+ col.prop(collection,"hide_viewport")
+ col.prop(collection,"hide_render")
+
+
+class COLLECTION_PT_lanpr_collection(CollectionButtonsPanel, Panel):
+ bl_label = "Collection LANPR"
+
+ @classmethod
+ def poll(cls, context):
+ return context.scene.lanpr.enabled
+
+ def draw(self,context):
+ layout = self.layout
+ collection = context.collection
+ row = layout.row()
+ row.prop(collection.lanpr,"usage",expand=True)
+ if collection.lanpr.usage!='INCLUDE':
+ layout.prop(collection.lanpr,"force")
+
+classes = (
+ COLLECTION_PT_collection_flags,
+ COLLECTION_PT_lanpr_collection,
+)
+
+if __name__ == "__main__": # only for live edit.
+ from bpy.utils import register_class
+ for cls in classes:
+ register_class(cls)
diff --git a/release/scripts/startup/bl_ui/properties_view_layer.py b/release/scripts/startup/bl_ui/properties_view_layer.py
index 2ebe55c65d5..0fb85501235 100644
--- a/release/scripts/startup/bl_ui/properties_view_layer.py
+++ b/release/scripts/startup/bl_ui/properties_view_layer.py
@@ -82,25 +82,9 @@ class VIEWLAYER_PT_eevee_layer_passes(ViewLayerButtonsPanel, Panel):
col = flow.column()
col.prop(view_layer, "use_pass_subsurface_color", text="Subsurface Color")
-class VIEWLAYER_PT_lanpr_collection(ViewLayerButtonsPanel, Panel):
- bl_label = "Collection LANPR"
-
- @classmethod
- def poll(cls, context):
- return context.scene.lanpr.enabled
-
- def draw(self,context):
- layout = self.layout
- collection = context.collection
- row = layout.row()
- row.prop(collection.lanpr,"usage",expand=True)
- if collection.lanpr.usage!='INCLUDE':
- layout.prop(collection.lanpr,"force")
-
classes = (
VIEWLAYER_PT_layer,
VIEWLAYER_PT_eevee_layer_passes,
- VIEWLAYER_PT_lanpr_collection,
)
if __name__ == "__main__": # only for live edit.
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index fde8b8f85f8..b7177f30f71 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -164,6 +164,31 @@ static int buttons_context_path_world(ButsContextPath *path)
return 0;
}
+static int buttons_context_path_collection(ButsContextPath *path, wmWindow* window)
+{
+ Scene *scene;
+ World *world;
+ PointerRNA *ptr = &path->ptr[path->len - 1];
+
+ /* if we already have a (pinned) collection, we're done */
+ if (RNA_struct_is_a(ptr->type, &RNA_Collection)) {
+ return 1;
+ }
+ /* if we have a view layer, use the view layer's active collection */
+ else if (buttons_context_path_view_layer(path, window)) {
+ ViewLayer *view_layer = path->ptr[path->len - 1].data;
+ Collection* c = view_layer->active_collection->collection;
+ if (c) {
+ RNA_id_pointer_create(&c->id, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+
+ /* no path to a collection possible */
+ return 0;
+}
+
static int buttons_context_path_linestyle(ButsContextPath *path, wmWindow *window)
{
FreestyleLineStyle *linestyle;
@@ -575,6 +600,9 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma
case BCONTEXT_WORLD:
found = buttons_context_path_world(path);
break;
+ case BCONTEXT_COLLECTION:
+ found = buttons_context_path_collection(path, window);
+ break;
case BCONTEXT_TOOL:
found = true;
break;
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 129f249d7d0..a487379ca7a 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -160,6 +160,9 @@ static void buttons_main_region_layout_properties(const bContext *C,
case BCONTEXT_WORLD:
contexts[0] = "world";
break;
+ case BCONTEXT_COLLECTION:
+ contexts[0] = "collection";
+ break;
case BCONTEXT_OBJECT:
contexts[0] = "object";
break;
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 20d4f7d96e4..58b39b6e0c2 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -195,6 +195,7 @@ typedef enum eSpaceButtons_Context {
BCONTEXT_TOOL = 14,
BCONTEXT_SHADERFX = 15,
BCONTEXT_OUTPUT = 16,
+ BCONTEXT_COLLECTION = 17,
/* always as last... */
BCONTEXT_TOT,
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 2b51b1eee97..9472296de7e 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -383,6 +383,7 @@ static const EnumPropertyItem buttons_context_items[] = {
{BCONTEXT_OUTPUT, "OUTPUT", ICON_OUTPUT, "Output", "Output"},
{BCONTEXT_VIEW_LAYER, "VIEW_LAYER", ICON_RENDER_RESULT, "View Layer", "View Layer"},
{BCONTEXT_WORLD, "WORLD", ICON_WORLD, "World", "World"},
+ {BCONTEXT_COLLECTION, "COLLECTION", ICON_GROUP, "Collection", "Collection"},
{BCONTEXT_OBJECT, "OBJECT", ICON_OBJECT_DATA, "Object", "Object"},
{BCONTEXT_CONSTRAINT, "CONSTRAINT", ICON_CONSTRAINT, "Constraints", "Object Constraints"},
{BCONTEXT_MODIFIER, "MODIFIER", ICON_MODIFIER, "Modifiers", "Modifiers"},
@@ -1643,6 +1644,14 @@ static const EnumPropertyItem *rna_SpaceProperties_context_itemf(bContext *UNUSE
RNA_enum_item_add_separator(&item, &totitem);
}
+ if (sbuts->pathflag & (1 << BCONTEXT_COLLECTION)) {
+ RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_COLLECTION);
+ }
+
+ if (totitem) {
+ RNA_enum_item_add_separator(&item, &totitem);
+ }
+
if (sbuts->pathflag & (1 << BCONTEXT_OBJECT)) {
RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_OBJECT);
}
More information about the Bf-blender-cvs
mailing list