protected virtual void ManageTouchpadControl()
        {
            if (touchpadControlScript != null)
            {
                VRTK_ControllerReference             controllerReference       = GetReferenceFromEvents(touchpadControlScript.controller);
                VRTK_SDKVector2AxisInputOverrideType selectedCoorinateModifier = GetSelectedModifier(touchpadControlCoordinateOverrides, controllerReference);
                if (selectedCoorinateModifier.overrideAxis != VRTK_ControllerEvents.Vector2AxisAlias.Undefined)
                {
                    touchpadControlScript.enabled        = false;
                    touchpadControlScript.coordinateAxis = selectedCoorinateModifier.overrideAxis;
                    touchpadControlScript.enabled        = true;
                }

                VRTK_SDKButtonInputOverrideType selectedActivationModifier = GetSelectedModifier(touchpadControlActivationOverrides, controllerReference);
                if (selectedActivationModifier.overrideButton != VRTK_ControllerEvents.ButtonAlias.Undefined)
                {
                    touchpadControlScript.enabled = false;
                    touchpadControlScript.primaryActivationButton = selectedActivationModifier.overrideButton;
                    touchpadControlScript.enabled = true;
                }

                VRTK_SDKButtonInputOverrideType selectedActionModifier = GetSelectedModifier(touchpadControlModifierOverrides, controllerReference);
                if (selectedActionModifier.overrideButton != VRTK_ControllerEvents.ButtonAlias.Undefined)
                {
                    touchpadControlScript.enabled = false;
                    touchpadControlScript.actionModifierButton = selectedActionModifier.overrideButton;
                    touchpadControlScript.enabled = true;
                }
            }
        }
        protected virtual VRTK_SDKVector2AxisInputOverrideType GetSelectedModifier(List <VRTK_SDKVector2AxisInputOverrideType> overrideTypes, VRTK_ControllerReference controllerReference)
        {
            //attempt to find by the overall SDK set up to start with
            VRTK_SDKVector2AxisInputOverrideType selectedModifier = overrideTypes.FirstOrDefault(item => item.loadedSDKSetup == sdkManager.loadedSetup);

            //If no sdk set up is found or it is null then try and find by the SDK controller
            if (selectedModifier == null)
            {
                SDK_BaseController.ControllerType currentControllerType = VRTK_DeviceFinder.GetCurrentControllerType(controllerReference);
                selectedModifier = overrideTypes.FirstOrDefault(item => item.controllerType == currentControllerType);
            }
            return(selectedModifier);
        }
 protected virtual void ManagePointerDirectionIndicator()
 {
     if (pointerDirectionIndicatorScript != null)
     {
         VRTK_ControllerReference             controllerReference       = GetReferenceFromEvents(pointerDirectionIndicatorScript.GetControllerEvents());
         VRTK_SDKVector2AxisInputOverrideType selectedCoorinateModifier = GetSelectedModifier(directionIndicatorCoordinateOverrides, controllerReference);
         if (selectedCoorinateModifier.overrideAxis != VRTK_ControllerEvents.Vector2AxisAlias.Undefined)
         {
             pointerDirectionIndicatorScript.enabled        = false;
             pointerDirectionIndicatorScript.coordinateAxis = selectedCoorinateModifier.overrideAxis;
             pointerDirectionIndicatorScript.enabled        = true;
         }
     }
 }