public static CompositeBodyTransform CrossoverArmStretchTransform(JointSide sideOfStretchedArm) { JointSide oppositeSide; JointTransform stretchDirectionTransform; // First set the stretch direction and the opposite side (helper arm side) if (sideOfStretchedArm == JointSide.Left) { oppositeSide = JointSide.Right; stretchDirectionTransform = new SetJointDirectionTransform(1, 0, 0); } else { oppositeSide = JointSide.Left; stretchDirectionTransform = new SetJointDirectionTransform(-1, 0, 0); } // Get all joint types for both stretched and support arm JointType stretchedElbow = JointTypeHelper.GetSidedJointType(SidedJointName.Elbow, sideOfStretchedArm); JointType stretchedWrist = JointTypeHelper.GetSidedJointType(SidedJointName.Wrist, sideOfStretchedArm); JointType supportElbow = JointTypeHelper.GetSidedJointType(SidedJointName.Elbow, oppositeSide); JointType supportWrist = JointTypeHelper.GetSidedJointType(SidedJointName.Wrist, oppositeSide); // Apply the transforms in both arms return(new CompositeBodyTransform() .Compose(stretchedElbow, stretchDirectionTransform) .Compose(stretchedWrist, stretchDirectionTransform) .Compose(supportElbow, new SetJointDirectionTransform(0, -1, 0)) .Compose(supportWrist, new SetJointDirectionTransform(0, 1, 0))); }
public static BodyTransform CrossoverArmStretchTransform(JointSide sideOfStretchedArm) { JointSide oppositeSide; JointTransform stretchDirectionTransform; // First set the stretch direction and the opposite side (helper arm side) if (sideOfStretchedArm == JointSide.Left) { oppositeSide = JointSide.Right; stretchDirectionTransform = new SetJointDirectionTransform(1, 0, 0); } else { oppositeSide = JointSide.Left; stretchDirectionTransform = new SetJointDirectionTransform(-1, 0, 0); } // Get all joint types for both stretched and support arm JointType stretchedElbow = JointTypeHelper.GetSidedJointType(SidedJointName.Elbow, sideOfStretchedArm); JointType stretchedWrist = JointTypeHelper.GetSidedJointType(SidedJointName.Wrist, sideOfStretchedArm); JointType supportElbow = JointTypeHelper.GetSidedJointType(SidedJointName.Elbow, oppositeSide); JointType supportWrist = JointTypeHelper.GetSidedJointType(SidedJointName.Wrist, oppositeSide); // Apply the transforms in both arms return new BodyTransform() .Compose(stretchedElbow, stretchDirectionTransform) .Compose(stretchedWrist, stretchDirectionTransform) .Compose(supportElbow, new SetJointDirectionTransform(0, -1, 0)) .Compose(supportWrist, new SetJointDirectionTransform(0, 1, 0)); }