In latest previews the node browser shows only the connectable nodes after starting a new link. For sure there’s still plenty of room for improvements, but it already feels so much more comfortable that there’s really no good reason to hold back on it much longer.
Current features
- The system looks at all nodes in scope and tests all its pins whether they can be connected or not. Did tests with Stride, Skia and Fuse referenced and performance was suprisingly ok.
- The connectable nodes get ordered by how good the types match (same type, super type, generic type)
and at what pin position a match was found. For example having a SkiaLayer
output at hand, nodes which take aLayer
on any input are all higher ranked than those which take some genericT
orobject
. - Like the normal view it will hide nodes which are already covered by an adaptive definition in order to compact the list. For example it will only show
!= [Math]
when looking for a node connectable tobool
and not all variations like!= [Integer32]
etc. - It knows about adaptive nodes and will hide those for which no adaptive implementation is available for the given type. For example it will not show a
< [Math]
node when having aLayer
at hand even though its input is generic. However this feature is also rather costly especially for low level types likebool
so it might not survive. We’ll see how it plays out.
Current (known) limitations
- It doesn’t know about regions and their border control points. For example a normal
ForEach
will not show up when having aSequence
at hand. - It only tests pins which are visible by default. Would need some more work in the subsequent linking action to traverse the optional pins as well.
- There’s no visual separation between exact matches, super type matches and generic matches.
- For primitive types the results are still overwhelming. And also the adaptive node mechanism seems to disturb the ordering. For example with a
float
at hand we don’t see the+
node at the very top. Basically the feature that nodes covered by adaptives get hidden plays against the ordering rule here. Needs some thinking and tweaking still. - We should write some sort of minimal distance function for subtype relations and use it for the ordering. Currently that relation is not taken into account and results for sub and super types look a little random.