private void ButtonUpdate() { foreach (var b in buttonsArr) { b.UpdateState(m_ControllerState.GetButton(b.buttonType)); } }
public void ParserControllerState(ControllerState state) { try { _touch_status = (Mathf.Abs(state.touchPos.x) > PRECISION || Mathf.Abs(state.touchPos.y) > PRECISION); if (!_touch_status) { _touch.x = 0f; _touch.y = 0f; } else { _touch.x = state.touchPos.x; _touch.y = state.touchPos.y; } UpdateCurrentTouchArea(); lock (_buttons) { lock (_down) { for (int i = 0; i < _buttons.Length; ++i) { _down[i] = _buttons[i]; } } _physical_button_down = _physical_button; _physical_button = state.GetButton(ControllerButton.TRIGGER); if (_current_down_btn != -1) { _buttons[_current_down_btn] = _physical_button; if (!_buttons[_current_down_btn]) { _current_down_btn = -1; } } else { _buttons[0] = false; //Trigger _buttons[1] = false; //App _buttons[2] = false; //Home bool _is_down = !_physical_button_down & _physical_button; if (_currentTouchArea == TouchAreaEnum.Center) { _buttons[0] = _physical_button && _is_down; } else if (_currentTouchArea == TouchAreaEnum.Up) { _buttons[1] = _physical_button && _is_down; } else if (_currentTouchArea == TouchAreaEnum.Down) { _buttons[2] = _physical_button && _is_down; } _current_down_btn = -1; for (int i = 0; i < 3; i++) { if (_buttons[i]) { _current_down_btn = i; break; } } } lock (_buttons_up) { lock (_buttons_down) { for (int i = 0; i < _buttons.Length; ++i) { _buttons_up[i] = (_down[i] & !_buttons[i]); _buttons_down[i] = (!_down[i] & _buttons[i]); } } } } } catch (Exception) { Debug.LogError("Controller Data Error"); } state.isTouching = _touch_status; state.touchPos = _touch; state.buttonsState = (_buttons[0] ? ControllerButton.TRIGGER : 0) | (_buttons[1] ? ControllerButton.APP : 0) | (_buttons[2] ? ControllerButton.HOME : 0); state.buttonsDown = (_buttons_down[0] ? ControllerButton.TRIGGER : 0) | (_buttons_down[1] ? ControllerButton.APP : 0) | (_buttons_down[2] ? ControllerButton.HOME : 0); state.buttonsUp = (_buttons_up[0] ? ControllerButton.TRIGGER : 0) | (_buttons_up[1] ? ControllerButton.APP : 0) | (_buttons_up[2] ? ControllerButton.HOME : 0); }