Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.Events;
- public class OpenMenuGestureController : MonoBehaviour
- {
- enum States
- {
- None,
- InitialClosedHand,
- OpenHand1
- }
- States state;
- int correctFrames = 0, wrongFrames = 0, normalDelay = 1, timeout = 20;
- public UnityEvent OnMenuOpen;
- private void Start()
- {
- ManomotionManager.OnManoMotionFrameProcessed += HandleManoMotionFrameUpdated;
- }
- private void OnDestroy()
- {
- ManomotionManager.OnManoMotionFrameProcessed -= HandleManoMotionFrameUpdated;
- }
- void HandleManoMotionFrameUpdated()
- {
- if (ManomotionManager.Instance.Hand_infos[0].hand_info.warning == Warning.WARNING_HAND_NOT_FOUND)
- return;
- switch (state)
- {
- case States.None:
- if (ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info.state == 13)
- state = States.InitialClosedHand;
- break;
- case States.InitialClosedHand:
- if (ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info.state == 0
- && ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info.hand_side == HandSide.Palmside)
- correctFrames++;
- else
- wrongFrames++;
- if (correctFrames > normalDelay)
- {
- correctFrames = wrongFrames = 0;
- state = States.OpenHand1;
- }
- if (wrongFrames > timeout)
- {
- correctFrames = wrongFrames = 0;
- state = States.None;
- }
- break;
- case States.OpenHand1:
- if (ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info.state == 0)
- correctFrames++;
- else
- wrongFrames++;
- if (correctFrames > normalDelay)
- {
- correctFrames = wrongFrames = 0;
- state = States.None;
- OnMenuOpen?.Invoke();
- enabled = false;
- }
- break;
- default:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement