diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-07-05 21:27:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-07-05 21:43:50 +0300 |
commit | 72e04f98909c0970c82c3e708b0c651553487693 (patch) | |
tree | 810994a4668e46fa08b89f70057286d3b4014637 /source/blender | |
parent | e5ca319f9db4de752fe7628807d7a1edad2389c0 (diff) |
Draw Manager: simplify object mask usage
Remove flag defines, use object types directly.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 93 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 14 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 7 |
3 files changed, 42 insertions, 72 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 0a45dd7f123..1e77631fbf0 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -2127,6 +2127,10 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) return; } + if (v3d->overlay.object_type_exclude & (1 << ob->type)) { + return; + } + bool do_outlines = (draw_ctx->v3d->flag & V3D_SELECT_OUTLINE) && ((ob->base_flag & BASE_SELECTED) != 0); bool show_relations = ((draw_ctx->v3d->flag & V3D_HIDE_HELPLINES) == 0); @@ -2185,31 +2189,26 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) break; case OB_LATTICE: { - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_OTHER) == 0) { - if (ob != draw_ctx->object_edit) { - struct Gwn_Batch *geom = DRW_cache_lattice_wire_get(ob, false); - if (theme_id == TH_UNDEFINED) { - theme_id = DRW_object_wire_theme_get(ob, view_layer, NULL); - } - - DRWShadingGroup *shgroup = shgroup_theme_id_to_wire_or(stl, theme_id, stl->g_data->wire); - DRW_shgroup_call_object_add(shgroup, geom, ob); + if (ob != draw_ctx->object_edit) { + struct Gwn_Batch *geom = DRW_cache_lattice_wire_get(ob, false); + if (theme_id == TH_UNDEFINED) { + theme_id = DRW_object_wire_theme_get(ob, view_layer, NULL); } + + DRWShadingGroup *shgroup = shgroup_theme_id_to_wire_or(stl, theme_id, stl->g_data->wire); + DRW_shgroup_call_object_add(shgroup, geom, ob); } break; } - case OB_CURVE: { - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_OTHER) == 0) { - if (ob != draw_ctx->object_edit) { - struct Gwn_Batch *geom = DRW_cache_curve_edge_wire_get(ob); - if (theme_id == TH_UNDEFINED) { - theme_id = DRW_object_wire_theme_get(ob, view_layer, NULL); - } - DRWShadingGroup *shgroup = shgroup_theme_id_to_wire_or(stl, theme_id, stl->g_data->wire); - DRW_shgroup_call_object_add(shgroup, geom, ob); + if (ob != draw_ctx->object_edit) { + struct Gwn_Batch *geom = DRW_cache_curve_edge_wire_get(ob); + if (theme_id == TH_UNDEFINED) { + theme_id = DRW_object_wire_theme_get(ob, view_layer, NULL); } + DRWShadingGroup *shgroup = shgroup_theme_id_to_wire_or(stl, theme_id, stl->g_data->wire); + DRW_shgroup_call_object_add(shgroup, geom, ob); } break; } @@ -2221,52 +2220,34 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) break; } case OB_LAMP: - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_LAMP) == 0) - { - DRW_shgroup_lamp(stl, ob, view_layer); - } + DRW_shgroup_lamp(stl, ob, view_layer); break; case OB_CAMERA: - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_CAMERA) == 0) - { - DRW_shgroup_camera(stl, ob, view_layer); - } + DRW_shgroup_camera(stl, ob, view_layer); break; case OB_EMPTY: - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_EMPTY) == 0) - { - DRW_shgroup_empty(stl, psl, ob, view_layer); - } + DRW_shgroup_empty(stl, psl, ob, view_layer); break; case OB_SPEAKER: - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_SPEAKER) == 0) - { - DRW_shgroup_speaker(stl, ob, view_layer); - } + DRW_shgroup_speaker(stl, ob, view_layer); break; case OB_LIGHTPROBE: - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_LIGHTPROBE) == 0) - { - DRW_shgroup_lightprobe(stl, psl, ob, view_layer); - } + DRW_shgroup_lightprobe(stl, psl, ob, view_layer); break; case OB_ARMATURE: { - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_ARMATURE) == 0) - { - 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); - } + 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; @@ -2275,10 +2256,8 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) break; } - if ((v3d->overlay.hidden_object_types & V3D_OVERLAY_HIDE_OTHER) == 0) { - if (ob->pd && ob->pd->forcefield) { - DRW_shgroup_forcefield(stl, ob, view_layer); - } + if (ob->pd && ob->pd->forcefield) { + DRW_shgroup_forcefield(stl, ob, view_layer); } /* don't show object extras in set's */ diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index c1244e9a0c7..5668cf24fe6 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -179,7 +179,7 @@ typedef struct View3DOverlay { /* Other settings */ float wireframe_threshold; - int hidden_object_types; + int object_type_exclude; } View3DOverlay; @@ -384,18 +384,6 @@ enum { V3D_OVERLAY_ONION_SKINS = (1 << 7), }; -/* View3DOverlay->hidden_object_types */ -enum { - V3D_OVERLAY_HIDE_EMPTY = (1 << OB_EMPTY), - V3D_OVERLAY_HIDE_LAMP = (1 << OB_LAMP), - V3D_OVERLAY_HIDE_CAMERA = (1 << OB_CAMERA), - V3D_OVERLAY_HIDE_SPEAKER = (1 << OB_SPEAKER), - V3D_OVERLAY_HIDE_LIGHTPROBE = (1 << OB_LIGHTPROBE), - V3D_OVERLAY_HIDE_ARMATURE = (1 << OB_ARMATURE), - V3D_OVERLAY_HIDE_OTHER = (1 << 14), -}; -#define V3D_OVERLAY_HIDE_NON_RENDERABLE (V3D_OVERLAY_HIDE_EMPTY | V3D_OVERLAY_HIDE_LAMP | V3D_OVERLAY_HIDE_CAMERA | V3D_OVERLAY_HIDE_SPEAKER | V3D_OVERLAY_HIDE_LIGHTPROBE | V3D_OVERLAY_HIDE_ARMATURE | V3D_OVERLAY_HIDE_OTHER) - /* 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 df7cc228fc4..239203bd384 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -2616,8 +2616,11 @@ 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_non_renderable_objects", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "overlay.hidden_object_types", V3D_OVERLAY_HIDE_NON_RENDERABLE); + prop = RNA_def_property(srna, "show_non_geometry", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna( + prop, NULL, "overlay.object_type_exclude", + ((1 << OB_TYPE_MAX) - 1) & + ~((1 << OB_MESH) | (1 << OB_CURVE) | (1 << OB_SURF) | (1 << OB_FONT) | (1 << OB_MBALL))); RNA_def_property_boolean_default(prop, true); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_ui_text(prop, "Show Non Renderable", "Draw not renderable objects in the overlay"); |