Hristo brought this up over at cebas beta, I thought it an awesome idea.
Is it possible to filter-by-connection-type when dragging to no where in magma?
Right now, you drag off of an output and you just get the full context, a list of all of the nodes. If it were to be, this way, you would only see a list of nodes that were applicable to the current output wire.
This is somewhat implemented already, but in many cases the “applicable” list is not clear.
For example, dragging from the Geometry input socket of an IntersectRay does not even ask what type you want, since only InputGeometry makes sense there.
Dragging from its Ray Origin assumes you want the World Position of the Particle and creates a Position InputChannel with ToWorld operator without asking.
Dragging from its Ray Direction produces a Vector [0,0,-1] automatically.
In all 3 cases, holding down CTRL key will open the full operators menu.
But dragging from a control socket of a Switch for example does not mean only Logic operators are a valid input, since ANY Integer result can be a valid Boolean value, so any node is potentially able to provide it, as long as its value is converted to Integer.
Another node that is handled automatically right now is InputTexture. If you check the options “Color”, “Normal”, “Position” and/or “TextureCoord” and drag from the resulting input sockets, the correct input channels will be created by default, unless you hold down CTRL to pop up the full menu.
If you drag from the output socket of InputGeometry, only the Object category pops up. Holding CTRL does nothing because no other nodes make sense.
If you drag from the output socket of InputObject, a PropertyQuery is created because nothing else makes sense there.
But in many cases we cannot predict what you might be trying to do, so dragging from the inputs or outputs of an Add node has no special handling or filters.
Currently, our inputs don’t even have hints about what type might be expected. We wanted to implement such hints to allow automatic type conversion, but we run out of time. If we ever get that, we might be able to do something more advanced.
I suspect I should have stated clearer intentions as I can see that it would be literally impossible to guesstimate what I might try and do since I usually don’t know what I am going to do LOL.
I was thinking only of the output sockets of functions/math/ect. nodes. Not, for instance, input sockets, input channels output sockets.