diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-05 11:45:15 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-05 16:54:36 +0300 |
commit | 2094b454474de25e42cd6ec1f63ebc84f50f666a (patch) | |
tree | 91331e81b3cef843fa29dfd3883ca60f36b06b30 | |
parent | 1983eea98ef73e6fe4c9bd187944d122dc1c7b07 (diff) |
3D Viewport: make shading and overlay DNA match UI names.
We should use consistent naming between the internal code and UI whenever
possible, only reason not to is file compatibility.
-rw-r--r-- | release/scripts/modules/bpy_extras/object_utils.py | 2 | ||||
-rw-r--r-- | release/scripts/presets/keyconfig/3dsmax.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 31 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_blender_version.h | 2 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 25 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl | 10 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_materials.c | 52 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_private.h | 6 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 11 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_view.c | 2 | ||||
-rw-r--r-- | source/blender/draw/modes/overlay_mode.c | 12 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 6 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 72 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 193 |
14 files changed, 211 insertions, 215 deletions
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py index 04b3858bb0d..fd1f253df03 100644 --- a/release/scripts/modules/bpy_extras/object_utils.py +++ b/release/scripts/modules/bpy_extras/object_utils.py @@ -222,7 +222,7 @@ def object_add_grid_scale(context): space_data = context.space_data if space_data and space_data.type == 'VIEW_3D': - return space_data.grid_scale_unit + return space_data.overlay.grid_scale_unit return 1.0 diff --git a/release/scripts/presets/keyconfig/3dsmax.py b/release/scripts/presets/keyconfig/3dsmax.py index 1530554812b..ed51bf95a84 100644 --- a/release/scripts/presets/keyconfig/3dsmax.py +++ b/release/scripts/presets/keyconfig/3dsmax.py @@ -722,7 +722,7 @@ kmi.properties.value_1 = 'VERTEX' kmi.properties.value_2 = 'INCREMENT' kmi = km.keymap_items.new('view3d.select_border', 'EVT_TWEAK_L', 'ANY', ctrl=True) kmi = km.keymap_items.new('wm.context_toggle', 'G', 'PRESS') -kmi.properties.data_path = 'space_data.show_floor' +kmi.properties.data_path = 'space_data.overlay.show_floor' # Map Animation Channels km = kc.keymaps.new('Animation Channels', space_type='EMPTY', region_type='WINDOW', modal=False) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 7328f28bfad..3a35990fd60 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3546,9 +3546,9 @@ class VIEW3D_PT_shading(Panel): if shading.type == 'SOLID': col.separator() - col.row().prop(shading, "single_color_mode", expand=True) + col.row().prop(shading, "color_type", expand=True) - if shading.single_color_mode == 'SINGLE': + if shading.color_type == 'SINGLE': col.separator() col.row().prop(shading, "single_color", text="") @@ -3580,7 +3580,6 @@ class VIEW3D_PT_overlay(Panel): view = context.space_data overlay = view.overlay - shading = view.shading scene = context.scene display_all = overlay.show_overlays @@ -3606,30 +3605,30 @@ class VIEW3D_PT_overlay(Panel): col = layout.column() col.active = display_all - col.prop(view, "show_outline_selected") - col.prop(view, "show_all_objects_origin") - col.prop(view, "show_relationship_lines") - col.prop(view, "show_face_orientation_overlay") + col.prop(overlay, "show_outline_selected") + col.prop(overlay, "show_all_objects_origin") + col.prop(overlay, "show_relationship_lines") + col.prop(overlay, "show_face_orientation") col = layout.column() col.active = display_all split = col.split(percentage=0.55) - split.prop(view, "show_floor", text="Grid Floor") + split.prop(overlay, "show_floor", text="Grid Floor") row = split.row(align=True) - row.prop(view, "show_axis_x", text="X", toggle=True) - row.prop(view, "show_axis_y", text="Y", toggle=True) - row.prop(view, "show_axis_z", text="Z", toggle=True) + row.prop(overlay, "show_axis_x", text="X", toggle=True) + row.prop(overlay, "show_axis_y", text="Y", toggle=True) + row.prop(overlay, "show_axis_z", text="Z", toggle=True) sub = col.column(align=True) - sub.active = bool(view.show_floor or view.region_quadviews or not view.region_3d.is_perspective) + sub.active = bool(overlay.show_floor or view.region_quadviews or not view.region_3d.is_perspective) subsub = sub.column(align=True) - subsub.active = view.show_floor - subsub.prop(view, "grid_lines", text="Lines") - sub.prop(view, "grid_scale", text="Scale") + subsub.active = overlay.show_floor + subsub.prop(overlay, "grid_lines", text="Lines") + sub.prop(overlay, "grid_scale", text="Scale") subsub = sub.column(align=True) subsub.active = scene.unit_settings.system == 'NONE' - subsub.prop(view, "grid_subdivisions", text="Subdivisions") + subsub.prop(overlay, "grid_subdivisions", text="Subdivisions") class VIEW3D_PT_quad_view(Panel): diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index 194757561d7..a49753d331f 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -28,7 +28,7 @@ * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 280 -#define BLENDER_SUBVERSION 12 +#define BLENDER_SUBVERSION 13 /* Several breakages with 270, e.g. constraint deg vs rad */ #define BLENDER_MINVERSION 270 #define BLENDER_MINSUBVERSION 6 diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 8cd9c13be32..10c2e7cb3fb 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -966,7 +966,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) { if (sl->spacetype == SPACE_VIEW3D) { View3D *v3d = (View3D *)sl; - v3d->drawtype_lighting = V3D_LIGHTING_STUDIO; + v3d->shading.light = V3D_LIGHTING_STUDIO; /* Assume (demo) files written with 2.8 want to show * Eevee renders in the viewport. */ @@ -1069,22 +1069,31 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) } } } - if (sl->spacetype == SPACE_VIEW3D) { - View3D *v3d = (View3D *)sl; - v3d->drawtype_ambient_intensity = 0.5; - copy_v3_fl(v3d->drawtype_single_color, 1.0f); - v3d->overlays |= V3D_OVERLAY_HIDE_CURSOR; - } } } } } - { + if (!MAIN_VERSION_ATLEAST(main, 280, 13)) { + /* Initialize specular factor. */ if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "spec_fac")) { for (Lamp *la = main->lamp.first; la; la = la->id.next) { la->spec_fac = 1.0f; } } + + /* Initialize new view3D options. */ + for (bScreen *screen = main->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->shading.ambient_intensity = 0.5; + copy_v3_fl(v3d->shading.single_color, 1.0f); + v3d->overlay.flag |= V3D_OVERLAY_HIDE_CURSOR; + } + } + } + } } } diff --git a/source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl index 2a17a508046..bc6125f18b6 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl @@ -18,12 +18,12 @@ void main() vec2 uv_viewport = gl_FragCoord.xy * invertedViewportSize; uint object_id = texelFetch(objectId, texel, 0).r; -#ifndef V3D_DRAWOPTION_OBJECT_OVERLAP +#ifndef V3D_SHADING_OBJECT_OVERLAP if (object_id == NO_OBJECT_ID) { fragColor = vec4(background_color(world_data, uv_viewport.y), 0.0); return; } -#else /* !V3D_DRAWOPTION_OBJECT_OVERLAP */ +#else /* !V3D_SHADING_OBJECT_OVERLAP */ float object_overlap = calculate_object_overlap(objectId, texel, object_id); if (object_id == NO_OBJECT_ID) { @@ -35,7 +35,7 @@ void main() } return; } -#endif /* !V3D_DRAWOPTION_OBJECT_OVERLAP */ +#endif /* !V3D_SHADING_OBJECT_OVERLAP */ #ifdef V3D_LIGHTING_STUDIO @@ -57,9 +57,9 @@ void main() #endif /* V3D_LIGHTING_STUDIO */ -#ifdef V3D_DRAWOPTION_OBJECT_OVERLAP +#ifdef V3D_SHADING_OBJECT_OVERLAP shaded_color = mix(objectOverlapColor, shaded_color, object_overlap); -#endif /* V3D_DRAWOPTION_OBJECT_OVERLAP */ +#endif /* V3D_SHADING_OBJECT_OVERLAP */ fragColor = vec4(shaded_color, 1.0); } diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c index 9126ab801c7..1ee4aa88c8d 100644 --- a/source/blender/draw/engines/workbench/workbench_materials.c +++ b/source/blender/draw/engines/workbench/workbench_materials.c @@ -72,18 +72,19 @@ extern char datatoc_workbench_world_light_lib_glsl[]; extern DrawEngineType draw_engine_workbench_solid; -#define NORMAL_VIEWPORT_PASS_ENABLED(wpd) (wpd->drawtype_lighting & V3D_LIGHTING_STUDIO) -#define SHADOW_ENABLED(wpd) (wpd->drawtype_options & V3D_DRAWOPTION_SHADOW) +#define OBJECT_ID_PASS_ENABLED(wpd) (wpd->shading.flag & V3D_SHADING_OBJECT_OVERLAP) +#define NORMAL_VIEWPORT_PASS_ENABLED(wpd) (wpd->shading.light & V3D_LIGHTING_STUDIO) +#define SHADOW_ENABLED(wpd) (wpd->shading.flag & V3D_SHADING_SHADOW) static char *workbench_build_defines(WORKBENCH_PrivateData *wpd) { char *str = NULL; DynStr *ds = BLI_dynstr_new(); - if (wpd->drawtype_options & V3D_DRAWOPTION_OBJECT_OVERLAP) { - BLI_dynstr_appendf(ds, "#define V3D_DRAWOPTION_OBJECT_OVERLAP\n"); + if (wpd->shading.flag & V3D_SHADING_OBJECT_OVERLAP) { + BLI_dynstr_appendf(ds, "#define V3D_SHADING_OBJECT_OVERLAP\n"); } - if (wpd->drawtype_lighting & V3D_LIGHTING_STUDIO) { + if (wpd->shading.light & V3D_LIGHTING_STUDIO) { BLI_dynstr_appendf(ds, "#define V3D_LIGHTING_STUDIO\n"); } @@ -106,10 +107,10 @@ static char *workbench_build_composite_frag(WORKBENCH_PrivateData *wpd) BLI_dynstr_append(ds, datatoc_workbench_common_lib_glsl); BLI_dynstr_append(ds, datatoc_workbench_background_lib_glsl); - if (wpd->drawtype_lighting & V3D_LIGHTING_STUDIO) { + if (wpd->shading.light & V3D_LIGHTING_STUDIO) { BLI_dynstr_append(ds, datatoc_workbench_world_light_lib_glsl); } - if (wpd->drawtype_options & V3D_DRAWOPTION_OBJECT_OVERLAP) { + if (wpd->shading.flag & V3D_SHADING_OBJECT_OVERLAP) { BLI_dynstr_append(ds, datatoc_workbench_object_overlap_lib_glsl); } @@ -136,9 +137,9 @@ static char *workbench_build_prepass_frag(void) static int get_shader_index(WORKBENCH_PrivateData *wpd) { - const int DRAWOPTIONS_MASK = V3D_DRAWOPTION_OBJECT_OVERLAP; - int index = (wpd->drawtype_options & DRAWOPTIONS_MASK); - index = (index << 2) + wpd->drawtype_lighting; + const int DRAWOPTIONS_MASK = V3D_SHADING_OBJECT_OVERLAP; + int index = (wpd->shading.flag & DRAWOPTIONS_MASK); + index = (index << 2) + wpd->shading.light; return index; } @@ -183,10 +184,10 @@ static void workbench_init_object_data(ObjectEngineData *engine_data) static void get_material_solid_color(WORKBENCH_PrivateData *wpd, Object *ob, Material *mat, float *color, float hsv_saturation, float hsv_value) { static float default_color[] = {1.0f, 1.0f, 1.0f}; - if (DRW_object_is_paint_mode(ob) || wpd->drawtype_options & V3D_DRAWOPTION_SINGLE_COLOR) { - copy_v3_v3(color, wpd->drawtype_single_color); + if (DRW_object_is_paint_mode(ob) || wpd->shading.color_type == V3D_SHADING_SINGLE_COLOR) { + copy_v3_v3(color, wpd->shading.single_color); } - else if (wpd->drawtype_options & V3D_DRAWOPTION_RANDOMIZE) { + else if (wpd->shading.color_type == V3D_SHADING_RANDOM_COLOR) { uint hash = BLI_ghashutil_strhash_p_murmur(ob->id.name); if (ob->id.lib) { hash = (hash * 13) ^ BLI_ghashutil_strhash_p_murmur(ob->id.lib->name); @@ -196,11 +197,11 @@ static void get_material_solid_color(WORKBENCH_PrivateData *wpd, Object *ob, Mat float hsv[3] = {offset, hsv_saturation, hsv_value}; hsv_to_rgb_v(hsv, color); } - else if (wpd->drawtype_options & V3D_DRAWOPTION_OBJECT_COLOR) { + else if (wpd->shading.color_type == V3D_SHADING_OBJECT_COLOR) { copy_v3_v3(color, ob->col); } else { - /* V3D_DRAWOPTION_MATERIAL_COLOR */ + /* V3D_SHADING_MATERIAL_COLOR */ if (mat) { copy_v3_v3(color, &mat->r); } @@ -297,18 +298,13 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata) View3D *v3d = DCS->v3d; if (v3d) { - wpd->drawtype_lighting = v3d->drawtype_lighting; - wpd->drawtype_options = v3d->drawtype_options; - wpd->drawtype_studiolight = v3d->drawtype_studiolight; - wpd->drawtype_ambient_intensity = v3d->drawtype_ambient_intensity; - copy_v3_v3(wpd->drawtype_single_color, v3d->drawtype_single_color); + wpd->shading = v3d->shading; } else { - wpd->drawtype_lighting = V3D_LIGHTING_STUDIO; - wpd->drawtype_options = 0; - wpd->drawtype_studiolight = 0; - wpd->drawtype_ambient_intensity = 0.5; - copy_v3_fl(wpd->drawtype_single_color, 1.0f); + memset(&wpd->shading, 0, sizeof(wpd->shading)); + wpd->shading.light = V3D_LIGHTING_STUDIO; + wpd->shading.ambient_intensity = 0.5; + copy_v3_fl(wpd->shading.single_color, 1.0f); } select_deferred_shaders(wpd); @@ -317,7 +313,7 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata) WORKBENCH_UBO_World *wd = &wpd->world_data; UI_GetThemeColor3fv(UI_GetThemeValue(TH_SHOW_BACK_GRAD) ? TH_LOW_GRAD:TH_HIGH_GRAD, wd->background_color_low); UI_GetThemeColor3fv(TH_HIGH_GRAD, wd->background_color_high); - studiolight_update_world(wpd->drawtype_studiolight, wd); + studiolight_update_world(wpd->shading.studio_light, wd); wpd->world_ubo = DRW_uniformbuffer_create(sizeof(WORKBENCH_UBO_World), NULL); DRW_uniformbuffer_update(wpd->world_ubo, &wpd->world_data); @@ -350,7 +346,7 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata) grp = DRW_shgroup_create(wpd->composite_sh, psl->composite_shadow_pass); DRW_shgroup_stencil_mask(grp, 0x00); workbench_composite_uniforms(wpd, grp); - DRW_shgroup_uniform_float(grp, "lightMultiplier", &wpd->drawtype_ambient_intensity, 1); + DRW_shgroup_uniform_float(grp, "lightMultiplier", &wpd->shading.ambient_intensity, 1); DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL); #endif } @@ -446,7 +442,7 @@ void workbench_materials_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob const bool is_active = (ob == draw_ctx->obact); const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; - if ((vedata->stl->g_data->drawtype_options & V3D_DRAWOPTION_SOLID_COLOR_MASK) != 0 || is_sculpt_mode) { + if (vedata->stl->g_data->shading.color_type != V3D_SHADING_MATERIAL_COLOR || is_sculpt_mode) { /* No material split needed */ struct Gwn_Batch *geom = DRW_cache_object_surface_get(ob); if (geom) { diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h index c0dfcc4e32f..3c2e6d43ab1 100644 --- a/source/blender/draw/engines/workbench/workbench_private.h +++ b/source/blender/draw/engines/workbench/workbench_private.h @@ -75,11 +75,7 @@ typedef struct WORKBENCH_PrivateData { struct GHash *material_hash; struct GPUShader *prepass_sh; struct GPUShader *composite_sh; - short drawtype_lighting; - short drawtype_options; - short drawtype_studiolight; - float drawtype_ambient_intensity; - float drawtype_single_color[3]; + View3DShading shading; struct GPUUniformBuffer *world_ubo; struct DRWShadingGroup *shadow_shgrp; WORKBENCH_UBO_World world_data; diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 6a70a0202b5..7e595d7fcdd 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -983,7 +983,7 @@ static void drw_engines_enable_external(void) /* TODO revisit this when proper layering is implemented */ /* Gather all draw engines needed and store them in DST.enabled_engines * That also define the rendering order of engines */ -static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int drawtype, int UNUSED(drawtype_lighting)) +static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int drawtype) { switch (drawtype) { case OB_WIRE: @@ -1065,9 +1065,9 @@ static void drw_engines_enable_from_mode(int mode) } } -static void drw_engines_enable_from_overlays(int draw_overlays) +static void drw_engines_enable_from_overlays(int overlay_flag) { - if (draw_overlays) { + if (overlay_flag) { use_drw_engine(&draw_engine_overlay_type); } } @@ -1085,12 +1085,11 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t const int mode = CTX_data_mode_enum_ex(DST.draw_ctx.object_edit, obact, DST.draw_ctx.object_mode); View3D * v3d = DST.draw_ctx.v3d; const int drawtype = v3d->drawtype; - const int drawtype_lighting = v3d->drawtype_lighting; - drw_engines_enable_from_engine(engine_type, drawtype, drawtype_lighting); + drw_engines_enable_from_engine(engine_type, drawtype); if (DRW_state_draw_support()) { - drw_engines_enable_from_overlays(v3d->overlays); + drw_engines_enable_from_overlays(v3d->overlay.flag); drw_engines_enable_from_object_mode(); drw_engines_enable_from_mode(mode); } diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c index 5b705a311c9..be43f0d8c0c 100644 --- a/source/blender/draw/intern/draw_view.c +++ b/source/blender/draw/intern/draw_view.c @@ -615,7 +615,7 @@ static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, Vie { Object *ob = OBACT(view_layer); View3D *v3d = draw_ctx->v3d; - if ((v3d->flag2 & V3D_RENDER_OVERRIDE) > 0 || (v3d->overlays & V3D_OVERLAY_HIDE_CURSOR)) { + if ((v3d->flag2 & V3D_RENDER_OVERRIDE) > 0 || (v3d->overlay.flag & V3D_OVERLAY_HIDE_CURSOR)) { return false; } diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c index 3c31001d4b7..e2b381347ff 100644 --- a/source/blender/draw/modes/overlay_mode.c +++ b/source/blender/draw/modes/overlay_mode.c @@ -49,7 +49,7 @@ typedef struct OVERLAY_Data { typedef struct OVERLAY_PrivateData { DRWShadingGroup *face_orientation_shgrp; - int overlays; + View3DOverlay overlay; } OVERLAY_PrivateData; /* Transient data */ /* *********** STATIC *********** */ @@ -90,14 +90,14 @@ static void overlay_cache_init(void *vedata) View3D *v3d = DCS->v3d; if (v3d) { - stl->g_data->overlays = v3d->overlays; + stl->g_data->overlay = v3d->overlay; } else { - stl->g_data->overlays = 0; + memset(&stl->g_data->overlay, 0, sizeof(stl->g_data->overlay)); } /* Face Orientation Pass */ - if (stl->g_data->overlays & V3D_OVERLAY_FACE_ORIENTATION) { + if (stl->g_data->overlay.flag & V3D_OVERLAY_FACE_ORIENTATION) { int state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_BLEND; psl->face_orientation_pass = DRW_pass_create("Face Orientation", state); stl->g_data->face_orientation_shgrp = DRW_shgroup_create(e_data.face_orientation_sh, psl->face_orientation_pass); @@ -116,7 +116,7 @@ static void overlay_cache_populate(void *vedata, Object *ob) struct Gwn_Batch *geom = DRW_cache_object_surface_get(ob); if (geom) { /* Face Orientation */ - if (stl->g_data->overlays & V3D_OVERLAY_FACE_ORIENTATION) { + if (stl->g_data->overlay.flag & V3D_OVERLAY_FACE_ORIENTATION) { DRW_shgroup_call_add(pd->face_orientation_shgrp, geom, ob->obmat); } } @@ -133,7 +133,7 @@ static void overlay_draw_scene(void *vedata) OVERLAY_StorageList *stl = data->stl; OVERLAY_PrivateData *pd = stl->g_data; - if (pd->overlays & V3D_OVERLAY_FACE_ORIENTATION) { + if (pd->overlay.flag & V3D_OVERLAY_FACE_ORIENTATION) { DRW_draw_pass(psl->face_orientation_pass); } } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index ee65cc01797..0231858a3f2 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -322,9 +322,9 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene) v3d->gridlines = 16; v3d->gridsubdiv = 10; v3d->drawtype = OB_SOLID; - v3d->drawtype_lighting = V3D_LIGHTING_STUDIO; - v3d->drawtype_ambient_intensity = 0.5; - copy_v3_fl(v3d->drawtype_single_color, 1.0f); + v3d->shading.light = V3D_LIGHTING_STUDIO; + v3d->shading.ambient_intensity = 0.5; + copy_v3_fl(v3d->shading.single_color, 1.0f); 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 ecb5f10be12..8e5deb7133b 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -131,6 +131,24 @@ typedef struct RegionView3D { float rot_axis[3]; } RegionView3D; +/* 3D Viewport Shading setings */ +typedef struct View3DShading { + short flag; + short color_type; + + short light; + short studio_light; + + float ambient_intensity; + float single_color[3]; +} View3DShading; + +/* 3D Viewport Overlay setings */ +typedef struct View3DOverlay { + int flag; + int pad; +} View3DOverlay; + /* 3D ViewPort Struct */ typedef struct View3D { struct SpaceLink *next, *prev; @@ -162,13 +180,9 @@ typedef struct View3D { unsigned int lay; int layact; - /** - * The drawing mode for the 3d display. Set to OB_BOUNDBOX, OB_WIRE, OB_SOLID, - * OB_TEXTURE, OB_MATERIAL or OB_RENDER */ - short drawtype; short ob_centre_cursor; /* optional bool for 3d cursor to define center */ short scenelock, around; - short flag, flag2; + short flag, flag2, pad2; float lens, grid; float near, far; @@ -202,7 +216,7 @@ typedef struct View3D { /* XXX deprecated? */ struct bGPdata *gpd DNA_DEPRECATED; /* Grease-Pencil Data (annotation layers) */ - /* multiview - stereo 3d */ + /* Stereoscopy settings */ short stereo3d_flag; char stereo3d_camera; char pad4; @@ -210,19 +224,13 @@ typedef struct View3D { float stereo3d_volume_alpha; float stereo3d_convergence_alpha; - /* Previous viewport draw type. - * Runtime-only, set in the rendered viewport toggle operator. - */ - short prev_drawtype; - /* drawtype options (lighting, random) used for drawtype == OB_SOLID */ - short drawtype_lighting; - short drawtype_options; - short drawtype_studiolight; - float drawtype_ambient_intensity; - float drawtype_single_color[3]; - int overlays; - + /* Display settings */ + short drawtype; /* Shading mode (OB_SOLID, OB_TEXTURE, ..) */ + short prev_drawtype; /* Runtime, for toggle between rendered viewport. */ int pad5; + + View3DShading shading; + View3DOverlay overlay; } View3D; @@ -299,30 +307,28 @@ typedef struct View3D { /* View3d->flag3 (short) */ #define V3D_SHOW_WORLD (1 << 0) -/* View3D->drawtype_lighting */ +/* View3DShading->light */ enum { V3D_LIGHTING_FLAT = 0, V3D_LIGHTING_STUDIO = 1, V3D_LIGHTING_SCENE = 2 }; -/* View3D->drawtype_options */ +/* View3DShading->flag */ +enum { + V3D_SHADING_OBJECT_OVERLAP = (1 << 0), + V3D_SHADING_SHADOW = (1 << 2), +}; + +/* View3DShading->single_color_type */ enum { - V3D_DRAWOPTION_MATERIAL_COLOR = (0 << 0), - V3D_DRAWOPTION_RANDOMIZE = (1 << 0), - V3D_DRAWOPTION_OBJECT_OVERLAP = (1 << 1), - V3D_DRAWOPTION_SINGLE_COLOR = (1 << 2), - V3D_DRAWOPTION_OBJECT_COLOR = (1 << 4), - V3D_DRAWOPTION_SHADOW = (1 << 5), - - /* These options are mutually exclusive. */ - V3D_DRAWOPTION_SOLID_COLOR_MASK = (V3D_DRAWOPTION_SINGLE_COLOR | - V3D_DRAWOPTION_RANDOMIZE | - V3D_DRAWOPTION_OBJECT_COLOR | - V3D_DRAWOPTION_MATERIAL_COLOR), + V3D_SHADING_MATERIAL_COLOR = 0, + V3D_SHADING_RANDOM_COLOR = 1, + V3D_SHADING_SINGLE_COLOR = 2, + V3D_SHADING_OBJECT_COLOR = 3, }; -/* View3D->overlays */ +/* View3DOverlay->flag */ enum { V3D_OVERLAY_FACE_ORIENTATION = (1 << 0), V3D_OVERLAY_HIDE_CURSOR = (1 << 1), diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 222de73492a..4b726e6b993 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -463,7 +463,7 @@ static void rna_View3D_CursorLocation_set(PointerRNA *ptr, const float *values) copy_v3_v3(cursor, values); } -static float rna_View3D_GridScaleUnit_get(PointerRNA *ptr) +static float rna_View3DOverlay_GridScaleUnit_get(PointerRNA *ptr) { View3D *v3d = (View3D *)(ptr->data); bScreen *screen = ptr->id.data; @@ -662,16 +662,6 @@ static void rna_3DViewShading_type_set(PointerRNA *ptr, int value) v3d->drawtype = value; } -static void rna_View3DShading_single_color_mode_set(PointerRNA *ptr, int value) { - View3D *v3d = (View3D *)ptr->data; - v3d->drawtype_options = (v3d->drawtype_options &~ V3D_DRAWOPTION_SOLID_COLOR_MASK) + value; -} - -static int rna_View3DShading_single_color_mode_get(PointerRNA *ptr) { - View3D *v3d = (View3D *)ptr->data; - return v3d->drawtype_options & V3D_DRAWOPTION_SOLID_COLOR_MASK; -} - static const EnumPropertyItem *rna_3DViewShading_type_itemf( bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free) @@ -2177,11 +2167,11 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - static const EnumPropertyItem single_color_mode_items[] = { - {V3D_DRAWOPTION_SINGLE_COLOR, "SINGLE", 0, "Single", "Show scene in a single color"}, - {V3D_DRAWOPTION_OBJECT_COLOR, "OBJECT", 0, "Object", "Show Object color"}, - {V3D_DRAWOPTION_MATERIAL_COLOR, "MATERIAL", 0, "Material", "Show Material color"}, - {V3D_DRAWOPTION_RANDOMIZE, "RANDOM", 0, "Random", "Show random object color"}, + static const EnumPropertyItem color_type_items[] = { + {V3D_SHADING_SINGLE_COLOR, "SINGLE", 0, "Single", "Show scene in a single color"}, + {V3D_SHADING_OBJECT_COLOR, "OBJECT", 0, "Object", "Show Object color"}, + {V3D_SHADING_MATERIAL_COLOR, "MATERIAL", 0, "Material", "Show Material color"}, + {V3D_SHADING_RANDOM_COLOR, "RANDOM", 0, "Random", "Show random object color"}, {0, NULL, 0, NULL, NULL} }; static const EnumPropertyItem studio_lighting_items[] = { @@ -2207,46 +2197,43 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Viewport Shading", "Method to display/shade objects in the 3D View"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); + RNA_def_struct_sdna(srna, "View3DShading"); + prop = RNA_def_property(srna, "light", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "drawtype_lighting"); + RNA_def_property_enum_sdna(prop, NULL, "light"); RNA_def_property_enum_items(prop, rna_enum_viewport_lighting_items); RNA_def_property_ui_text(prop, "Lighting", "Lighting Method for Solid/Texture Viewport Shading"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); prop = RNA_def_property(srna, "show_object_overlap", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "drawtype_options", V3D_DRAWOPTION_OBJECT_OVERLAP); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SHADING_OBJECT_OVERLAP); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_ui_text(prop, "Object Overlap", "Show Object Overlap"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); - prop = RNA_def_property(srna, "studiolight", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "drawtype_studiolight"); + prop = RNA_def_property(srna, "studio_light", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, studio_lighting_items); RNA_def_property_ui_text(prop, "Studiolight", "Studio lighting setup"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); - prop = RNA_def_property(srna, "single_color_mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, single_color_mode_items); - RNA_def_property_enum_funcs(prop, "rna_View3DShading_single_color_mode_get", - "rna_View3DShading_single_color_mode_set", - NULL); - RNA_def_property_ui_text(prop, "Color", "Single Color Mode"); + prop = RNA_def_property(srna, "color_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, color_type_items); + RNA_def_property_ui_text(prop, "Color", "Color Type"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); prop = RNA_def_property(srna, "single_color", PROP_FLOAT, PROP_COLOR); - RNA_def_property_float_sdna(prop, NULL, "drawtype_single_color"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Color", "Color for single color mode"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); prop = RNA_def_property(srna, "show_shadows", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "drawtype_options", V3D_DRAWOPTION_SHADOW); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SHADING_SHADOW); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_ui_text(prop, "Shadow", "Show Shadow"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); prop = RNA_def_property(srna, "ambient_light_intensity", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "drawtype_ambient_intensity"); + RNA_def_property_float_sdna(prop, NULL, "ambient_intensity"); RNA_def_property_float_default(prop, 0.5); RNA_def_property_ui_text(prop, "Ambient Light", "Intensity of ambient light for shadows"); RNA_def_property_range(prop, 0.0f, 1.0f); @@ -2271,10 +2258,85 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Show Overlays", "Display overlays like manipulators and outlines"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + prop = RNA_def_property(srna, "show_floor", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_FLOOR); + RNA_def_property_ui_text(prop, "Display Grid Floor", "Show the ground plane grid in perspective view"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "show_axis_x", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_X); + RNA_def_property_ui_text(prop, "Display X Axis", "Show the X axis line in perspective view"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "show_axis_y", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Y); + RNA_def_property_ui_text(prop, "Display Y Axis", "Show the Y axis line in perspective view"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "show_axis_z", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Z); + RNA_def_property_ui_text(prop, "Display Z Axis", "Show the Z axis line in perspective view"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "grid_scale", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "grid"); + RNA_def_property_ui_text(prop, "Grid Scale", "Distance between 3D View grid lines"); + RNA_def_property_range(prop, 0.0f, FLT_MAX); + RNA_def_property_ui_range(prop, 0.001f, 1000.0f, 0.1f, 3); + RNA_def_property_float_default(prop, 1.0f); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "grid_lines", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "gridlines"); + RNA_def_property_ui_text(prop, "Grid Lines", "Number of grid lines to display in perspective view"); + RNA_def_property_range(prop, 0, 1024); + RNA_def_property_int_default(prop, 16); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "grid_subdivisions", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "gridsubdiv"); + RNA_def_property_ui_text(prop, "Grid Subdivisions", "Number of subdivisions between grid lines"); + RNA_def_property_range(prop, 1, 1024); + RNA_def_property_int_default(prop, 10); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "grid_scale_unit", PROP_FLOAT, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_float_funcs(prop, "rna_View3DOverlay_GridScaleUnit_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Grid Scale Unit", "Grid cell size scaled by scene unit system settings"); + + prop = RNA_def_property(srna, "show_outline_selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SELECT_OUTLINE); + RNA_def_property_ui_text(prop, "Outline Selected", + "Show an outline highlight around selected objects in non-wireframe views"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "show_all_objects_origin", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS); + RNA_def_property_ui_text(prop, "All Object Origins", + "Show the object origin center dot for all (selected and unselected) objects"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, "show_relationship_lines", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_HIDE_HELPLINES); + RNA_def_property_ui_text(prop, "Relationship Lines", + "Show dashed lines indicating parent or constraint relationships"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + RNA_def_struct_sdna(srna, "View3DOverlay"); + prop = RNA_def_property(srna, "show_cursor", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "overlays", V3D_OVERLAY_HIDE_CURSOR); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_OVERLAY_HIDE_CURSOR); 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_face_orientation", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_OVERLAY_FACE_ORIENTATION); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_ui_text(prop, "Face Orientation", "Show the Face Orientation Overlay"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); + + } static void rna_def_space_view3d(BlenderRNA *brna) @@ -2387,12 +2449,6 @@ static void rna_def_space_view3d(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock to Cursor", "3D View center is locked to the cursor's position"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - prop = RNA_def_property(srna, "show_face_orientation_overlay", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "overlays", V3D_OVERLAY_FACE_ORIENTATION); - RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_ui_text(prop, "Face Orientation", "Show the Face Orientation Overlay"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update"); - prop = RNA_def_property(srna, "local_view", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "localvd"); RNA_def_property_ui_text(prop, "Local View", @@ -2428,71 +2484,6 @@ static void rna_def_space_view3d(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Clip End", "3D View far clipping distance"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - prop = RNA_def_property(srna, "grid_scale", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "grid"); - RNA_def_property_ui_text(prop, "Grid Scale", "Distance between 3D View grid lines"); - RNA_def_property_range(prop, 0.0f, FLT_MAX); - RNA_def_property_ui_range(prop, 0.001f, 1000.0f, 0.1f, 3); - RNA_def_property_float_default(prop, 1.0f); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "grid_lines", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "gridlines"); - RNA_def_property_ui_text(prop, "Grid Lines", "Number of grid lines to display in perspective view"); - RNA_def_property_range(prop, 0, 1024); - RNA_def_property_int_default(prop, 16); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "grid_subdivisions", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "gridsubdiv"); - RNA_def_property_ui_text(prop, "Grid Subdivisions", "Number of subdivisions between grid lines"); - RNA_def_property_range(prop, 1, 1024); - RNA_def_property_int_default(prop, 10); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "grid_scale_unit", PROP_FLOAT, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_float_funcs(prop, "rna_View3D_GridScaleUnit_get", NULL, NULL); - RNA_def_property_ui_text(prop, "Grid Scale Unit", "Grid cell size scaled by scene unit system settings"); - - prop = RNA_def_property(srna, "show_floor", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_FLOOR); - RNA_def_property_ui_text(prop, "Display Grid Floor", "Show the ground plane grid in perspective view"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_axis_x", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_X); - RNA_def_property_ui_text(prop, "Display X Axis", "Show the X axis line in perspective view"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_axis_y", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Y); - RNA_def_property_ui_text(prop, "Display Y Axis", "Show the Y axis line in perspective view"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_axis_z", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Z); - RNA_def_property_ui_text(prop, "Display Z Axis", "Show the Z axis line in perspective view"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_outline_selected", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SELECT_OUTLINE); - RNA_def_property_ui_text(prop, "Outline Selected", - "Show an outline highlight around selected objects in non-wireframe views"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_all_objects_origin", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS); - RNA_def_property_ui_text(prop, "All Object Origins", - "Show the object origin center dot for all (selected and unselected) objects"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - - prop = RNA_def_property(srna, "show_relationship_lines", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_HIDE_HELPLINES); - RNA_def_property_ui_text(prop, "Relationship Lines", - "Show dashed lines indicating parent or constraint relationships"); - RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - prop = RNA_def_property(srna, "show_grease_pencil", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SHOW_GPENCIL); RNA_def_property_ui_text(prop, "Show Grease Pencil", |