private void OnDiscarded(KinematicsTracker palm) { if (GameFSM.Instance.Current.Hand.Count > HandIndex && Cmp.IsSelected) { GameFSM.Instance.StartCoroutine(DiscardCoroutine(palm.GetAverageVelocity(InputController.Instance.GestureDuration).x)); } }
void Update() { if (DisableAllGestures) { return; } for (int i = 0; i < PalmTrackers.Length; ++i) { KinematicsTracker palmT = PalmTrackers[i], fingerT = FingerTrackers[i]; if (palmT != null) { palmT.Debugging = Debugging; if (trackerCalmTime[i] <= 0.0f) { Vector3 avgVel = palmT.GetAverageVelocity(GestureDuration); Vector3 palmPos = palmT.PositionLogs[palmT.GetLogIndex(0)], fingerPos = fingerT.PositionLogs[fingerT.GetLogIndex(0)]; if (Mathf.Abs(avgVel.x) >= VelThreshold) { SweepSideGesture(palmT); trackerCalmTime[i] = CalmTime; } else if (Mathf.Abs(avgVel.y) >= VelThreshold) { SweepVerticalGesture(palmT); trackerCalmTime[i] = CalmTime; } else if (Mathf.Abs(avgVel.z) >= VelThreshold) { SweepForwardGesture(palmT); trackerCalmTime[i] = CalmTime; } else if ((Horz(palmPos) - Horz(fingerPos)).sqrMagnitude <= (FistCloseDistThreshold * FistCloseDistThreshold)) { fistCloseTime[i] += Time.deltaTime; if (fistCloseTime[i] >= CloseFistTime) { fistCloseTime[i] = 0.0f; trackerCalmTime[i] = CalmTime; FistCloseGesture(palmT); } } } else { trackerCalmTime[i] -= Time.deltaTime; } } } }