diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-09-12 12:25:37 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-09-12 14:33:46 +0300 |
commit | 19547236355d59bc3888635ecbe4a9e35c1f86cb (patch) | |
tree | 7982264500ee3633acdc3a0e9ac8cef667555e9c | |
parent | 613b37bc2c81202a34346b40465923e8f47cebbf (diff) |
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
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_object_api.c | 23 |
2 files changed, 8 insertions, 17 deletions
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index 082fff0c528..59509d20fb2 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -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)) { diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index e26c430eb16..56d25f5bebf 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -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); |