Hi gang, a workflow issue and a feature request to help deal with it. I completely understand if this isn’t high priority for the devvvs, it’s definitely a ‘nice to have’ not ‘must have’.
Although maybe there is a feature that already does this that I missed, or people have better solutions to patch management that avoid the problem entirely?
vvvv UI Feature request. (although could work the same in VL)
Better management of patches and their subpatches when you want to make a new iteration.
Often I work iteratively on patches and for neatness they will use subpatches.
For instance I might have a patch called Particles1 and in it are some childpatches Particles1_EmitterLogic and Particles1_SpinControl. (and in turn those patches might also have children.)
I might reach a point in my work where I’ve shown a client Particles1 and they like it but want some changes. I suspect they might also want to go back to Particles1 or maybe I will use it again elsewhere.
So I want to create Particles2 as a copy of Particles1 and continue developing, allowing me to go back to Particles1 if required.
Issue1: I want to create a separate instance based on the old instance. If I do this via ‘save as’ I will prevent vvvv finding particles1 in the node browser again during that session. The workaround is I duplicate the patch externally using file explorer and manually rename the copy Particles2. Then in the nodebrowser I can replace Particles1 with Particles2. They both are accessible in the nodebrowser for the rest of the session.
Issue2: Particles2 will still contain Particles1_EmitterLogic and Particles1_SpinControl and further children. I have to also externally duplicate, rename and then load all these subpatches to create a totally new iteration of Particles2 including subpatches. For a complicated patch with a lot of subpatches this can take a bit of time and is occasionally error prone if I miss a subpatch.
I’d like a tool for creating a new iteration of a patch with a couple of clicks. Could be a menu option ‘iterate’ or maybe using the ctrl-duplicate functionality used in the nodebrowser to clone VL and other plugin nodes.
If I select a new node and run this function I get a rename dialog with a couple of options.
-Rename field default text will automatically append or increment the number in the parent patch name eg ‘particles1’ to ‘particles2’. Or I can type anything.
-A check box option to also iterate subpatches
-If this is checked a new panel shows all child subpatches with checkboxes for each (could look like finder window). It will automatically check and bring to the top of the list those where the name (Eg Particles1) is contained in the start of the subpatch name (Eg Particles1_EmitterLogic). In many cases this will be correct behaviour and I just press ok. Like the finder there is also a checkbox option to include modules.
-I can use this UI to manually check and uncheck subpatches.
-I would include patches that haven’t previously been iterated because perhaps I only realised I need to iterate this subpatch now that I’ve finished the previous version. If I check a previously not iterated patch ‘foobar’ it will automatically be prepended with the new parent name eg ‘particles1_foobar’.
-I can also uncheck anything that might have been included by accident due to the name matching. eg ‘Particles1to1’ which is some contrib I downloaded and don’t want to iterate.
This could theoretically apply to other kinds of nodes that I might want to iterate eg shaders, VL nodes etc although I imagine with VL nodes its more complicated because its more than file renaming, it’s creating a new instance within the VL file.
Press ok and copies are created, renamed as required from parent level down through all child levels and the new iteration replaces the old one. Get straight to work on your new iteration.
Perhaps also a ‘duplicate and iterate’ function where it first duplicates the node then iterates the copy. The old node remains in place.
Also a quick bonus feature request for a ‘distribute’ tool to go with the ‘align’ tool. Shortcut could be Ctrl-Shift-L. Nodes get spaced evenly either horizontally or vertically depending on what arrangement they are already biased towards.