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