/// <inheritdoc /> public override void Update() { base.Update(); if (handDataProvider.TryGetHandData(Handedness.Left, RenderingMode == HandRenderingMode.Mesh, MinConfidenceRequired, out var leftHandData)) { var controller = GetOrAddController(Handedness.Left); leftHandData = postProcessor.PostProcess(Handedness.Left, leftHandData); controller?.UpdateController(leftHandData); } else { RemoveController(Handedness.Left); } if (handDataProvider.TryGetHandData(Handedness.Right, RenderingMode == HandRenderingMode.Mesh, MinConfidenceRequired, out var rightHandData)) { var controller = GetOrAddController(Handedness.Right); rightHandData = postProcessor.PostProcess(Handedness.Right, rightHandData); controller?.UpdateController(rightHandData); } else { RemoveController(Handedness.Right); } }
/// <inheritdoc/> public override void Update() { base.Update(); var sources = GetDetectedSources(); for (var i = 0; i < sources.Count; i++) { var sourceState = sources[i]; var spatialInteractionSource = sourceState.Source; if (!TryGetController(spatialInteractionSource.Id, out BaseController controller)) { controller = CreateController(spatialInteractionSource); } if (controller != null && controller is MixedRealityHandController) { if (handDataProvider.TryGetHandData(sourceState, RenderingMode == HandRenderingMode.Mesh, out var handData)) { ((MixedRealityHandController)controller).UpdateController(postProcessor.PostProcess(spatialInteractionSource.Handedness.ToHandedness(), handData)); preservedSpatialInteractionSourceIdCache.Add(spatialInteractionSource.Id); } } else if (controller != null) { ((WindowsMixedRealityMotionController)controller).UpdateController(sourceState); preservedSpatialInteractionSourceIdCache.Add(spatialInteractionSource.Id); } } RemoveUntrackedControllers(); preservedSpatialInteractionSourceIdCache.Clear(); }
/// <inheritdoc /> protected override void UpdateSimulatedController(IMixedRealitySimulatedController simulatedController) { // Ignore updates if the simulated controllers are not tracked, but only visible. if (simulatedController.ControllerHandedness == Handedness.Left && !LeftControllerIsTracked) { return; } else if (simulatedController.ControllerHandedness == Handedness.Right && !RightControllerIsTracked) { return; } var simulatedHandController = (MixedRealityHandController)simulatedController; var converter = simulatedHandController.ControllerHandedness == Handedness.Left ? leftHandConverter : rightHandConverter; var simulatedHandData = converter.GetSimulatedHandData( simulatedController.GetPosition(DepthMultiplier), simulatedController.GetDeltaRotation(RotationSpeed)); simulatedHandData = postProcessor.PostProcess(simulatedHandController.ControllerHandedness, simulatedHandData); simulatedHandController.UpdateController(simulatedHandData); }