// 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 } }