Ejemplo n.º 1
0
        private InputBinding ConfigureSkeleton(
            XPathNavigator navigator, XPathNodeIterator bindingIt, ISkeletonInput input)
        {
            string point       = bindingIt.Current.GetAttribute("point", "");
            float  zeroAngle   = float.Parse(bindingIt.Current.GetAttribute("zeroAngle", ""), CultureInfo.InvariantCulture);
            float  sensitivity = float.Parse(bindingIt.Current.GetAttribute("sensitivity", ""), CultureInfo.InvariantCulture);

            XPathNodeIterator axis = bindingIt.Current.Select("skeleton/axis");

            if (axis.Count > 0)
            {
                axis.MoveNext();
                return(ConfigureAbsoluteSkeleton(navigator, bindingIt,
                                                 (AbsoluteSkeletonBinding.BindingAxis)Enum.Parse(typeof(AbsoluteSkeletonBinding.BindingAxis), axis.Current.Value),
                                                 point, zeroAngle, sensitivity, input));
            }

            XPathNodeIterator sb1 = bindingIt.Current.Select("skeleton/firstBone");
            XPathNodeIterator sb2 = bindingIt.Current.Select("skeleton/secondBone");

            if (sb1.Count > 0)
            {
                sb1.MoveNext();
                BoneMarkers bone1 = (BoneMarkers)Enum.Parse(typeof(BoneMarkers), sb1.Current.Value);
                if (sb2.Count > 0)
                {
                    sb2.MoveNext();
                    BoneMarkers bone2 = (BoneMarkers)Enum.Parse(typeof(BoneMarkers), sb2.Current.Value);
                    return(new SkeletonBinding(input, Configuration.GetHandle(point), bone1, bone2, zeroAngle, sensitivity));
                }
                return(new SkeletonBinding(input, Configuration.GetHandle(point), bone1, zeroAngle, sensitivity));
            }
            return(null);
        }
Ejemplo n.º 2
0
 public SkeletonBinding(
     ISkeletonInput input,
     Configuration.InputValueHandle handle,
     BoneMarkers bone,
     float zeroAngle,
     float sensitivity)
     : base(handle, zeroAngle, sensitivity)
 {
     this._input            = input;
     FirstBone              = bone;
     _type                  = BindingType.SingleBoneAngle;
     _event_handler         = new EventHandler <SkeletonChangedEventArgs>(_input_assign_single_bone_angle);
     _analyzer_handler      = new EventHandler <SkeletonChangedEventArgs>(_analyzer_handle);
     input.SkeletonChanged += _event_handler;
     input.SkeletonChanged += _analyzer_handler;
 }
Ejemplo n.º 3
0
 public AbsoluteSkeletonBinding(
     ISkeletonInput input,
     Configuration.InputValueHandle handle,
     SkeletonMarkers trackedJoint,
     SkeletonMarkers?relativePositionToJoint,
     BindingAxis axis,
     float offset,
     float sensitivity)
     : base(handle, offset, sensitivity)
 {
     this._input            = input;
     _trackedJoint          = trackedJoint;
     _baseJoint             = relativePositionToJoint;
     _axis                  = axis;
     _event_handler         = new EventHandler <SkeletonChangedEventArgs>(_input_assign_position);
     _analyzer_handler      = new EventHandler <SkeletonChangedEventArgs>(_analyzer_handle);
     input.SkeletonChanged += _event_handler;
     input.SkeletonChanged += _analyzer_handler;
 }
Ejemplo n.º 4
0
        private InputBinding ConfigureAbsoluteSkeleton(XPathNavigator navigator, XPathNodeIterator bindingIt,
                                                       AbsoluteSkeletonBinding.BindingAxis axis, string point, float zeroAngle, float sensitivity, ISkeletonInput input)
        {
            XPathNodeIterator sb1 = bindingIt.Current.Select("skeleton/trackedJoint");
            XPathNodeIterator sb2 = bindingIt.Current.Select("skeleton/baseJoint");

            if (sb1.Count > 0)
            {
                sb1.MoveNext();
                SkeletonMarkers trackedJoint = (SkeletonMarkers)Enum.Parse(typeof(SkeletonMarkers), sb1.Current.Value);
                if (sb2.Count > 0)
                {
                    sb2.MoveNext();
                    SkeletonMarkers?baseJoint = (SkeletonMarkers)Enum.Parse(typeof(SkeletonMarkers), sb2.Current.Value);
                    return(new AbsoluteSkeletonBinding(input, Configuration.GetHandle(point), trackedJoint, baseJoint, axis, zeroAngle, sensitivity));
                }
                return(new AbsoluteSkeletonBinding(input, Configuration.GetHandle(point), trackedJoint, null, axis, zeroAngle, sensitivity));
            }
            return(null);
        }