diff options
author | Antonio Vazquez <blendergit@gmail.com> | 2020-06-03 16:57:09 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-06-11 09:29:51 +0300 |
commit | 09db0f2a34671abc233681a5a14349642c7bd0dc (patch) | |
tree | a7545e5bbb2d1d7ec3dc6025a11f969bf0ed7ac5 /source/blender/blenkernel | |
parent | e4ac4769f1cca1900f5dc626eb7eb312e1e93d3d (diff) |
Fix T77156: GPencil view layer filter by layer not working
This was removed by error during the refactor done in 2.83.
Differential Revision: https://developer.blender.org/D7909
Reviewers: @fclem
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_gpencil.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/gpencil.c | 17 |
2 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h index faa331aa02d..85ba8175143 100644 --- a/source/blender/blenkernel/BKE_gpencil.h +++ b/source/blender/blenkernel/BKE_gpencil.h @@ -41,6 +41,7 @@ struct Object; struct Scene; struct SpaceImage; struct ToolSettings; +struct ViewLayer; struct bDeformGroup; struct bGPDframe; struct bGPDlayer; @@ -253,7 +254,8 @@ typedef void (*gpIterCb)(struct bGPDlayer *layer, struct bGPDstroke *stroke, void *thunk); -void BKE_gpencil_visible_stroke_iter(struct Object *ob, +void BKE_gpencil_visible_stroke_iter(struct ViewLayer *view_layer, + struct Object *ob, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk, diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 04d3c32f599..99ee2a0fc9e 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -1840,8 +1840,13 @@ bool BKE_gpencil_from_image(SpaceImage *sima, bGPDframe *gpf, const float size, * * \{ */ -void BKE_gpencil_visible_stroke_iter( - Object *ob, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk, bool do_onion, int cfra) +void BKE_gpencil_visible_stroke_iter(ViewLayer *view_layer, + Object *ob, + gpIterCb layer_cb, + gpIterCb stroke_cb, + void *thunk, + bool do_onion, + int cfra) { bGPdata *gpd = (bGPdata *)ob->data; const bool is_multiedit = GPENCIL_MULTIEDIT_SESSIONS_ON(gpd); @@ -1863,6 +1868,14 @@ void BKE_gpencil_visible_stroke_iter( continue; } + /* Hide the layer if it's defined a view layer filter. This is used to + * generate renders, putting only selected GP layers for each View Layer. + * This is used only in final render and never in Viewport. */ + if ((view_layer != NULL) && (gpl->viewlayername[0] != '\0') && + (!STREQ(view_layer->name, gpl->viewlayername))) { + continue; + } + if (is_multiedit) { sta_gpf = end_gpf = NULL; /* Check the whole range and tag the editable frames. */ |