Hi everybody,
I’m encountering a strange corner case while opening patches, where on-disk, serialized data in the Tag
field of a node in some cases isn’t accessible via VVVV.PluginInterfaces.V2.Graph
interface. I discovered this edge case while testing to ensure that the contents of the Tag
pin get loaded properly.
Say I have a patch that contains 2 modules, which both have a UUID
in their Tag
field:
<!DOCTYPE PATCH SYSTEM "http://vvvv.org/versions/vvvv50beta35.8.dtd" >
<PATCH nodename="C:\Program Files\vvvv\vvvv_50beta35.8_x64\hehe.v4p" id="87" systemname="hehe" filename="C:\Program Files\vvvv\vvvv_50beta35.8_x64\hehe.v4p">
<BOUNDS type="Window" left="20865" top="10455" width="9000" height="6000">
</BOUNDS>
<NODE systemname="player (iris-lib)" filename="..\..\..\Users\k\Desktop\VVVV\modules\player (iris-lib).v4p" nodename="player (iris-lib)" componentmode="InAWindow" id="0">
<BOUNDS type="Node" left="900" top="1260" width="3840" height="270">
</BOUNDS>
<PIN pinname="Tag" slicecount="1" values="efe3eb25-42bc-8b1e-5a41-15a7483256a0">
</PIN>
<BOUNDS type="Window" left="26205" top="3135" width="3705" height="3180">
</BOUNDS>
</NODE>
<NODE systemname="player (iris-lib)" filename="..\..\..\Users\k\Desktop\VVVV\modules\player (iris-lib).v4p" nodename="player (iris-lib)" componentmode="InAWindow" id="3">
<BOUNDS type="Node" left="915" top="2325" width="3840" height="270">
</BOUNDS>
<PIN pinname="Tag" slicecount="1" values="34332200-c8bb-4809-a09c-91d8c62ebd92">
</PIN>
<BOUNDS type="Window" left="26055" top="225" width="9000" height="2895">
</BOUNDS>
</NODE>
<NODE nodename="IOBox (String)" componentmode="InABox" id="4" systemname="IOBox (String)">
<BOUNDS type="Node" left="900" top="885" width="3165" height="270">
</BOUNDS>
<BOUNDS type="Box" left="900" top="885" width="3165" height="270">
</BOUNDS>
<PIN pinname="Input String" visible="0" slicecount="1" values="efe3eb25-42bc-8b1e-5a41-15a7483256a0">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
</NODE>
<NODE nodename="IOBox (String)" componentmode="InABox" id="5" systemname="IOBox (String)">
<BOUNDS type="Node" left="870" top="1905" width="3150" height="270">
</BOUNDS>
<BOUNDS type="Box" left="870" top="1905" width="3150" height="270">
</BOUNDS>
<PIN pinname="Input String" visible="0" slicecount="1" values="395fa1c9-2149-e352-bdff-5b9407570458">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
</NODE>
</PATCH>
Now, if I double click the patch file to open it, the correct contents of the Tag
field are accessible via the plugin interface, and everything works as expected:
The id is correctly read from the saved XML, displayed in the inspector and handed over to the plugin.
However, when I start VVVV
and then Ctrl-o (or Ctrl-Shift-o) that same patch, I get this:
The correct value is displayed in the inspector, but the plugin interface only discovers an empty Tag
pin. This also happens when I add the module to the path and instantiate it using the node browser.
I’ll try and see if I can find a temporary workaround (e.g. delaying the parsing by one frame), but it would be great if this could be consistent across all the different ways of creating/loading an instance of a patch.
Cheers!
Karsten
ps: I’m using vvvv_50beta35.8_x64