/// <inheritdoc /> public SimulatedHandControllerDataProvider(string name, uint priority, SimulatedHandControllerDataProviderProfile profile, IMixedRealityInputSystem parentService) : base(name, priority, profile, parentService) { var globalSettingsProfile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; HandPoseAnimationSpeed = profile.HandPoseAnimationSpeed; RenderingMode = profile.RenderingMode != globalSettingsProfile.RenderingMode ? profile.RenderingMode : globalSettingsProfile.RenderingMode; HandPhysicsEnabled = profile.HandPhysicsEnabled != globalSettingsProfile.HandPhysicsEnabled ? profile.HandPhysicsEnabled : globalSettingsProfile.HandPhysicsEnabled; UseTriggers = profile.UseTriggers != globalSettingsProfile.UseTriggers ? profile.UseTriggers : globalSettingsProfile.UseTriggers; BoundsMode = profile.BoundsMode != globalSettingsProfile.BoundsMode ? profile.BoundsMode : globalSettingsProfile.BoundsMode; if (profile.TrackedPoses != null && profile.TrackedPoses.Count > 0) { TrackedPoses = profile.TrackedPoses.Count != globalSettingsProfile.TrackedPoses.Count ? profile.TrackedPoses : globalSettingsProfile.TrackedPoses; } else { TrackedPoses = globalSettingsProfile.TrackedPoses; } if (TrackedPoses == null || TrackedPoses.Count == 0) { throw new ArgumentException($"Failed to start {name}! {nameof(TrackedPoses)} not set"); } leftHandConverter = new SimulatedHandDataConverter( Handedness.Left, TrackedPoses, HandPoseAnimationSpeed, JitterAmount, DefaultDistance); rightHandConverter = new SimulatedHandDataConverter( Handedness.Right, TrackedPoses, HandPoseAnimationSpeed, JitterAmount, DefaultDistance); postProcessor = new HandDataPostProcessor(TrackedPoses); }
/// <inheritdoc /> public WindowsMixedRealityControllerDataProvider(string name, uint priority, WindowsMixedRealityControllerDataProviderProfile profile, IMixedRealityInputSystem parentService) : base(name, priority, profile, parentService) { #if WINDOWS_UWP if (!MixedRealityToolkit.TryGetSystemProfile <IMixedRealityInputSystem, MixedRealityInputSystemProfile>(out var inputSystemProfile)) { throw new ArgumentException($"Unable to get a valid {nameof(MixedRealityInputSystemProfile)}!"); } var isGrippingThreshold = profile.GripThreshold != inputSystemProfile.GripThreshold ? profile.GripThreshold : inputSystemProfile.GripThreshold; postProcessor = new HandDataPostProcessor(TrackedPoses, isGrippingThreshold) { PlatformProvidesPointerPose = true }; }
/// <inheritdoc /> public OculusHandControllerDataProvider(string name, uint priority, OculusHandControllerDataProviderProfile profile, IMixedRealityInputSystem parentService) : base(name, priority, profile, parentService) { if (!MixedRealityToolkit.TryGetSystemProfile <IMixedRealityInputSystem, MixedRealityInputSystemProfile>(out var inputSystemProfile)) { throw new ArgumentException($"Unable to get a valid {nameof(MixedRealityInputSystemProfile)}!"); } MinConfidenceRequired = (OculusApi.TrackingConfidence)profile.MinConfidenceRequired; handDataProvider = new OculusHandDataConverter(); var isGrippingThreshold = profile.GripThreshold != inputSystemProfile.GripThreshold ? profile.GripThreshold : inputSystemProfile.GripThreshold; postProcessor = new HandDataPostProcessor(TrackedPoses, isGrippingThreshold) { PlatformProvidesPointerPose = true }; }