/// <summary>
 /// adding a body gesture
 /// </summary>
 /// <param name="name">the name of a the gesture</param>
 /// <param name="segments">the segments that composed the gesture</param>
 public void AddGesture(BodyGestureName name, BodyGestureSegment[] segments)
 {
     BodyGesture bodygesture = new BodyGesture(name, segments);
     bodygesture.GestureRecognised += new EventHandler<GestureEventArgs>(this.GestureRecognised);
     this.gestures.Add(bodygesture);
 }
        /// <summary>
        /// define all the gestures
        /// </summary>
        private void DefineBodyGestures()
        {
            //waves
            WaveUpExt waveUpRightExt = new WaveUpExt(HandType.RIGHT);
            WaveUpExt waveUpLeftExt = new WaveUpExt(HandType.LEFT);
            WaveUpInt waveUpLeftInt = new WaveUpInt(HandType.LEFT);
            WaveUpInt waveUpRightInt = new WaveUpInt(HandType.RIGHT);
            WaveMidExt waveMidLeftExt = new WaveMidExt(HandType.LEFT);
            WaveMidExt waveMidRightExt = new WaveMidExt(HandType.RIGHT);
            WaveMidInt waveMidLeftInt = new WaveMidInt(HandType.LEFT);
            WaveMidInt waveMidRightInt = new WaveMidInt(HandType.RIGHT);
            WaveMidOpposite waveMidLeftOpposite = new WaveMidOpposite(HandType.LEFT);
            WaveUpBothExt waveUpBothExt = new WaveUpBothExt();
            WaveUpBothInt waveUpBothInt = new WaveUpBothInt();
            WaveMidBothExt waveMidBothExt = new WaveMidBothExt();
            WaveMidBothInt waveMidBothInt = new WaveMidBothInt();
            WaveMidAndUp waveMidAndUpLeft = new WaveMidAndUp(HandType.LEFT);
            WaveMidAndUp waveMidAndUpRight = new WaveMidAndUp(HandType.RIGHT);
            WaveUpOpposite waveUpOppositeLeft = new WaveUpOpposite(HandType.LEFT);
            //clik
            HandForward leftHandForward = new HandForward(HandType.LEFT);
            HandBackward leftHandBackward = new HandBackward(HandType.LEFT);
            HandForward rightHandForward = new HandForward(HandType.RIGHT);
            HandBackward rightHandBackward = new HandBackward(HandType.RIGHT);
            HandMid rightHandMid = new HandMid(HandType.RIGHT);
            HandMid leftHandMid = new HandMid(HandType.LEFT);
            //standing gestures
            HandsDown handsDown = new HandsDown();
            HandsJoinedMid handsJoinedMid = new HandsJoinedMid();
            HandsInDiagonalRightUp handsInDiagonalRightUp = new HandsInDiagonalRightUp();
            ArmsCrossed armsCrossed = new ArmsCrossed();
            HandUp rightHandUp = new HandUp(HandType.RIGHT);
            //hands movement
            HandBehindTheOther leftHandBehinhRightHand = new HandBehindTheOther(HandType.LEFT);
            HandBehindTheOther rightHandBehindLeftHand = new HandBehindTheOther(HandType.RIGHT);
            HandAboveTheOther leftHandAboveRightHand = new HandAboveTheOther(HandType.LEFT);
            HandAboveTheOther rightHandAboveLeftHand = new HandAboveTheOther(HandType.RIGHT);
            //vertical waves
            HandUp leftHandUp = new HandUp(HandType.LEFT);
            HandDown leftHandDown = new HandDown(HandType.LEFT);
            //others
            HandExtToBody leftHandExtToBody = new HandExtToBody(HandType.LEFT);

            //WAVE_UP_LEFT_INT_TO_EXT
            BodyGestureSegment[] waveUpLeftIntToExt = new BodyGestureSegment[3] { waveUpLeftInt, waveUpLeftExt, waveUpLeftInt };
            this.AddGesture(BodyGestureName.WAVE_UP_LEFT_INT_EXT_INT, waveUpLeftIntToExt);

            //LEFT_HAND:MOVING FORWARD AND BACKWARD
            BodyGestureSegment[] leftHandClickGesture = new BodyGestureSegment[2] { rightHandForward, rightHandBackward };
            this.AddGesture(BodyGestureName.CLICK, leftHandClickGesture);

            BodyGestureSegment[] rightHandClickGesture = new BodyGestureSegment[2] { leftHandForward, leftHandBackward };
            this.AddGesture(BodyGestureName.CLICK, rightHandClickGesture);

            //LEFT_HAND:MOVING FORWARD
            BodyGestureSegment[] leftHandForwardGesture = new BodyGestureSegment[1] { leftHandForward };
            this.AddGesture(BodyGestureName.LEFT_HAND_FORWARD, leftHandForwardGesture);

            //LEFT_HAND:MOVING  BACKWARD
            BodyGestureSegment[] leftHandBackwardGesture = new BodyGestureSegment[1] { leftHandBackward };
            this.AddGesture(BodyGestureName.LEFT_HAND_BACKWARD, leftHandBackwardGesture);

            //RIGHT_HAND:MOVING FORWARD
            BodyGestureSegment[] rightHandForwardGesture = new BodyGestureSegment[1] { rightHandForward };
            this.AddGesture(BodyGestureName.RIGHT_HAND_FORWARD, rightHandForwardGesture);

            //RIGHT_HAND:MOVING  BACKWARD
            BodyGestureSegment[] rightHandBackwardGesture = new BodyGestureSegment[1] { rightHandBackward };
            this.AddGesture(BodyGestureName.RIGHT_HAND_BACKWARD, rightHandBackwardGesture);

            //LEFT_HAND:WAVE_UP_INT_EXT_INT_EXT
            BodyGestureSegment[] waveUPLeftIntExtIntExt = new BodyGestureSegment[4] { waveUpLeftInt, waveUpLeftExt, waveUpLeftInt, waveUpLeftExt };
            this.AddGesture(BodyGestureName.WAVE_UP_LEFT_INT_EXT_INT_EXT, waveUPLeftIntExtIntExt);

            //BOTH_HANDS:WAVE_MID_EXT_TO_INT_JOINED_MID
            BodyGestureSegment[] waveMIDLeftandRightExtToInt = new BodyGestureSegment[3] { waveMidBothExt, waveMidBothInt, handsJoinedMid };
            this.AddGesture(BodyGestureName.MENU, waveMIDLeftandRightExtToInt);

            //LEFT_HAND:WAVE_MID_INT_EXT_TO_INT
            BodyGestureSegment[] waveMidLeftExtToInt = new BodyGestureSegment[3] { waveMidLeftInt, waveMidLeftExt, waveMidLeftInt };
            this.AddGesture(BodyGestureName.WAVE_MID_LEFT_INT_EXT_INT, waveMidLeftExtToInt);

            //LEFT_HAND:WAVE_MID_INT_OPPOSITE_INT
            BodyGestureSegment[] waveMidLeftIntToOpposite = new BodyGestureSegment[3] { waveMidLeftInt, waveMidLeftOpposite, waveMidLeftInt };
            this.AddGesture(BodyGestureName.WAVE_MID_LEFT_INT_OPPOSITE_INT, waveMidLeftIntToOpposite);

            //RIGHT_HAND:WAVE_MID_INT_EXT_TO_INT
            BodyGestureSegment[] waveMidRightExtToInt = new BodyGestureSegment[3] { waveMidRightInt, waveMidRightExt, waveMidRightInt };
            this.AddGesture(BodyGestureName.WAVE_MID_RIGHT_INT_EXT_INT, waveMidRightExtToInt);

            //LEFT_HAND:WAVE_MID_INT_TO_EXT
            BodyGestureSegment[] waveMidleftIntToExt = new BodyGestureSegment[1] { waveMidLeftExt };
            this.AddGesture(BodyGestureName.WAVE_MID_LEFT_EXT, waveMidleftIntToExt);

            //LEFT_HAND:WAVE_MID_INT_TO_EXT
            BodyGestureSegment[] waveMidleftIntToOpposite = new BodyGestureSegment[1] { waveMidLeftOpposite };
            this.AddGesture(BodyGestureName.WAVE_MID_LEFT_OPPOSITE, waveMidleftIntToOpposite);

            //LEFT_HAND:VERTICAL_WAVE_MID_DOWN
            BodyGestureSegment[] waveMidleftMidToDown = new BodyGestureSegment[3] {waveMidRightExt, leftHandExtToBody, leftHandDown };
            this.AddGesture(BodyGestureName.VERTICAL_WAVE_LEFT_DOWN, waveMidleftMidToDown);

            //LEFT_HAND:VERTICAL_WAVE_MID_UP
            BodyGestureSegment[] waveMidleftMidToUp = new BodyGestureSegment[3] { waveMidRightExt, leftHandExtToBody, leftHandUp };
            this.AddGesture(BodyGestureName.VERTICAL_WAVE_LEFT_UP, waveMidleftMidToUp);

            //IDLE
            BodyGestureSegment[] handsDownGesture = new BodyGestureSegment[1] { handsDown };
            this.AddGesture(BodyGestureName.HANDS_DOWN, handsDownGesture);

            //ROLLING HANDS FORWARD
            //BodyGestureSegment[] rollingHandsLeftForward = new BodyGestureSegment[2] { leftHandBehinhRightHand, rightHandBehindLeftHand };
            //this.AddGesture(BodyGestureName.ROLLINGS_HANDS_LEFT_FORWARD, rollingHandsLeftForward);

            //BodyGestureSegment[] rollingHandsRightForward = new BodyGestureSegment[2] { rightHandBehindLeftHand, leftHandBehinhRightHand };
            //this.AddGesture(BodyGestureName.ROLLINGS_HANDS_RIGHT_FORWARD, rollingHandsRightForward);

            //VERTICAL WAVES
            BodyGestureSegment[] verticalWaveLeftMidUpMid = new BodyGestureSegment[5] { leftHandExtToBody, leftHandMid, leftHandUp, leftHandMid, leftHandExtToBody };
            this.AddGesture(BodyGestureName.VERTICAL_WAVE_LEFT_MID_UP_MID, verticalWaveLeftMidUpMid);

            BodyGestureSegment[] verticalWaveLeftMidDownMid = new BodyGestureSegment[5] { leftHandExtToBody, leftHandMid, leftHandDown, leftHandMid, leftHandExtToBody };
            this.AddGesture(BodyGestureName.VERTICAL_WAVE_LEFT_MID_DOWN_MID, verticalWaveLeftMidDownMid);

            //DIAGONALS
            BodyGestureSegment[] diagonalRightUpIntToExt = new BodyGestureSegment[2] { handsJoinedMid, handsInDiagonalRightUp };
            this.AddGesture(BodyGestureName.DIAGONAL_RIGHT_UP_INT_EXT, diagonalRightUpIntToExt);

            BodyGestureSegment[] diagonalRightUpExtToInt = new BodyGestureSegment[2] { handsInDiagonalRightUp, handsJoinedMid };
            this.AddGesture(BodyGestureName.DIAGONAL_RIGHT_UP_EXT_INT, diagonalRightUpExtToInt);

            //ARMS_CROSSED
            BodyGestureSegment[] armsCrossedGesture = new BodyGestureSegment[1] { armsCrossed };
            this.AddGesture(BodyGestureName.ARMSCROSSED, armsCrossedGesture);

            //LEFT_HAND:WAVE_UP_LEFT_OPPOSITE_TO_EXT
            BodyGestureSegment[] waveUpLeftOppositeToExt = new BodyGestureSegment[2] { waveUpOppositeLeft, waveUpLeftExt };
            this.AddGesture(BodyGestureName.WAVE_UP_LEFT_OPPOSITE_TO_EXT, waveUpLeftOppositeToExt);

            //RIGHT_HAND:UP
            BodyGestureSegment[] rightHandUpGesture = new BodyGestureSegment[1] { rightHandUp };
            this.AddGesture(BodyGestureName.RIGHT_HAND_UP, rightHandUpGesture);

            LogHelper.logInput("BodyGestures defined", LogHelper.logType.INFO, this);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="name">the name of the gesture</param>
 /// <param name="segments">the segments that composed the gesture</param>
 public BodyGesture(BodyGestureName name, BodyGestureSegment[] segments)
 {
     this.name = name;
     this.segments = segments;
 }