forked from bartvdbraak/blender
T55014: Optionally: objects not cast shadows in workbench
This commit is contained in:
parent
e8d9b7c954
commit
d3b80c4734
@ -253,6 +253,8 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
||||
|
||||
if is_geometry:
|
||||
col.prop(obj, "show_texture_space", text="Texture Space")
|
||||
col.prop(obj.display, "show_shadows")
|
||||
|
||||
col.prop(obj, "show_x_ray", text="X-Ray")
|
||||
if obj_type == 'MESH' or is_empty_image:
|
||||
col.prop(obj, "show_transparent", text="Transparency")
|
||||
|
@ -707,6 +707,8 @@ 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. */
|
||||
|
@ -1086,5 +1086,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
|
||||
copy_v3_v3(scene->display.light_direction, default_light_direction);
|
||||
}
|
||||
}
|
||||
|
||||
if (!DNA_struct_elem_find(fd->filesdna, "Object", "ObjectDisplay", "display")) {
|
||||
/* Initialize new object.ObjectDisplay */
|
||||
for (Object *ob = main->object.first; ob; ob = ob->id.next) {
|
||||
ob->display.flag = OB_SHOW_SHADOW;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -557,7 +557,7 @@ void workbench_materials_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob
|
||||
}
|
||||
}
|
||||
|
||||
if (SHADOW_ENABLED(wpd)) {
|
||||
if (SHADOW_ENABLED(wpd) && (ob->display.flag & OB_SHOW_SHADOW) > 0) {
|
||||
struct Gwn_Batch *geom_shadow = DRW_cache_object_surface_get(ob);
|
||||
if (geom_shadow) {
|
||||
DRW_shgroup_call_object_add(wpd->shadow_shgrp, geom_shadow, ob);
|
||||
|
@ -1090,6 +1090,7 @@ static void view3d_main_region_message_subscribe(
|
||||
#endif
|
||||
|
||||
WM_msg_subscribe_rna_anon_type(mbus, SceneDisplay, &msg_sub_value_region_tag_redraw);
|
||||
WM_msg_subscribe_rna_anon_type(mbus, ObjectDisplay, &msg_sub_value_region_tag_redraw);
|
||||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
Object *obact = OBACT(view_layer);
|
||||
|
@ -139,6 +139,10 @@ typedef struct LodLevel {
|
||||
int obhysteresis;
|
||||
} LodLevel;
|
||||
|
||||
typedef struct ObjectDisplay {
|
||||
int flag;
|
||||
} ObjectDisplay;
|
||||
|
||||
typedef struct Object {
|
||||
ID id;
|
||||
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
|
||||
@ -299,6 +303,10 @@ typedef struct Object {
|
||||
* It has all modifiers applied.
|
||||
*/
|
||||
struct Mesh *mesh_evaluated;
|
||||
|
||||
/* Object Display */
|
||||
struct ObjectDisplay display;
|
||||
int pad9;
|
||||
} Object;
|
||||
|
||||
/* Warning, this is not used anymore because hooks are now modifiers */
|
||||
@ -366,6 +374,11 @@ enum {
|
||||
OB_ARMATURE = 25,
|
||||
};
|
||||
|
||||
/* 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)
|
||||
|
@ -442,6 +442,7 @@ extern StructRNA RNA_NoiseTexture;
|
||||
extern StructRNA RNA_NorController;
|
||||
extern StructRNA RNA_Object;
|
||||
extern StructRNA RNA_ObjectBase;
|
||||
extern StructRNA RNA_ObjectDisplay;
|
||||
extern StructRNA RNA_ObstacleFluidSettings;
|
||||
extern StructRNA RNA_OceanModifier;
|
||||
extern StructRNA RNA_OceanTexData;
|
||||
|
@ -1817,6 +1817,22 @@ static void rna_def_object_face_maps(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
RNA_def_function_ui_description(func, "Delete all vertex groups from object");
|
||||
}
|
||||
|
||||
static void rna_def_object_display(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
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");
|
||||
|
||||
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_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);
|
||||
}
|
||||
|
||||
static void rna_def_object(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
@ -2488,6 +2504,12 @@ static void rna_def_object(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Base from Set", "Object comes from a background set");
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
|
||||
/* Object Display */
|
||||
prop = RNA_def_property(srna, "display", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "display");
|
||||
RNA_def_property_struct_type(prop, "ObjectDisplay");
|
||||
RNA_def_property_ui_text(prop, "Object Display", "Object display settings for 3d viewport");
|
||||
|
||||
RNA_api_object(srna);
|
||||
}
|
||||
|
||||
@ -2558,6 +2580,7 @@ void RNA_def_object(BlenderRNA *brna)
|
||||
rna_def_face_map(brna);
|
||||
rna_def_material_slot(brna);
|
||||
rna_def_dupli_object(brna);
|
||||
rna_def_object_display(brna);
|
||||
RNA_define_animate_sdna(true);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user