VG_ExternalControllerManager is a static class representing the controller abstraction towards VirtualGrasp.

It should be used in any VG_MainScript, such as MyVirtualGrasp.cs, where it is initialized after the VG_Controller itself initialized:

override public void Awake()

VG_ExternalControllerManager.cs is a public script so that it is extendable, for example to add more controllers or functionalities.

The VG_ExternalControllerManager is managing different VG_ExternalControllers. We call it external controller, because an external source or plugin is providing VirtualGrasp with the input data in Unity (but external to VirtualGrasp). In most cases, the source is a plugin provided by the hardware manufacturer for your engine of choice.

In contrast to external controllers we term internal controllers as those that link the controllers native library directly to VirtualGrasp. Internal controllers are by default not supported for the VirtualGrasp SDK, due to third-party distribution regulations.

Thus, whenever we speak of controllers or sensors in this documentation, we refer to external controllers.

Internal controllers.
External controller pipeline.

VG_ExternalController Class

To link together a controller plugin with VG, the VirtualGrasp SDK provides a base class VG_ExternalController. The VirtualGrasp SDK already includes a few ready-to-use child classes for the controllers listed below. For each controller, you will also find its VG_ControllerProfile, among others to configure its Controller Axis Mapping.

While all these classes can serve as tutorials to understand how a VG_ExternalController can be setup, please refer to each particular page for further details on just that particular controller.

Switching between different external controllers using VG_ControllerProfiles.