// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Input
{
public interface IInputSimulationService : IMixedRealityInputDeviceManager
{
///
/// Typed representation of the ConfigurationProfile property.
///
MixedRealityInputSimulationProfile InputSimulationProfile { get; }
///
/// Simulated eye gaze behavior.
///
EyeGazeSimulationMode EyeGazeSimulationMode { get; set; }
///
/// Simulated controller behavior.
///
ControllerSimulationMode ControllerSimulationMode { get; set; }
///
/// Pose data for the left hand.
///
SimulatedHandData HandDataLeft { get; }
///
/// Pose data for the right hand.
///
SimulatedHandData HandDataRight { get; }
///
/// Pose data for the left motion controller.
///
SimulatedMotionControllerData MotionControllerDataLeft { get; }
///
/// Pose data for the right motion controller.
///
SimulatedMotionControllerData MotionControllerDataRight { get; }
///
/// If true then keyboard and mouse input are used to simulate controllers.
///
bool UserInputEnabled { get; set; }
///
/// The left controller is controlled by user input.
///
bool IsSimulatingControllerLeft { get; }
///
/// The right controller is controlled by user input.
///
bool IsSimulatingControllerRight { get; }
///
/// The left controller is always tracking.
///
bool IsAlwaysVisibleControllerLeft { get; set; }
///
/// The right controller is always tracking.
///
bool IsAlwaysVisibleControllerRight { get; set; }
///
/// Position of the left controller in view space.
///
Vector3 ControllerPositionLeft { get; set; }
///
/// Position of the right controller in view space.
///
Vector3 ControllerPositionRight { get; set; }
///
/// Rotation euler angles of the left controller in view space.
///
Vector3 ControllerRotationLeft { get; set; }
///
/// Rotation euler angles of the right controller in view space.
///
Vector3 ControllerRotationRight { get; set; }
///
/// Reset the left controller.
///
void ResetControllerLeft();
///
/// Reset the right controller.
///
void ResetControllerRight();
#region Obsolete Properties
///
/// Simulated hand behavior.
///
[Obsolete("Use ControllerSimulationMode instead.")]
HandSimulationMode HandSimulationMode { get; set; }
///
/// The left hand is controlled by user input.
///
[Obsolete("Use IsSimulatingControllerLeft instead.")]
bool IsSimulatingHandLeft { get; }
///
/// The right hand is controlled by user input.
///
[Obsolete("Use IsSimulatingControllerRight instead.")]
bool IsSimulatingHandRight { get; }
///
/// The left hand is always tracking.
///
[Obsolete("Use IsAlwaysVisibleControllerLeft instead.")]
bool IsAlwaysVisibleHandLeft { get; set; }
///
/// The right hand is always tracking.
///
[Obsolete("Use IsAlwaysVisibleControllerRight instead.")]
bool IsAlwaysVisibleHandRight { get; set; }
///
/// Position of the left hand in view space.
///
[Obsolete("Use ControllerPositionLeft instead.")]
Vector3 HandPositionLeft { get; set; }
///
/// Position of the right hand in view space.
///
[Obsolete("Use ControllerPositionRight instead.")]
Vector3 HandPositionRight { get; set; }
///
/// Rotation euler angles of the left hand in view space.
///
[Obsolete("Use ControllerRotationLeft instead.")]
Vector3 HandRotationLeft { get; set; }
///
/// Rotation euler angles of the right hand in view space.
///
[Obsolete("Use ControllerRotationRight instead.")]
Vector3 HandRotationRight { get; set; }
///
/// Reset the left hand.
///
[Obsolete("Use ResetControllerLeft instead.")]
void ResetHandLeft();
///
/// Reset the right hand.
///
[Obsolete("Use ResetControllerRight instead.")]
void ResetHandRight();
#endregion
}
}