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:
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py2
-rw-r--r--release/scripts/presets/keyconfig/3dsmax.py2
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py31
-rw-r--r--source/blender/blenkernel/BKE_blender_version.h2
-rw-r--r--source/blender/blenloader/intern/versioning_280.c25
-rw-r--r--source/blender/draw/engines/workbench/shaders/workbench_composite_frag.glsl10
-rw-r--r--source/blender/draw/engines/workbench/workbench_materials.c52
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h6
-rw-r--r--source/blender/draw/intern/draw_manager.c11
-rw-r--r--source/blender/draw/intern/draw_view.c2
-rw-r--r--source/blender/draw/modes/overlay_mode.c12
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c6
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h72
-rw-r--r--source/blender/makesrna/intern/rna_space.c193
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",