DNA: remove Object.display struct
authorCampbell Barton <ideasman42@gmail.com>
Sun, 10 Feb 2019 23:32:11 +0000 (10:32 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 10 Feb 2019 23:55:22 +0000 (10:55 +1100)
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.

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

index c1af603..3d6cc05 100644 (file)
@@ -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. */
index 5e0eb84..914b91d 100644 (file)
@@ -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;
index fccb264..258a33b 100644 (file)
@@ -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) {
index d91fcac..f951b72 100644 (file)
@@ -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 */
index 74237f5..01d4b54 100644 (file)
@@ -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);