1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #if UNITY_INPUT_SYSTEM_ENABLE_UI
- using UnityEngine.EventSystems;
- namespace UnityEngine.InputSystem.UI
- {
- internal struct NavigationModel
- {
- public Vector2 move;
- public int consecutiveMoveCount;
- public MoveDirection lastMoveDirection;
- public float lastMoveTime;
- public ButtonState submitButton;
- public ButtonState cancelButton;
- public AxisEventData eventData;
- public void Reset()
- {
- move = Vector2.zero;
- OnFrameFinished();
- }
- public void OnFrameFinished()
- {
- submitButton.OnFrameFinished();
- cancelButton.OnFrameFinished();
- }
- public struct ButtonState
- {
- private bool m_IsPressed;
- private PointerEventData.FramePressState m_FramePressState;
- public bool isPressed
- {
- get => m_IsPressed;
- set
- {
- if (m_IsPressed != value)
- {
- m_IsPressed = value;
- if (m_FramePressState == PointerEventData.FramePressState.NotChanged && value)
- m_FramePressState = PointerEventData.FramePressState.Pressed;
- else if (m_FramePressState == PointerEventData.FramePressState.NotChanged && !value)
- m_FramePressState = PointerEventData.FramePressState.Released;
- else if (m_FramePressState == PointerEventData.FramePressState.Pressed && !value)
- m_FramePressState = PointerEventData.FramePressState.PressedAndReleased;
- }
- }
- }
- public bool wasPressedThisFrame => m_FramePressState == PointerEventData.FramePressState.Pressed ||
- m_FramePressState == PointerEventData.FramePressState.PressedAndReleased;
- public void OnFrameFinished()
- {
- m_FramePressState = PointerEventData.FramePressState.NotChanged;
- }
- }
- }
- }
- #endif
|