Tracker Options Window

The Tracker Options Window can be opened from the cognitiveVR menu


If you do not have a CognitiveVR_Manager prefab in your scene, you will be prompted to add one.

Tracker Options



These scripts are intended for easy implementation and these try to make few assumptions about your project. You should review these scripts and simplify/optimize in ways specific to your project's needs. This page gives you a high level overview about these scripts.


The CognitiveVR_Manager prefab can be added to your project to connect to the cognitiveVR analytics server. CognitiveVR_Manager must be Initialized before you can send analytics data. By default, this happens on Start().

DeviceInfo is automatically collected. It includes:

  • Application name, version and platform
  • Operating System
  • Graphics Card name, vendor and memory
  • Processor type
  • System memory
  • Display model and family

This script also contains the logic for capturing the player's hmd position and world gaze point.

Analytics Tracker Components

Arm Length

Collects distances from the HMD to the player's controller. The maximum is assumed to be roughly the player's arm length. This only starts tracking when the player has pressed the Steam Controller Trigger or any button on Oculus Touch.

Battery Level

Send the battery level of an Android device after initialization and on quit. This requires building the product to an android device.

Boundary Event

Sends a transaction when SteamVR Chaperone or Oculus Guardian becomes visible and becomes hidden.


Sends a transaction when framerate falls below a threshold. This threshold is set in CognitiveVR_Preferences. Can send a basic comfort score (FPS + Average HMD rotation rate) on an interval.

Controller Collision Event

Sends transactions when either controller collides in the game world. Collision LayerMask can be set in the Tracker Options Window.

Controller Input Event

If you are using SteamVR, Controller Input Event assumes you are using a SteamVR_TrackedController component.

Sends a transaction when common controller inputs occur, specifically TriggerClicked, TriggerUnclicked, Gripped, Ungripped and PadClicked.

Sending transactions for very common events may not be helpful, depending on what you are trying to learn from your data. For example, it may be easier to send one transaction at the end of a level to see how many times a specific input occurred. This component could be more valuable if, for example, you are trying to determine if certain gestures are difficult for some players to perform.

HMD Collision Event

Sends transactions if the HMD collides with something in the game world. Collision LayerMask can be set in the Tracker Options Window.

HMD Height

Samples the height of a player's HMD. Average is assumed to be player's eye height. Requires Oculus, SteamVR or Fove

HMD Present Event

Sends transactions when a player removes or wears their HMD.

The SteamVR HMD proximity sensor seems to have a delay of 10 seconds when removing the HMD. This has been accounted for in the transaction, but this component may miss events when the player quickly removes and replaces their HMD.

Headphone State

Check if the user has headphones connected. This currently only works with Oculus Utilities on Android

Issue Reporter

Enable a console that can send user-created notes to SceneExplorer. This could be extended to send bug reports to Jira or other bug tracker software. Since this is using OnGUI and requires a keyboard for input, it is not recommended to be used outside of development!

Occlusion Event

Sends transactions when a tracked device (likely a controller, but could also be headset or lighthouse) loses visibility (visible) or is disconnected/loses power (connected).

Recenter Event

Sends transaction when the HMD recenters. This is usually caused by calling UnityEngine.VR.InputTracking.Recenter(). Requires Oculus Utilities.

Room Size

Include SteamVR Chaperone Room Size or Oculus Guardian Size in Device Info.

Screen Resolution

Include Screen Resolution in Device Info. Probably only useful for mobile.

Steamworks User

Create a unique user from plugin. This requires you to uncomment the example code in the script. The cognitiveVR SDK does not ship with this package; it is available here

UserInfo is a unique identifier to track the player. It is optional, but by providing a value, you can slice your data and see how a user's experience changes over their course of using your product.

Teleport Event

Sends a transaction when a player's HMD root transform changes positions. This is not triggered when the player walks while using roomscale. If the player moves without an immediate teleport, do not use this component!