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
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2018-07-05 16:01:04 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-07-05 17:57:22 +0300
commit4dfcc6c25a6e058e107b996d08403b803cc52915 (patch)
tree308d13b34d2161ff7ac441f5da7043198acdecce
parent5db711fdd9d23ef2e54f19545398a6520fa02b56 (diff)
Overlay: enable/disable drawing of specific object types.
This patch will allow users to customize what object types will be drawn by the object mode overlay. It supports: Empties, Lamps, Cameras, Speakers, Armatures and Lightprobes. It currently does not support Physics objects due to the overlap it has with other objects types. Also be aware that in pose mode the armature is drawn, but not by the object mode overlay Reviewers: campbellbarton Tags: #bf_blender_2.8 Differential Revision: https://developer.blender.org/D3524
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py9
-rw-r--r--source/blender/blenloader/intern/versioning_280.c13
-rw-r--r--source/blender/draw/modes/object_mode.c52
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c1
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h14
-rw-r--r--source/blender/makesrna/intern/rna_space.c48
6 files changed, 119 insertions, 18 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 7b71d41e678..0c3219ae8e1 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -3833,6 +3833,14 @@ class VIEW3D_PT_overlay(Panel):
sub.prop(overlay, "show_all_objects_origin")
sub = split.column()
+ row = sub.row(align=True)
+ row.prop(overlay, "show_empties", text="", toggle=True)
+ row.prop(overlay, "show_lamps", text="", toggle=True)
+ row.prop(overlay, "show_cameras", text="", toggle=True)
+ row.prop(overlay, "show_armatures", text="", toggle=True)
+ row.prop(overlay, "show_lightprobes", text="", toggle=True)
+ row.prop(overlay, "show_speakers", text="", toggle=True)
+
sub.prop(overlay, "show_relationship_lines")
sub.prop(overlay, "show_motion_paths")
#sub.prop(overlay, "show_onion_skins")
@@ -3847,6 +3855,7 @@ class VIEW3D_PT_overlay(Panel):
sub.active = overlay.show_wireframes
sub.prop(overlay, "wireframe_threshold", text="")
+
col = layout.column()
col.active = display_all
split = col.split(percentage=0.55)
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 3bdd4db3b94..8194648f369 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1530,6 +1530,19 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
+ if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "int", "visible_object_types")) {
+ for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
+ for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
+ for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
+ if (sl->spacetype == SPACE_VIEW3D) {
+ View3D *v3d = (View3D *)sl;
+ v3d->overlay.visible_object_types = V3D_OVERLAY_VISIBLE_OBJECT_TYPES_MASK;
+ }
+ }
+ }
+ }
+ }
+
for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) {
if (scene->toolsettings->manipulator_flag == 0) {
scene->toolsettings->manipulator_flag = SCE_MANIP_TRANSLATE | SCE_MANIP_ROTATE | SCE_MANIP_SCALE;
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 736bde725ae..2beb453e069 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -2217,34 +2217,52 @@ static void OBJECT_cache_populate(void *vedata, Object *ob)
break;
}
case OB_LAMP:
- DRW_shgroup_lamp(stl, ob, view_layer);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_LAMP)
+ {
+ DRW_shgroup_lamp(stl, ob, view_layer);
+ }
break;
case OB_CAMERA:
- DRW_shgroup_camera(stl, ob, view_layer);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_CAMERA)
+ {
+ DRW_shgroup_camera(stl, ob, view_layer);
+ }
break;
case OB_EMPTY:
- DRW_shgroup_empty(stl, psl, ob, view_layer);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_EMPTY)
+ {
+ DRW_shgroup_empty(stl, psl, ob, view_layer);
+ }
break;
case OB_SPEAKER:
- DRW_shgroup_speaker(stl, ob, view_layer);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_SPEAKER)
+ {
+ DRW_shgroup_speaker(stl, ob, view_layer);
+ }
break;
case OB_LIGHTPROBE:
- DRW_shgroup_lightprobe(stl, psl, ob, view_layer);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_LIGHTPROBE)
+ {
+ DRW_shgroup_lightprobe(stl, psl, ob, view_layer);
+ }
break;
case OB_ARMATURE:
{
- bArmature *arm = ob->data;
- if (arm->edbo == NULL) {
- if (DRW_state_is_select() || !DRW_pose_mode_armature(ob, draw_ctx->obact)) {
- DRWArmaturePasses passes = {
- .bone_solid = psl->bone_solid,
- .bone_outline = psl->bone_outline,
- .bone_wire = psl->bone_wire,
- .bone_envelope = psl->bone_envelope,
- .bone_axes = psl->bone_axes,
- .relationship_lines = NULL, /* Don't draw relationship lines */
- };
- DRW_shgroup_armature_object(ob, view_layer, passes);
+ if (v3d->overlay.visible_object_types & V3D_OVERLAY_SHOW_ARMATURE)
+ {
+ bArmature *arm = ob->data;
+ if (arm->edbo == NULL) {
+ if (DRW_state_is_select() || !DRW_pose_mode_armature(ob, draw_ctx->obact)) {
+ DRWArmaturePasses passes = {
+ .bone_solid = psl->bone_solid,
+ .bone_outline = psl->bone_outline,
+ .bone_wire = psl->bone_wire,
+ .bone_envelope = psl->bone_envelope,
+ .bone_axes = psl->bone_axes,
+ .relationship_lines = NULL, /* Don't draw relationship lines */
+ };
+ DRW_shgroup_armature_object(ob, view_layer, passes);
+ }
}
}
break;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 77beadccd5d..5383e3d9e01 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -338,6 +338,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene)
v3d->overlay.texture_paint_mode_opacity = 0.8;
v3d->overlay.weight_paint_mode_opacity = 0.8;
v3d->overlay.vertex_paint_mode_opacity = 0.8;
+ v3d->overlay.visible_object_types = V3D_OVERLAY_VISIBLE_OBJECT_TYPES_MASK;
v3d->gridflag = V3D_SHOW_X | V3D_SHOW_Y | V3D_SHOW_FLOOR;
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 70f06b2eda0..f7fd4a52a5f 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -49,6 +49,7 @@ struct GPUViewport;
#include "DNA_defs.h"
#include "DNA_listBase.h"
#include "DNA_image_types.h"
+#include "DNA_object_types.h"
#include "DNA_movieclip_types.h"
#include "DNA_gpu_types.h"
@@ -178,8 +179,8 @@ typedef struct View3DOverlay {
/* Other settings */
float wireframe_threshold;
+ int visible_object_types;
- int pad;
} View3DOverlay;
/* 3D ViewPort Struct */
@@ -383,6 +384,17 @@ enum {
V3D_OVERLAY_ONION_SKINS = (1 << 7),
};
+/* View3DOverlay->visible_object_types */
+enum {
+ V3D_OVERLAY_SHOW_EMPTY = (1 << OB_EMPTY),
+ V3D_OVERLAY_SHOW_LAMP = (1 << OB_LAMP),
+ V3D_OVERLAY_SHOW_CAMERA = (1 << OB_CAMERA),
+ V3D_OVERLAY_SHOW_SPEAKER = (1 << OB_SPEAKER),
+ V3D_OVERLAY_SHOW_LIGHTPROBE = (1 << OB_LIGHTPROBE),
+ V3D_OVERLAY_SHOW_ARMATURE = (1 << OB_ARMATURE),
+};
+#define V3D_OVERLAY_VISIBLE_OBJECT_TYPES_MASK (V3D_OVERLAY_SHOW_EMPTY | V3D_OVERLAY_SHOW_LAMP | V3D_OVERLAY_SHOW_CAMERA | V3D_OVERLAY_SHOW_SPEAKER | V3D_OVERLAY_SHOW_LIGHTPROBE | V3D_OVERLAY_SHOW_ARMATURE)
+
/* View3DOverlay->edit_flag */
enum {
V3D_OVERLAY_EDIT_VERT_NORMALS = (1 << 0),
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index dfad4c07cb3..00baf948a84 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2608,6 +2608,54 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show 3D Cursor", "Display 3D Cursor Overlay");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+ prop = RNA_def_property(srna, "show_empties", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_EMPTY);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Empties", "Draw empties in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_EMPTY, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "show_cameras", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_CAMERA);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Cameras", "Draw cameras in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_CAMERA, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "show_speakers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_SPEAKER);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Speakers", "Draw speakers in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_SPEAKER, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "show_lightprobes", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_LIGHTPROBE);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Lightprobes", "Draw lightprobes in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_LIGHTPROBE, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "show_armatures", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_ARMATURE);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Armatures", "Draw armatures in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_ARMATURE, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "show_lamps", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overlay.visible_object_types", V3D_OVERLAY_SHOW_LAMP);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Show Lamps", "Draw lamps in the overlay");
+ RNA_def_property_ui_icon(prop, ICON_OUTLINER_OB_LAMP, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
prop = RNA_def_property(srna, "show_text", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "overlay.flag", V3D_OVERLAY_HIDE_TEXT);
RNA_def_property_ui_text(prop, "Show Text", "Display overlay text");