shown in other instead.
Classes and Components Overview
When you first open your project based on the VR Sample and see a lot of different classes you might get confused a bit. But let's take a quick look at each of them and see what they actually do and how they are related to each other.
This is a base class for all objects, that you can interact with. It defines a basic set of interactions, in other words: here you define what can a user do with your object. You can add your own type of interaction here.
The following component classes are inherited from the VRInteractable:
|ObjMovable||This component type can be used for all objects, that can be grabbed, held and thrown (it can be a ball, a pistol, whatever you can take, carry and drop).|
|ObjHandle||This component type can be used for all objects, that can be turned or moved while being held (variuos handles, levers, valves, etc.).|
|ObjSwitch||This component type can be used for all objects, that can be switched by grabbing (all sorts of buttons and on-off switches, including rotary ones).|
|ObjButton||This component type demonstrates animated text, when grabbed, and can be used in combination with the ObjSwitch component to provide additional effects.|
|ObjLaserPointer||This component enables casting a laser ray by the object.|
The laser pointer object in the VR Sample world has ObjMovable and ObjLaserPointer components attached.
This is a base class for all players. It contains declaration of baseline controls, common basic player operations, callback management etc.
The following component classes are inherited from the VRPlayer:
This class registers all VRPlayer components in the Component System, checks which VR plugin is loaded and creates a player of the corresponding type (VRPlayerOcculus or VRPlayerVive). It also enables and shows necessary controllers.
AppOculusProxy and AppViveProxy Classes#
Both plugins implementing HMD support (AppOculus and AppVive) have UnigineScript interface. So, in order to use them in our C++ project we need a proxy class (sort of API "translator") for each of them, wrapping UnigineScript methods in C++.
This component type is used to create various graphic user interfaces (GUI). Here you can add widgets (labels, buttons, etc.) and implement event handlers for them.
Framework includes the Component System which implements the core functionality of components and a set of utility classes and functions used for playing sounds, auxiliary math and 3d math functions, callback system implementation .