mixedreality/com.microsoft.mixedreality..../Core/Interfaces/Devices/IMixedRealityController.cs

77 lines
2.7 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Input
{
/// <summary>
/// Mixed Reality Toolkit controller definition, used to manage a specific controller type
/// </summary>
public interface IMixedRealityController
{
/// <summary>
/// Is the controller enabled?
/// </summary>
bool Enabled { get; set; }
/// <summary>
/// Outputs the current state of the Input Source, whether it is tracked or not. As defined by the SDK / Unity.
/// </summary>
TrackingState TrackingState { get; }
/// <summary>
/// The designated hand that the Input Source is managing, as defined by the SDK / Unity.
/// </summary>
Handedness ControllerHandedness { get; }
/// <summary>
/// The registered Input Source for this controller
/// </summary>
IMixedRealityInputSource InputSource { get; }
/// <summary>
/// The controller's "Visual" <see href="https://docs.unity3d.com/ScriptReference/Component.html">Component</see> in the scene.
/// </summary>
IMixedRealityControllerVisualizer Visualizer { get; }
/// <summary>
/// Indicates that this controller is currently providing position data.
/// </summary>
/// <remarks>
/// <para>This value may change during usage for some controllers. As a best practice,
/// be sure to check this value before using position data.</para>
/// </remarks>
bool IsPositionAvailable { get; }
/// <summary>
/// Indicates the accuracy of the position data being reported.
/// </summary>
bool IsPositionApproximate { get; }
/// <summary>
/// Indicates that this controller is currently providing rotation data.
/// </summary>
/// <remarks>
/// <para>This value may change during usage for some controllers. As a best practice,
/// be sure to check this value before using rotation data.</para>
/// </remarks>
bool IsRotationAvailable { get; }
/// <summary>
/// Mapping definition for this controller, linking the Physical inputs to logical Input System Actions
/// </summary>
MixedRealityInteractionMapping[] Interactions { get; }
Vector3 AngularVelocity { get; }
Vector3 Velocity { get; }
/// <summary>
/// Some controllers such as articulated should only be able
/// to invoke pointing/distant interactions in certain poses.
/// </summary>
bool IsInPointingPose { get; }
}
}