private OculusQuestHand GetOrAddHand(Handedness handedness) { if (trackedHands.ContainsKey(handedness)) { return(trackedHands[handedness]); } // Add new hand var pointers = RequestPointers(SupportedControllerType.ArticulatedHand, handedness); var inputSourceType = InputSourceType.Hand; IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; var inputSource = inputSystem?.RequestNewGenericInputSource($"Oculus Quest {handedness} Hand", pointers, inputSourceType); var controller = new OculusQuestHand(TrackingState.Tracked, handedness, inputSource); controller.SetupConfiguration(typeof(OculusQuestHand)); for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++) { controller.InputSource.Pointers[i].Controller = controller; } inputSystem?.RaiseSourceDetected(controller.InputSource, controller); trackedHands.Add(handedness, controller); return(controller); }
private OculusQuestHand GetOrAddHand(Handedness handedness, OVRHand ovrHand) { if (trackedHands.ContainsKey(handedness)) { return(trackedHands[handedness]); } Material handMaterial = null; if (handedness == Handedness.Right) { if (rightHandMaterial == null) { rightHandMaterial = new Material(MRTKOculusConfig.Instance.CustomHandMaterial); } handMaterial = rightHandMaterial; } else { if (leftHandMaterial == null) { leftHandMaterial = new Material(MRTKOculusConfig.Instance.CustomHandMaterial); } handMaterial = leftHandMaterial; } // Add new hand var pointers = RequestPointers(SupportedControllerType.ArticulatedHand, handedness); var inputSourceType = InputSourceType.Hand; IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; var inputSource = inputSystem?.RequestNewGenericInputSource($"Oculus Quest {handedness} Hand", pointers, inputSourceType); var controller = new OculusQuestHand(TrackingState.Tracked, handedness, ovrHand, handMaterial, inputSource); // Code is obsolete later on, but older MRTK versions require it. #pragma warning disable 618 controller.SetupConfiguration(typeof(OculusQuestHand)); #pragma warning restore 618 for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++) { controller.InputSource.Pointers[i].Controller = controller; } inputSystem?.RaiseSourceDetected(controller.InputSource, controller); trackedHands.Add(handedness, controller); return(controller); }