vtkVRCollaborationClient: Support sharing navigation
In CAVE environments, interactor styles can be written to manipulate the entire scene (which we have started calling "navigation"). This change supports sharing navigation with collaborators by supporting a new message type "AUV", which is short for "avatar up vector".
Until now, all avatar up vectors have been fixed to a single value (traditionally [0, 0 1]
) for all time. However, if a CAVE user is rotating the scene (orbiting the origin, from collaborators perspective), then it looks nicer to those collaborators if the orbiting avatars up vector is oriented based on the navigation.
This change also fixes a bug that resulted in observers accumulating on the vtkVRCollaborationClient each time a CAVE user stopped and restarted the event loop. That caused each tracking related event to get delivered an increasing number of times.