private int CheckSequences(float[][][] newHandPosition) { if (!CheckTerminator(startPosition) && nonZero(startPosition)) { if (Time.time - startPositionTime >= timer * 2) { startPositionTime = Time.time; return(2); } foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).Normal(); } } return(1); } if (!CheckResetter(startPosition) && nonZero(startPosition)) { if (DetectChange(newHandPosition)) { reset.hide(); foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).Normal(); } } if (Time.time - startPositionTime >= timer * 2) { //Debug.Log("CLEARED!" + Time.time); reset.show(); startPositionTime = Time.time; return(3); } } else if (Time.time - startPositionTime >= timer * 2) { reset.show(); foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).Green(); } } } return(1); } return(0); }
private void DetectAndModify(float[][][] newHandPosition, int i) { if (DetectChange(newHandPosition)) { if (i == 0 && Time.time - startPositionTime >= timer && nonZero(startPosition)) { current.Add(newHandPosition); } startPosition = newHandPosition; startPositionTime = Time.time; if (i == 0) { checkmark.hide(); foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).Normal(); } } } } else { if (i == 0 && Time.time - startPositionTime >= timer && nonZero(startPosition)) { checkmark.show(); foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).Green(); } } } } }
public void RemoveHandRepresentation(HandRepresentation handRep) { activeHandReps.Remove(handRep); }
public override void Process() { List <Hand> handList = currentFrame.Hands; float[][][] newHandPosition = genGesture(); foreach (Hand h in handList) { int i = h.IsLeft ? 0 : 1; addCoord(newHandPosition[i], 0, h.PalmPosition); for (int j = 0; j < 5; j++) { addCoord(newHandPosition[i], j + 1, h.Fingers[j].TipPosition); } } normalize(newHandPosition); if (handList.Count > 1) { foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).ShiftPosition(); } } } else { foreach (Hand h in currentFrame.Hands) { HandRepresentation rep = controller.getGraphics(h); if (rep != null) { ((CapsuleHand)((HandProxy)rep).handModels[0]).NormalPosition(); } } } /*if (findTerm) //In mode to set terminator gesture * { * if (DetectChange(newHandPosition)) * { * if (Time.time - startPositionTime >= timer && nonZero(newHandPosition)) * { * termList.Add(newHandPosition); * if (termList.Count > 10) * { * terminators = new PasswordData(term); * terminators.write(term, termList); * sequenceTerminator = averageTerminators(); * findTerm = false; * } * } * startPosition = newHandPosition; * startPositionTime = Time.time; * checkmark.hide(); * foreach (Hand h in currentFrame.Hands) * { * HandRepresentation rep = controller.getGraphics(h); * if (rep != null) * { * ((CapsuleHand)((HandProxy)rep).handModels[0]).Normal(); * } * } * } * else * { * if (Time.time - startPositionTime >= timer) * { * checkmark.show(); * foreach (Hand h in currentFrame.Hands) * { * HandRepresentation rep = controller.getGraphics(h); * if (rep != null) * { * ((CapsuleHand)((HandProxy)rep).handModels[0]).Green(); * } * } * } * } * return; * }*/ if (setMode) { int i = CheckSequences(newHandPosition); DetectAndModify(newHandPosition, i); if (i == 2) { data.write(path, current); new Scene_Manager().LoadMainMenu(); } else if (i == 3) { current.Clear(); } } else { int i = CheckSequences(newHandPosition); DetectAndModify(newHandPosition, i); if (i == 2) { if (compareData(data.getHandGesture())) { new Scene_Manager().LoadSuccess(); } else { new Scene_Manager().LoadFail(); } } else if (i == 3) { current.Clear(); } } }