diff options
author | Jacques Lucke <jacques@blender.org> | 2021-11-08 19:19:11 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-11-08 19:19:11 +0300 |
commit | 8b56f351e285b07d16f7c5e513b902c489851bef (patch) | |
tree | 03fcf043d9ce08f14454fc2af70053d29b74e774 | |
parent | 33729eaf69c3220ebf791b9260bfca1bb3c5048a (diff) |
progress
-rw-r--r-- | source/blender/editors/space_node/drawnode.cc | 2 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_draw.cc | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc index e336e3abd4d..1c07d472008 100644 --- a/source/blender/editors/space_node/drawnode.cc +++ b/source/blender/editors/space_node/drawnode.cc @@ -4353,7 +4353,7 @@ void node_draw_link_bezier(const bContext *C, } if (link->flag & NODE_LINK_PORTAL) { - if (is_fromnode_selected || is_tonode_selected) { + if (link->flag & NODE_LINK_DRAGGED || is_fromnode_selected || is_tonode_selected) { dim_factor = 0.3f; } else { diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc index 5fdf816339b..a419127912c 100644 --- a/source/blender/editors/space_node/node_draw.cc +++ b/source/blender/editors/space_node/node_draw.cc @@ -2154,6 +2154,30 @@ static void node_draw(const bContext *C, } } +static void draw_portal_link_indicators(bNodeTree *ntree) +{ + uint pos = GPU_vertformat_attr_add(immVertexFormat(), "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT); + immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); + immUniformColor3f(0.8f, 0.3f, 0.3f); + GPU_point_size(10); + immBeginAtMost(GPU_PRIM_POINTS, 1000); + LISTBASE_FOREACH (bNodeLink *, link, &ntree->links) { + const bool from_node_selected = link->fromnode != nullptr && + link->fromnode->flag & NODE_SELECT; + const bool to_node_selected = link->tonode != nullptr && link->tonode->flag & NODE_SELECT; + if (nodeLinkIsPortal(link) && !from_node_selected && !to_node_selected) { + if (link->fromsock) { + immVertex2f(pos, link->fromsock->locx + 10, link->fromsock->locy); + } + if (link->tosock) { + immVertex2f(pos, link->tosock->locx - 10, link->tosock->locy); + } + } + } + immEnd(); + immUnbindProgram(); +} + #define USE_DRAW_TOT_UPDATE void node_draw_nodetree(const bContext *C, @@ -2190,6 +2214,7 @@ void node_draw_nodetree(const bContext *C, /* Node lines. */ GPU_blend(GPU_BLEND_ALPHA); + draw_portal_link_indicators(ntree); nodelink_batch_start(snode); LISTBASE_FOREACH (bNodeLink *, link, &ntree->links) { |