// --------------------------------------------------------------------------------------------------------------------
//
// Copyright (c) VRMADA, All rights reserved.
//
// --------------------------------------------------------------------------------------------------------------------
using System;
using UnityEngine;
namespace UltimateXR.Devices
{
///
/// Controller tracking interface for all VR input devices, supporting single controllers and dual controller setups.
///
public interface IUxrControllerTracking
{
#region Public Types & Data
///
/// Gets the type of the input controller component that handles input for the same kind of controller this component
/// handles the tracking for.
///
Type RelatedControllerInputType { get; }
///
/// Gets whether the camera of the tracking setup has 6 degrees of freedom
///
bool HeadsetIs6Dof { get; }
///
/// Gets if the left hand sensor in the component inspector has been set up
///
bool HasLeftHandSensorSetup { get; }
///
/// Gets if the right hand sensor in the component inspector has been set up
///
bool HasRightHandSensorSetup { get; }
///
/// Gets the world-space position of the left controller sensor.
///
Vector3 SensorLeftPos { get; }
///
/// Gets the world-space position of the right controller sensor.
///
Vector3 SensorRightPos { get; }
///
/// Gets the world-space rotation of the left controller sensor.
///
Quaternion SensorLeftRot { get; }
///
/// Gets the world-space rotation of the right controller sensor.
///
Quaternion SensorRightRot { get; }
///
/// Gets the world-space position where the left hand bone should be, using the left sensor data.
///
Vector3 SensorLeftHandPos { get; }
///
/// Gets the world-space position where the right hand bone should be, using the right sensor data.
///
Vector3 SensorRightHandPos { get; }
///
/// Gets the world-space rotation that the left hand bone should have using the left sensor data.
///
Quaternion SensorLeftHandRot { get; }
///
/// Gets the world-space rotation that the right hand bone should have using the right sensor data.
///
Quaternion SensorRightHandRot { get; }
#endregion
}
}