Skip to content

Built-In Components

Components represent standalone scripts designed to capture data in various commonly sought-after categories. They're crafted for effortless integration and are minimally reliant on specific project configurations. Most of them are added by default to the Cognitive3D_Manager prefab, additional components may be included based on your selections in the scene setup window.

You can find all of these within the Cognitive 3D SDK/Runtime/Components directory. These components are configured such that only one instance of each can be added to a game object. Unless otherwise stated, components record data at a default of 10Hz.

Default Components

HMD Height

Samples the height of a participant's HMD. Average is assumed to be participant's eye height.

Room Size

Sends custom events and sensor data related to when users exit their specified boundaries, modify those boundaries, or recenter within them.

Arm Length

Collects distances from the HMD to the participant's controller. The maximum is assumed to be roughly the participant's arm length.

Frame Rate

Records a sensor for the average, 1% low, and 5% low for framerate over time.

In cases where you are using Meta's Asynchronous Space Warp (ASW), the Meta SDK will cap the framerate to half of the device's refresh rate and inject a synthetic frame for every frame rendered by the engine. As a result, the framerate perceived by the user will be twice that is reported by the engine. To correct for this, our SDK will double the value written to the framerate sensor. In addition, for all frames ASW is enabled and active, the c3d.app.meta.spaceWarp sensor value will be set to 1.

To identify sessions where ASW was used, you can search for all sessions where the session property c3d.app.meta.wasSpaceWarpUsed == true.

HMD Present Event

Sends Custom Events when a participant removes or wears their HMD.

Battery Level

Send the battery level of an Android device after initialization and on quit. This requires building the project to an Android device. This component records data at 0.1Hz.

Controller Tracking

This component is used to send custom events when controllers lose tracking and record controller height relative to HMD position. This component records data at 1Hz. This is different from controller position and rotation which are handled as dynamic objects, at the default rate of 10Hz.

Controller Input Tracker

Records a Dynamic Object property when common controller inputs occur. This is visible in Scene Explorer.

Oculus Hardware

Sends sensor data representing the following data points. Please note that this will only report data if you are building for the Oculus platform and have Oculus Integration selected in the project setup window.

  • Battery Temperature
  • CPU Level
  • GPU Level
  • Power Saving Mode

HMD Orientation

Sends sensor data representing the pitch and yaw of the HMD.

Profiler Sensor

Sends sensor data representing the following Unity profiler metrics. Please note that this only works on Unity versions >= 2020.2. This component records data at 1Hz.

  • Number of draw calls
  • System memory usage in MB
  • Main thread time in ms

Optional Components

These components can be added by drag-and-drop or by the Add Component option in the inspector window.

HMD Collision Event

Sends Custom Events if the HMD collides with something in the game world. Collision LayerMask can be set on the component.

Controller Collision Event

Sends Custom Events when either controller collides in the game world. Collision LayerMask can be set on the component.

Teleport Event

Sends a Custom Event 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!

In the inspector window, drag and drop the GameObject that moves when user teleports.

Multiplayer Components

If you are building a multiplayer app, you can get additional analytics from one of the following components. These components are designed to be dropped into a project that already implements a specific multiplayer framework. See the Multiplayer page for more technical details.

pun 2 support setup

Photon Multiplayer

This supports Photon PUN 2. This component provides:

  • Custom Events when players create, join, leave, or are disconnected from rooms.
  • Sensor values recording Round-Trip Time (RTT/ping) and Round-Trip Time Variance over time.
  • Session Properties using the Photon RoomId to automatically associate multiple player sessions together.

When the checkbox is pressed in the Project Setup Window, it will automatically add a Photon Multiplayer and Photon View component to the Cognitive3D_Manager prefab. The below image shows the expected final setup on the Cognitive3D_Manager.

pun 2 enabled cognitive manager

Note

Please ensure that there is only one Cognitive3D_Manager with a Photon View component across all your multiplayer scenes.

Oculus-specific components

If you have enabled the Oculus Integration / Meta XR sdk from the Project Setup Window, there will be an extra page in the Scene Setup Window. From here you can enable analytics for several additional features for Oculus.

oculus specific components

Oculus Social Data

Select the Oculus Social Data option in the Additional Oculus Setup page of the Scene Setup window to add this component.

This component performs an entitlement check with the Oculus platform to record the following data:

  • A Session Property for the Oculus AppID.
  • A Session Property for the user's Oculus ID. This Oculus Id can also be used with the Participant System if you enable the Record Oculus User Data option on the component.
  • A Session Property for the user's Display Name.

Developer should ensure their app has permissions to access this information. This includes enabling permissions on the Oculus Dashboard and including the Application ID in the Oculus Platform Settings. See the Oculus documentation for more details.

If you already use the Oculus Platform in your app, you may need to configure the Initialize Type on the component:

  • Automatic : This is the default choice. This will automatically complete an entitlement check and associated callbacks when the session begins.
  • Delayed : Waits until you call Oculus.Platform.Core.Initialize() elsewhere in your code to perform the entitlement check.
  • Manual : If you select this option, you need to execute the code below to record data from this component.
  var oculusSocial = FindObjectOfType<Cognitive3D.Components.OculusSocial>();
  if (oculusSocial != null)
  {
    oculusSocial.BeginOculusEntitlementCheck(Cognitive3D.Components.OculusSocial.GetAppIDFromConfig())
  }

Oculus Passthrough

Select the Mixed Reality option in the Additional Oculus Setup page of the Scene Setup window to add this component.

Records a Sensor value representing whether passthrough is enabled and Custom Events when passthrough state changes. For more information on enabling passthrough on Oculus devices, please visit the Get Started with Passthrough page.

Quest Pro Eye Tracking

This option will not add a component. Instead, it modifies the OVRManager to enable settings required for Quest Pro eye tracking support.

Hand Tracking

Select the Hand Tracking Reality option in the Additional Oculus Setup page of the Scene Setup window to add this component.

Records Custom Events when the participant switches from using controllers to using hands or vice versa.

Internal Components

Room Tracking Space

This is added to the user's tracking space identified in the scene setup window to help find the game object in the scene. This doesn't send any events or sensor data.

intercom If you have a question or any feedback about our documentation please use the Intercom button (purple circle) in the lower right corner of any web page.