void OnShellSelectEvent(InputSourceBase inputSource, bool newState)
        {
            AFocuser focuser = InputSourceFocuser.GetFocuserForInputSource(inputSource);

            if (focuser != null)
            {
                if (newState)
                {
                    if (inputSource != InputSources.Instance.hands) // && inputSource != InputSources.Instance.fawkes)
                    {
                        OnPressedEvent(focuser);

                        // Need to track hold time before firing this
                        HoldStartedEvent(focuser, focuser.FocusRay);
                    }
                }
                else
                {
                    if (inputSource != InputSources.Instance.hands) // && inputSource != InputSources.Instance.fawkes)
                    {
                        OnReleasedEvent(focuser);

                        // Only fire this if HoldStarted was fired
                        HoldCompletedEvent(focuser, focuser.FocusRay);

                        // Need to only fire this if hold wasn't started?
                        TappedEvent(focuser, focuser.FocusRay);
                    }
                }
            }
        }
        private AFocuser GetFocuserForSource(UnityEngine.XR.WSA.Input.InteractionSourceKind source)
        {
            AFocuser focuser = FocusManager.Instance != null ? FocusManager.Instance.GazeFocuser : null;

            switch (source)
            {
            case UnityEngine.XR.WSA.Input.InteractionSourceKind.Hand:
            {
                focuser = InputSourceFocuser.GetFocuserForInputSource(InputSources.Instance.hands);
                break;
            }

            case UnityEngine.XR.WSA.Input.InteractionSourceKind.Controller:
            {
                focuser = InputSourceFocuser.GetFocuserForInputSource(InputSources.Instance.sixDOFRay);
                break;
            }
            }
            return(focuser);
        }
        void OnShellSelectEvent(InputSourceBase inputSource, bool newState)
        {
            AFocuser focuser = InputSourceFocuser.GetFocuserForInputSource(inputSource);

            if (focuser != null)
            {
                if (newState)
                {
                    if (inputSource != InputSources.Instance.hands)
                    {
                        OnPressedEvent(focuser);

                        // Need to track hold time before firing this
                        HoldStartedEvent(focuser, focuser.FocusRay);
                    }
                }
                else
                {
                    if (inputSource != InputSources.Instance.hands)
                    {
                        OnReleasedEvent(focuser);

                        // Only fire this if HoldStarted was fired
                        HoldCompletedEvent(focuser, focuser.FocusRay);

                        // Send double tap (should be multi-tap someday)
                        if (Time.time - lastHoldReleaseTime <= MultiTapWindow)
                        {
                            DoubleTappedEvent(focuser, focuser.FocusRay);
                        }

                        // Need to only fire this if hold wasn't started?
                        TappedEvent(focuser, focuser.FocusRay);

                        lastHoldReleaseTime = Time.time;
                    }
                }
            }
        }