with the imported EyeTribe library comes a mutable Class called Gazemanager(that is also a Singleton - getInstance()_ will return its single instance).
a outputpin of a mutable datatype (like output pin of getInstance(), returning _GazeManager in this example) can have only one connection per output. Otherwise, when calling two operations, it would be unclear which of them should be called first:
as both Activate and CalibrationStart are called on the same instance.
(Should it be decided just visually, from top to down? Left - right? this is too vague.)
In the screenshot, you see
CalibrationStart(GazeManager gazemanager, ...);
and we want to call them in this order. Note that Activate and CalibrationStart are from our C# Wrapper, taking GazeManageras an input. The nodes you see here do not have any ouput, so they would be defined by:
public static void Activate(GazeManager gazemanager)
Note: as we're dealing with a Singleton, we could avoid the red links by simply doing this:
However, this is still ambiguous, same as explained above. Only difference is that VL will not show red links, as it is up to the external library what get_Instance returns.
What we need is a link from Activate to CalibrationStart, to define their order. We therefore need to output the Instance of GazeManager at Activate, and use this as the input for the CalibrationStart node, indicating that the GazeManager 'goes through' Activate first, and then 'goes through' CalibrationStart:
This is why we need the additional output, even though we are dealing with a Singleton.
Does this make things clear enough?