public bool ContinuousCheckRecognized() { Debug.Log("ContinuousChecking!"); double[][] points = new double[constantPositions.Count][]; switch (valuesTracked) { case 3: for (int i = 0; i < constantPositions.Count; i++) { points[i] = new double[3] { constantPositions[i].x, constantPositions[i].y, constantPositions[i].z }; } break; case 6: for (int i = 0; i < constantPositions.Count; i++) { points[i] = new double[6] { constantPositions[i].x, constantPositions[i].y, constantPositions[i].z, rightHandRotations[i].x, rightHandRotations[i].y, rightHandRotations[i].z }; } break; case 12: for (int i = 0; i < constantPositions.Count; i++) { points[i] = new double[12] { constantPositions[i].x, constantPositions[i].y, constantPositions[i].z, rightHandRotations[i].x, rightHandRotations[i].y, rightHandRotations[i].z, leftHandPositions[i].x, leftHandPositions[i].y, leftHandPositions[i].z, leftHandRotations[i].x, leftHandRotations[i].y, leftHandRotations[i].z }; } break; } double[] probabilities = hmm.Probabilities(points); double[] likelihoods = hmm.LogLikelihoods(points); double[] scores = hmm.Scores(points); double bestFit = Mathf.NegativeInfinity; for (int i = 0; i < likelihoods.Length; i++) { //Debug.Log(scores[i]); if (likelihoods[i] > bestFit) { bestFit = likelihoods[i]; } } if (bestFit >= 0) { int decision = hmm.Decide(points); string value = string.Empty; foreach (KeyValuePair <string, int> item in gestureIndex) { if (item.Value == decision) { value = item.Key; } } friendAI.RecieveCommand(value); logger.Log(value, true); Debug.Log("Did you write a: " + value + "?"); return(true); } return(false); }