[Bf-blender-cvs] [9e439197edc] blender2.8: Workbench: API Changes

Jeroen Bakker noreply at git.blender.org
Mon Jun 11 15:58:01 CEST 2018


Commit: 9e439197edcdae1ec9445524bd85bed85249f497
Author: Jeroen Bakker
Date:   Mon Jun 11 15:54:02 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB9e439197edcdae1ec9445524bd85bed85249f497

Workbench: API Changes

- merged matcap and studioLight api

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

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenkernel/BKE_studiolight.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 899529476a8..8ced2730cc6 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -3522,12 +3522,12 @@ class VIEW3D_PT_shading(Panel):
                 row.template_icon_view(shading, "studio_light")
                 sub = row.column()
                 sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
-                if shading.studio_light_orientation == 'WORLD':
+                if shading.selected_studio_light.orientation == 'WORLD':
                     col.row().prop(shading, "studiolight_rot_z")
 
             elif shading.light == 'MATCAP':
                 row = col.row()
-                row.template_icon_view(shading, "matcap")
+                row.template_icon_view(shading, "studio_light")
                 sub = row.column()
                 sub.operator('VIEW3D_OT_toggle_matcap_flip', emboss=False, text="", icon='ARROW_LEFTRIGHT')
                 sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
@@ -3582,7 +3582,7 @@ class VIEW3D_PT_shading(Panel):
             row.template_icon_view(shading, "studio_light")
             sub = row.column()
             sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
-            if shading.studio_light_orientation == 'WORLD':
+            if shading.selected_studio_light.orientation == 'WORLD':
                 col.row().prop(shading, "studiolight_rot_z")
                 col.row().prop(shading, "studiolight_background")
             col.prop(shading, "use_scene_light")
diff --git a/source/blender/blenkernel/BKE_studiolight.h b/source/blender/blenkernel/BKE_studiolight.h
index 7883f89f33a..5e386fde528 100644
--- a/source/blender/blenkernel/BKE_studiolight.h
+++ b/source/blender/blenkernel/BKE_studiolight.h
@@ -75,7 +75,7 @@ enum StudioLightFlag {
 #define STUDIOLIGHT_FLAG_ALL (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_EXTERNAL_FILE)
 #define STUDIOLIGHT_FLAG_ORIENTATIONS (STUDIOLIGHT_ORIENTATION_CAMERA | STUDIOLIGHT_ORIENTATION_WORLD | STUDIOLIGHT_ORIENTATION_VIEWNORMAL)
 #define STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_ORIENTATION_WORLD)
-#define STUDIOLIGHT_ORIENTATIONS_SOLID (STUDIOLIGHT_ORIENTATION_CAMERA | STUDIOLIGHT_ORIENTATION_WORLD)
+#define STUDIOLIGHT_ORIENTATIONS_SOLID (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_ORIENTATION_CAMERA | STUDIOLIGHT_ORIENTATION_WORLD)
 
 typedef struct StudioLight {
 	struct StudioLight *next, *prev;
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index eb576692224..f84967d0173 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -198,11 +198,6 @@ static const EnumPropertyItem rna_enum_studio_light_items[] = {
 	{0, NULL, 0, NULL, NULL}
 };
 
-static const EnumPropertyItem rna_enum_matcap_items[] = {
-	{0, "DEFAULT", 0, "Default", ""},
-	{0, NULL, 0, NULL, NULL}
-};
-
 const EnumPropertyItem rna_enum_clip_editor_mode_items[] = {
 	{SC_MODE_TRACKING, "TRACKING", ICON_ANIM_DATA, "Tracking", "Show tracking and solving tools"},
 	{SC_MODE_MASKEDIT, "MASK", ICON_MOD_MASK, "Mask", "Show mask editing tools"},
@@ -671,14 +666,18 @@ static const EnumPropertyItem *rna_3DViewShading_type_itemf(
 	return item;
 }
 
-static int rna_View3DShading_studio_light_orientation_get(PointerRNA *ptr)
+/* Shading.selected_studio_light */
+static PointerRNA rna_View3DShading_selected_studio_light_get(PointerRNA *ptr)
 {
 	View3D *v3d = (View3D *)ptr->data;
-	StudioLight *sl = BKE_studiolight_find(v3d->shading.studio_light, STUDIOLIGHT_FLAG_ALL);
-	return sl->flag & STUDIOLIGHT_FLAG_ORIENTATIONS;
-}
-static void rna_View3DShading_studio_light_orientation_set(PointerRNA *UNUSED(ptr), int UNUSED(value))
-{
+	StudioLight *sl;
+	if (v3d->shading.light == V3D_LIGHTING_MATCAP) {
+		sl = BKE_studiolight_find(v3d->shading.matcap, STUDIOLIGHT_FLAG_ALL);
+	}
+	else {
+		sl = BKE_studiolight_find(v3d->shading.studio_light, STUDIOLIGHT_FLAG_ALL);
+	}
+	return rna_pointer_inherit_refine(ptr, &RNA_StudioLight, sl);
 }
 
 /* shading.light */
@@ -720,20 +719,36 @@ static const EnumPropertyItem *rna_View3DShading_light_itemf(
 static int rna_View3DShading_studio_light_get(PointerRNA *ptr)
 {
 	View3D *v3d = (View3D *)ptr->data;
+	char* dna_storage = v3d->shading.studio_light;
+	
 	int flag = STUDIOLIGHT_ORIENTATIONS_SOLID;
-	if (v3d->drawtype == OB_MATERIAL) {
+	if (v3d->drawtype == OB_SOLID && v3d->shading.light == V3D_LIGHTING_MATCAP) {
+		flag = STUDIOLIGHT_ORIENTATION_VIEWNORMAL;
+		dna_storage = v3d->shading.matcap;
+	}
+	else if (v3d->drawtype == OB_MATERIAL) {
 		flag = STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE;
 	}
-	StudioLight *sl = BKE_studiolight_find(v3d->shading.studio_light, flag);
-	BLI_strncpy(v3d->shading.studio_light, sl->name, FILE_MAXFILE);
+	StudioLight *sl = BKE_studiolight_find(dna_storage, flag);
+	BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
 	return sl->index;
 }
 
 static void rna_View3DShading_studio_light_set(PointerRNA *ptr, int value)
 {
 	View3D *v3d = (View3D *)ptr->data;
-	StudioLight *sl = BKE_studiolight_findindex(value, STUDIOLIGHT_FLAG_ALL);
-	BLI_strncpy(v3d->shading.studio_light, sl->name, FILE_MAXFILE);
+	char* dna_storage = v3d->shading.studio_light;
+	
+	int flag = STUDIOLIGHT_ORIENTATIONS_SOLID;
+	if (v3d->drawtype == OB_SOLID && v3d->shading.light == V3D_LIGHTING_MATCAP) {
+		flag = STUDIOLIGHT_ORIENTATION_VIEWNORMAL;
+		dna_storage = v3d->shading.matcap;
+	}
+	else if (v3d->drawtype == OB_MATERIAL) {
+		flag = STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE;
+	}
+	StudioLight *sl = BKE_studiolight_findindex(value, flag);
+	BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
 }
 
 static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
@@ -744,70 +759,44 @@ static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
 	EnumPropertyItem *item = NULL;
 	int totitem = 0;
 
-	LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
-		int icon_id = sl->irradiance_icon_id;
-		bool show_studiolight = false;
+	if (v3d->drawtype == OB_SOLID && v3d->shading.light == V3D_LIGHTING_MATCAP) {
+		const int flags = (STUDIOLIGHT_EXTERNAL_FILE | STUDIOLIGHT_ORIENTATION_VIEWNORMAL);
 
-		if ((sl->flag & STUDIOLIGHT_INTERNAL)) {
-			/* always show internal lights */
-			show_studiolight = true;
-		}
-		else {
-			switch (v3d->drawtype) {
-				case OB_SOLID:
-				case OB_TEXTURE:
-					show_studiolight = (sl->flag & (STUDIOLIGHT_ORIENTATION_WORLD | STUDIOLIGHT_ORIENTATION_CAMERA)) > 0;
-					break;
-
-				case OB_MATERIAL:
-					show_studiolight = (sl->flag & STUDIOLIGHT_ORIENTATION_WORLD) > 0;
-					icon_id = sl->radiance_icon_id;
-					break;
+		LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
+			int icon_id = sl->irradiance_icon_id;
+			if ((sl->flag & flags) == flags) {
+				EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
+				RNA_enum_item_add(&item, &totitem, &tmp);
 			}
 		}
-
-		if (show_studiolight) {
-			EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
-			RNA_enum_item_add(&item, &totitem, &tmp);
-		}
 	}
+	else {
+		LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
+			int icon_id = sl->irradiance_icon_id;
+			bool show_studiolight = false;
 
-	RNA_enum_item_end(&item, &totitem);
-	*r_free = true;
-	return item;
-}
-/* Matcap studiolight */
-static int rna_View3DShading_matcap_get(PointerRNA *ptr)
-{
-	View3D *v3d = (View3D *)ptr->data;
-	StudioLight *sl = BKE_studiolight_find(v3d->shading.matcap, STUDIOLIGHT_ORIENTATION_VIEWNORMAL);
-	BLI_strncpy(v3d->shading.matcap, sl->name, FILE_MAXFILE);
-	return sl->index;
-}
-
-static void rna_View3DShading_matcap_set(PointerRNA *ptr, int value)
-{
-	View3D *v3d = (View3D *)ptr->data;
-	StudioLight *sl = BKE_studiolight_findindex(value, STUDIOLIGHT_ORIENTATION_VIEWNORMAL);
-	BLI_strncpy(v3d->shading.matcap, sl->name, FILE_MAXFILE);
-}
-
-static const EnumPropertyItem *rna_View3DShading_matcap_itemf(
-        bContext *UNUSED(C), PointerRNA *UNUSED(ptr),
-        PropertyRNA *UNUSED(prop), bool *r_free)
-{
-	EnumPropertyItem *item = NULL;
-	int totitem = 0;
-
-	const int flags = (STUDIOLIGHT_EXTERNAL_FILE | STUDIOLIGHT_ORIENTATION_VIEWNORMAL);
-
-	LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
-		int icon_id = sl->irradiance_icon_id;
-		bool show_studiolight = (sl->flag & flags) == flags;
+			if ((sl->flag & STUDIOLIGHT_INTERNAL)) {
+				/* always show internal lights */
+				show_studiolight = true;
+			}
+			else {
+				switch (v3d->drawtype) {
+					case OB_SOLID:
+					case OB_TEXTURE:
+						show_studiolight = (sl->flag & (STUDIOLIGHT_ORIENTATION_WORLD | STUDIOLIGHT_ORIENTATION_CAMERA)) > 0;
+						break;
+
+					case OB_MATERIAL:
+						show_studiolight = (sl->flag & STUDIOLIGHT_ORIENTATION_WORLD) > 0;
+						icon_id = sl->radiance_icon_id;
+						break;
+				}
+			}
 
-		if (show_studiolight) {
-			EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
-			RNA_enum_item_add(&item, &totitem, &tmp);
+			if (show_studiolight) {
+				EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
+				RNA_enum_item_add(&item, &totitem, &tmp);
+			}
 		}
 	}
 
@@ -2299,14 +2288,6 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
 		{0, NULL, 0, NULL, NULL}
 	};
 
-	static const EnumPropertyItem studio_light_orientation_items[] = {
-		{0,                                  "UNKNOWN", 0,    "Unknown", "Studio light has no orientation"},
-		{STUDIOLIGHT_ORIENTATION_CAMERA,     "CAMERA",  0,    "Camera",  "Studio light is camera based"},
-		{STUDIOLIGHT_ORIENTATION_WORLD,      "WORLD",   0,    "World",   "Studio light is world based"},
-		{STUDIOLIGHT_ORIENTATION_VIEWNORMAL, "VIEWNORMAL", 0, "Matcap",  "Studio light is a matcap"},
-		{0, NULL, 0, NULL, NULL}
-	};
-
 	srna = RNA_def_struct(brna, "View3DShading", NULL);
 	RNA_def_struct_sdna(srna, "View3D");
 	RNA_def_struct_nested(brna, srna, "SpaceView3D");
@@ -2341,13 +2322,6 @@ static void rna_def_space_view3d_shading(Blende

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list