////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()); } } }
/// <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)); }