10d775df3d
This commit is aimed at cleaning up the filtering code by changing the filtering idiom/pattern used. While the old code used a "check then do" approach, the new code does a "grab then assimilate". The main benefits are that: * the code duplication that used to exist has now been removed, making it easier to add new channel types for data * a recursive "peeking" ability now means that the old problems with data existing deep in the tree (i.e. figuring out whether a channel should be shown based on whether it will have any descendents) should now work much better than before. In the process, I've found and fixed a few previously unnoticed bugs with how some channels were constructed, so hopefully things work a bit better now. TODO's: * Action-Group filtering stuff hasn't been refactored yet. This was causing some grief in the past, so I still need to check this carefully. * Material Nodes support (missing in trunk) should be easy to slot in now :)