[Bf-blender-cvs] [69b2f526811] master: DNA: remove Object.display struct

Campbell Barton noreply at git.blender.org
Mon Feb 11 00:58:41 CET 2019


Commit: 69b2f5268114bbb82c06a040e8d7127ea5fdd64e
Author: Campbell Barton
Date:   Mon Feb 11 10:32:11 2019 +1100
Branches: master
https://developer.blender.org/rB69b2f5268114bbb82c06a040e8d7127ea5fdd64e

DNA: remove Object.display struct

We have a display flag already, use it instead.

Object.display is kept in RNA, exposed via a nested struct,
we can move other display options there.

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

M	source/blender/blenkernel/intern/object.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/workbench/workbench_deferred.c
M	source/blender/makesdna/DNA_object_types.h
M	source/blender/makesrna/intern/rna_object.c

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

diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index c1af6037e05..3d6cc05986b 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -866,8 +866,6 @@ void BKE_object_init(Object *ob)
 
 	/* Animation Visualization defaults */
 	animviz_settings_init(&ob->avs);
-
-	ob->display.flag = OB_SHOW_SHADOW;
 }
 
 /* more general add: creates minimum required data, but without vertices etc. */
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 5e0eb849341..914b91d3eb0 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1360,13 +1360,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 			}
 		}
 
-		if (!DNA_struct_elem_find(fd->filesdna, "Object", "ObjectDisplay", "display")) {
-			/* Initialize new object.ObjectDisplay */
-			for (Object *ob = bmain->object.first; ob; ob = ob->id.next) {
-				ob->display.flag = OB_SHOW_SHADOW;
-			}
-		}
-
 		if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "transform_pivot_point")) {
 			for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) {
 				scene->toolsettings->transform_pivot_point = V3D_AROUND_CENTER_MEDIAN;
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index fccb264525e..258a33bbda4 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -987,7 +987,7 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob)
 			}
 		}
 
-		if (SHADOW_ENABLED(wpd) && (ob->display.flag & OB_SHOW_SHADOW)) {
+		if (SHADOW_ENABLED(wpd) && !(ob->dtx & OB_DRAW_NO_SHADOW_CAST)) {
 			bool is_manifold;
 			struct GPUBatch *geom_shadow = DRW_cache_object_edge_detection_get(ob, &is_manifold);
 			if (geom_shadow) {
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index d91fcac49c1..f951b7273c9 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -114,10 +114,6 @@ typedef struct LodLevel {
 	int obhysteresis;
 } LodLevel;
 
-typedef struct ObjectDisplay {
-	int flag;
-} ObjectDisplay;
-
 /* Forward declaration for cache bbone deformation information.
  *
  * TODO(sergey): Consider moving it to more appropriate place. */
@@ -380,12 +376,8 @@ typedef struct Object {
 	int pad6;
 	int select_color;
 
-	/* Runtime evaluation data. */
+	/* Runtime evaluation data (keep last). */
 	Object_Runtime runtime;
-
-	/* Object Display */
-	struct ObjectDisplay display;
-	int pad9;
 } Object;
 
 /* Warning, this is not used anymore because hooks are now modifiers */
@@ -444,11 +436,6 @@ enum {
 	OB_TYPE_MAX,
 };
 
-/* ObjectDisplay.flag */
-enum {
-	OB_SHOW_SHADOW = (1 << 0),
-};
-
 /* check if the object type supports materials */
 #define OB_TYPE_SUPPORT_MATERIAL(_type) \
 	(((_type) >= OB_MESH && (_type) <= OB_MBALL) || ((_type) == OB_GPENCIL))
@@ -545,6 +532,7 @@ enum {
 	/* enable transparent draw */
 	OB_DRAWTRANSP     = 1 << 7,
 	OB_DRAW_ALL_EDGES = 1 << 8,  /* only for meshes currently */
+	OB_DRAW_NO_SHADOW_CAST = 1 << 9,
 };
 
 /* empty_drawtype: no flags */
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 74237f58861..01d4b543f74 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -1097,6 +1097,11 @@ static char *rna_MaterialSlot_path(PointerRNA *ptr)
 	return BLI_sprintfN("material_slots[%d]", index);
 }
 
+static PointerRNA rna_Object_display_get(PointerRNA *ptr)
+{
+	return rna_pointer_inherit_refine(ptr, &RNA_ObjectDisplay, ptr->data);
+}
+
 static char *rna_ObjectDisplay_path(PointerRNA *UNUSED(ptr))
 {
 	return BLI_strdup("display");
@@ -2073,11 +2078,12 @@ static void rna_def_object_display(BlenderRNA *brna)
 
 	srna = RNA_def_struct(brna, "ObjectDisplay", NULL);
 	RNA_def_struct_ui_text(srna, "Object Display", "Object display settings for 3d viewport");
-	RNA_def_struct_sdna(srna, "ObjectDisplay");
+	RNA_def_struct_sdna(srna, "Object");
+	RNA_def_struct_nested(brna, srna, "Object");
 	RNA_def_struct_path_func(srna, "rna_ObjectDisplay_path");
 
 	prop = RNA_def_property(srna, "show_shadows", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_SHOW_SHADOW);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "dtx", OB_DRAW_NO_SHADOW_CAST);
 	RNA_def_property_boolean_default(prop, true);
 	RNA_def_property_ui_text(prop, "Shadow", "Object cast shadows in the 3d viewport");
 	RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
@@ -2753,8 +2759,9 @@ static void rna_def_object(BlenderRNA *brna)
 
 	/* Object Display */
 	prop = RNA_def_property(srna, "display", PROP_POINTER, PROP_NONE);
-	RNA_def_property_pointer_sdna(prop, NULL, "display");
+	RNA_def_property_flag(prop, PROP_NEVER_NULL);
 	RNA_def_property_struct_type(prop, "ObjectDisplay");
+	RNA_def_property_pointer_funcs(prop, "rna_Object_display_get", NULL, NULL, NULL);
 	RNA_def_property_ui_text(prop, "Object Display", "Object display settings for 3d viewport");
 
 	RNA_api_object(srna);



More information about the Bf-blender-cvs mailing list