private OculusQuestArticulatedHand createArticulatedHand(Handedness handedness)
        {
            var inputSystem = Service as IMixedRealityInputSystem;
            var pointers    = RequestPointers(SupportedControllerType.ArticulatedHand, handedness);
            var inputSource = inputSystem?.RequestNewGenericInputSource($"Oculus Quest Hand Controller {handedness.ToString()}", pointers, InputSourceType.Hand);
            var hand        = new OculusQuestArticulatedHand(TrackingState.NotTracked, handedness, inputSource);

            hand.SetupConfiguration(typeof(OculusQuestArticulatedHand), InputSourceType.Hand);
            for (int i = 0; i < hand.InputSource?.Pointers?.Length; i++)
            {
                hand.InputSource.Pointers[i].Controller = hand;
            }
            inputSystem.RaiseSourceDetected(hand.InputSource, hand);
            return(hand);
        }
        public override void Update()
        {
            base.Update();

            if (leftHand == null)
            {
                leftHand = createArticulatedHand(Handedness.Left);
            }
            leftHand?.UpdateController();

            if (rightHand == null)
            {
                rightHand = createArticulatedHand(Handedness.Right);
            }
            rightHand?.UpdateController();
        }