Example #1
0
        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);
        }
Example #2
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();
                 }
             }
         }
     }
 }
Example #3
0
 public void RemoveHandRepresentation(HandRepresentation handRep)
 {
     activeHandReps.Remove(handRep);
 }
Example #4
0
        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();
                }
            }
        }