Cycles: Fix Show Instanced Local View Objects
The local view check in the RNA didn't support instanced objects. Every object has a copy of the local_view_bits from the base. This patch changes the check to look at the local stored bits. This patch removes the check if the object is part of the view_layer. In the cases we are using it this check is not relevant. The `mesh_tissue` add-on also uses it, and is not effected by this change. Reviewed By: brecht Differential Revision: https://developer.blender.org/D5773
This commit is contained in:
parent
613b37bc2c
commit
1954723635
Notes:
blender-bot
2023-02-13 22:38:46 +01:00
Referenced by issue #95197, Regression: object.local_view_get and object.visible_in_viewport_get() always returns False
|
@ -555,7 +555,7 @@ void BlenderSync::sync_objects(BL::Depsgraph &b_depsgraph,
|
|||
|
||||
/* test if object needs to be hidden */
|
||||
const bool show_self = b_instance.show_self();
|
||||
const bool show_local_view = !has_local_view || b_ob.local_view_get(b_v3d, b_view_layer);
|
||||
const bool show_local_view = !has_local_view || b_ob.local_view_get(b_v3d);
|
||||
const bool show_particles = b_instance.show_particles();
|
||||
|
||||
if (show_local_view && (show_self || show_particles)) {
|
||||
|
|
|
@ -250,18 +250,14 @@ static Base *rna_Object_local_view_property_helper(bScreen *sc,
|
|||
return base;
|
||||
}
|
||||
|
||||
static bool rna_Object_local_view_get(Object *ob,
|
||||
ReportList *reports,
|
||||
PointerRNA *v3d_ptr,
|
||||
ViewLayer *view_layer)
|
||||
static bool rna_Object_local_view_get(Object *ob, ReportList *reports, View3D *v3d)
|
||||
{
|
||||
bScreen *sc = (bScreen *)v3d_ptr->owner_id;
|
||||
View3D *v3d = v3d_ptr->data;
|
||||
Base *base = rna_Object_local_view_property_helper(sc, v3d, view_layer, ob, reports, NULL);
|
||||
if (base == NULL) {
|
||||
return false; /* Error reported. */
|
||||
if (v3d->localvd == NULL) {
|
||||
BKE_report(reports, RPT_ERROR, "Viewport not in local view");
|
||||
return false;
|
||||
}
|
||||
return (base->local_view_bits & v3d->local_view_uuid) != 0;
|
||||
|
||||
return ((ob->base_local_view_bits & v3d->local_view_uuid) != 0);
|
||||
}
|
||||
|
||||
static void rna_Object_local_view_set(Object *ob,
|
||||
|
@ -817,12 +813,7 @@ void RNA_api_object(StructRNA *srna)
|
|||
RNA_def_function_ui_description(func, "Get the local view state for this object");
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
||||
parm = RNA_def_pointer(func, "viewport", "SpaceView3D", "", "Viewport in local view");
|
||||
RNA_def_parameter_flags(parm, 0, PARM_RNAPTR | PARM_REQUIRED);
|
||||
parm = RNA_def_pointer(func,
|
||||
"view_layer",
|
||||
"ViewLayer",
|
||||
"",
|
||||
"Optional ViewLayer. Preferably passed for additional performance");
|
||||
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
||||
parm = RNA_def_boolean(func, "result", 0, "", "Object local view state");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
|
|
Loading…
Reference in New Issue