private void CheckRecenter(int index)
 {
     if (states[index].GetButtonDown(ControllerButton.APP))
     {
         states[index].recentered = true;
         m_NativeController.RecenterController(index);
     }
 }
        private void UpdateControllerState(int index)
        {
            m_NativeController.UpdateState(index);
            states[index].controllerType = m_NativeController.GetControllerType(index);
#if UNITY_EDITOR
            if (NRInput.EmulateVirtualDisplayInEditor)
            {
                states[index].controllerType = ControllerType.CONTROLLER_TYPE_PHONE;
            }
#endif
            states[index].availableFeature = (ControllerAvailableFeature)m_NativeController.GetAvailableFeatures(index);
            states[index].connectionState  = m_NativeController.GetConnectionState(index);
            states[index].rotation         = m_NativeController.GetPose(index).rotation;
            states[index].position         = m_NativeController.GetPose(index).position;
            states[index].gyro             = m_NativeController.GetGyro(index);
            states[index].accel            = m_NativeController.GetAccel(index);
            states[index].mag          = m_NativeController.GetMag(index);
            states[index].touchPos     = m_NativeController.GetTouch(index);
            states[index].isTouching   = m_NativeController.IsTouching(index);
            states[index].recentered   = false;
            states[index].isCharging   = m_NativeController.IsCharging(index);
            states[index].batteryLevel = m_NativeController.GetBatteryLevel(index);
            states[index].buttonsState = (ControllerButton)m_NativeController.GetButtonState(index);
            states[index].buttonsDown  = (ControllerButton)m_NativeController.GetButtonDown(index);
            states[index].buttonsUp    = (ControllerButton)m_NativeController.GetButtonUp(index);

            IControllerStateParser stateParser = ControllerStateParseUtility.GetControllerStateParser(states[index].controllerType, index);
            if (stateParser != null)
            {
                stateParser.ParserControllerState(states[index]);
            }

            CheckRecenter(index);

            if (m_NeedRecenter)
            {
                for (int i = 0; i < ControllerCount; i++)
                {
                    states[i].recentered = true;
                    m_NativeController.RecenterController(i);
                }
                m_NeedRecenter = false;
            }
        }
 private void ResetController(int index)
 {
     states[index].recentered = true;
     m_NativeController.RecenterController(index);
 }