[Bf-blender-cvs] [a73c02a17b5] blender2.8: Workbench: Color selector when in single color mode

Jeroen Bakker noreply at git.blender.org
Fri May 4 17:27:32 CEST 2018


Commit: a73c02a17b58427f998fa9d260d1fbcbccbe6e25
Author: Jeroen Bakker
Date:   Fri May 4 17:25:49 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa73c02a17b58427f998fa9d260d1fbcbccbe6e25

Workbench: Color selector when in single color mode

===================================================================

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/workbench/workbench_materials.c
M	source/blender/draw/engines/workbench/workbench_private.h
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index bba39867079..7328f28bfad 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -3548,6 +3548,10 @@ class VIEW3D_PT_shading(Panel):
             col.separator()
             col.row().prop(shading, "single_color_mode", expand=True)
 
+            if shading.single_color_mode == 'SINGLE':
+                col.separator()
+                col.row().prop(shading, "single_color", text="")
+
             col.separator()
             col.row().prop(shading, "light", expand=True)
             if shading.light == 'STUDIO':
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index b0cfadacb2c..8cd9c13be32 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -32,6 +32,7 @@
 #include <float.h>
 
 #include "BLI_listbase.h"
+#include "BLI_math.h"
 #include "BLI_mempool.h"
 #include "BLI_string.h"
 #include "BLI_string_utf8.h"
@@ -1071,6 +1072,7 @@ 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;
 					}
 				}
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index a7f21223c22..73372ce74ce 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -190,7 +190,7 @@ static void get_material_solid_color(WORKBENCH_PrivateData *wpd, Object *ob, Mat
 {
 	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, default_color);
+		copy_v3_v3(color, wpd->drawtype_single_color);
 	}
 	else if (wpd->drawtype_options & V3D_DRAWOPTION_RANDOMIZE) {
 		uint hash = BLI_ghashutil_strhash_p_murmur(ob->id.name);
@@ -311,12 +311,14 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 		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);
 	}
 	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);
 	}
 
 	select_deferred_shaders(wpd);
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 6f1d833a551..c0dfcc4e32f 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -78,8 +78,8 @@ typedef struct WORKBENCH_PrivateData {
 	short drawtype_lighting;
 	short drawtype_options;
 	short drawtype_studiolight;
-	short pad;
 	float drawtype_ambient_intensity;
+	float drawtype_single_color[3];
 	struct GPUUniformBuffer *world_ubo;
 	struct DRWShadingGroup *shadow_shgrp;
 	WORKBENCH_UBO_World world_data;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 6071b8d8e94..d68c0508e33 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -324,6 +324,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene)
 	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->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 8021ed12e45..f2b7d85810d 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -261,9 +261,11 @@ typedef struct View3D {
 	short drawtype_options;
 	short drawtype_studiolight;
 	float drawtype_ambient_intensity;
-
+	float drawtype_single_color[3];
 	int overlays;
 
+	int pad5;
+
 	View3DDebug debug;
 } View3D;
 
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index bb9c711838a..2c063d5991a 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2250,6 +2250,12 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Color", "Single Color Mode");
 	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_clear_flag(prop, PROP_ANIMATABLE);



More information about the Bf-blender-cvs mailing list