diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2018-08-25 00:03:26 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2018-08-25 00:03:26 +0200 |
commit | 6d0f4a4ad70bc20e2653c144d630f19507edb164 (patch) | |
tree | c53d59dec22c1fe47d60fa29dc4f74d14621bd13 /scene/2d/canvas_item.cpp | |
parent | 62233423c7310a155e8c948c053701dba248dcdb (diff) | |
download | redot-engine-6d0f4a4ad70bc20e2653c144d630f19507edb164.tar.gz |
Fix picking in CanvasLayer
New APIs in 2D physics allow intersection queries filtered by CanvasLayer object instance id. Viewport keep an inventory of its descendant CanvasLayers and takes advantage of all that to test picking with the mouse/touch position correctly transformed for each CanvasLayer.
Diffstat (limited to 'scene/2d/canvas_item.cpp')
-rw-r--r-- | scene/2d/canvas_item.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 7f7e3542ed..f4b5d54cb2 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -861,6 +861,15 @@ RID CanvasItem::get_canvas() const { return get_viewport()->find_world_2d()->get_canvas(); } +ObjectID CanvasItem::get_canvas_layer_instance_id() const { + + if (canvas_layer) { + return canvas_layer->get_instance_id(); + } else { + return 0; + } +} + CanvasItem *CanvasItem::get_toplevel() const { CanvasItem *ci = const_cast<CanvasItem *>(this); |