Exemplo n.º 1
0
        ////keep_restriction :   'keep' 'your'? body_part relative_constraint ;
        //public override Wrapper VisitKeep_restriction(PreposeGesturesParser.Keep_restrictionContext context)
        //{
        //    var joint = (JointGroup)this.Visit(context.body_part());
        //    var direction = (Direction)this.Visit(context.relative_constraint().direction());
        //    CompositeBodyRestriction restriction = joint.Aggregate(j => new KeepRestriction(j, direction));

        //    return new Wrapper(restriction);
        //}

        public override Wrapper VisitJoint(PreposeGesturesParser.JointContext context)
        {
            if (context.side() != null)
            {
                var side = (JointSide)this.Visit(context.side());
                switch (context.sided_joint().GetText())
                {
                case "shoulder": return(side == JointSide.Left ? new Wrapper(JointType.ShoulderLeft) : new Wrapper(JointType.ShoulderRight));

                case "elbow": return(side == JointSide.Left ? new Wrapper(JointType.ElbowLeft) : new Wrapper(JointType.ElbowRight));

                case "hand": return(side == JointSide.Left ? new Wrapper(JointType.HandLeft) : new Wrapper(JointType.HandRight));

                case "hip": return(side == JointSide.Left ? new Wrapper(JointType.HipLeft) : new Wrapper(JointType.HipRight));

                case "wrist": return(side == JointSide.Left ? new Wrapper(JointType.WristLeft) : new Wrapper(JointType.WristRight));

                case "handtip": return(side == JointSide.Left ? new Wrapper(JointType.HandTipLeft) : new Wrapper(JointType.HandTipRight));

                case "thumb": return(side == JointSide.Left ? new Wrapper(JointType.ThumbLeft) : new Wrapper(JointType.ThumbRight));

                case "knee": return(side == JointSide.Left ? new Wrapper(JointType.KneeLeft) : new Wrapper(JointType.KneeRight));

                case "ankle": return(side == JointSide.Left ? new Wrapper(JointType.AnkleLeft) : new Wrapper(JointType.AnkleRight));

                case "foot": return(side == JointSide.Left ? new Wrapper(JointType.FootLeft) : new Wrapper(JointType.FootRight));

                default: throw new ArgumentException(context.center_joint().GetText());
                }
            }
            else
            {
                switch (context.center_joint().GetText())
                {
                case "spinemid": return(new Wrapper(JointType.SpineMid));

                case "spinebase": return(new Wrapper(JointType.SpineBase));

                case "spineshoulder": return(new Wrapper(JointType.SpineShoulder));

                case "neck": return(new Wrapper(JointType.Neck));

                case "head": return(new Wrapper(JointType.Head));

                case "hips": return(new Wrapper(new JointGroup(new JointType[] { JointTypeHelper.GetSidedJointType(SidedJointName.Hip, JointSide.Left), JointTypeHelper.GetSidedJointType(SidedJointName.Hip, JointSide.Right) })));

                case "back": return(new Wrapper(new JointGroup(JointTypeHelper.GetBack())));

                case "you": return(new Wrapper(new JointGroup(JointTypeHelper.GetYou())));

                default: throw new ArgumentException(context.center_joint().GetText());
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="PreposeGesturesParser.joint"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitJoint([NotNull] PreposeGesturesParser.JointContext context)
 {
 }
 /// <summary>
 /// Visit a parse tree produced by <see cref="PreposeGesturesParser.joint"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitJoint([NotNull] PreposeGesturesParser.JointContext context)
 {
     return(VisitChildren(context));
 }