private void Update_HalfButton(HeadTrackerData headTrackerData, NetychordsButton checkedButton)
        {
            if (checkedButton != null)
            {
                var Occ = checkedButton.Occluder;

                Half_leftRect.Height = Occ.ActualHeight;
                Half_leftRect.Width  = Occ.ActualWidth / 2;

                Half_rightRect.Height = Occ.ActualHeight;
                Half_rightRect.Width  = Occ.ActualWidth / 2;

                Half_midLine.X1 = Canvas.GetLeft(Occ) + Occ.ActualWidth / 2;
                Half_midLine.Y1 = Canvas.GetTop(Occ);
                Half_midLine.X2 = Canvas.GetLeft(Occ) + Occ.ActualWidth / 2;
                Half_midLine.Y2 = Canvas.GetTop(Occ) + Occ.ActualHeight;

                Canvas.SetLeft(Half_leftRect, Canvas.GetLeft(Occ));
                Canvas.SetLeft(Half_rightRect, Canvas.GetLeft(Occ) + Occ.ActualWidth / 2);
                Canvas.SetTop(Half_leftRect, Canvas.GetTop(Occ));
                Canvas.SetTop(Half_rightRect, Canvas.GetTop(Occ));

                double posPart = 0;
                double negPart = 0;

                if (headTrackerData.TranspYaw >= 0)
                {
                    posPart = headTrackerData.TranspYaw;
                    negPart = 0;
                }
                else
                {
                    negPart = -headTrackerData.TranspYaw;
                    posPart = 0;
                }

                if (Rack.NetychordsDMIBox.InDeadZone)
                {
                    Half_midLine.Opacity = Half_midLineActiveOpacity;
                }
                else
                {
                    Half_midLine.Opacity = 0;
                }

                Half_leftRect.Opacity  = Half_rectRangeMapper.Map(negPart);
                Half_rightRect.Opacity = Half_rectRangeMapper.Map(posPart);
            }
        }
        public void UpdateGraphics(HeadTrackerData headTrackerData, NetychordsButton checkedButton)
        {
            switch (Mode)
            {
            case HTFeedbackModes.Bars:
                Update_Bars(headTrackerData, checkedButton);
                break;

            case HTFeedbackModes.HalfButton:
                Update_HalfButton(headTrackerData, checkedButton);
                break;

            case HTFeedbackModes.DeadZone:
                Update_DeadZone(headTrackerData, checkedButton);
                break;
            }
        }
        private void Update_Bars(HeadTrackerData headTrackerData, NetychordsButton checkedButton)
        {
            if (checkedButton != null)
            {
                Bar_horLine.X1 = Canvas.GetLeft(checkedButton) + checkedButton.ActualWidth / 2;
                Bar_horLine.Y1 = Canvas.GetTop(checkedButton) + checkedButton.ActualHeight / 2;

                Bar_horLine.X2 = Bar_horLine.X1 + headTrackerData.TranspYaw;
                Bar_horLine.Y2 = Bar_horLine.Y1;

                Bar_verLine.X1 = Bar_horLine.X2;
                Bar_verLine.Y1 = Bar_horLine.Y2 - Half_VLHeight;

                Bar_verLine.X2 = Bar_horLine.X2;
                Bar_verLine.Y2 = Bar_horLine.Y2 + Half_VLHeight;

                Canvas.UpdateLayout();
            }
        }
        private void Update_DeadZone(HeadTrackerData headTrackerData, NetychordsButton checkedButton)
        {
            if (checkedButton != null)
            {
                var Occ = checkedButton.Occluder;

                Dead_midLine.X1 = Canvas.GetLeft(Occ) + Occ.ActualWidth / 2;
                Dead_midLine.Y1 = Canvas.GetTop(Occ);
                Dead_midLine.X2 = Canvas.GetLeft(Occ) + Occ.ActualWidth / 2;
                Dead_midLine.Y2 = Canvas.GetTop(Occ) + Occ.ActualHeight;

                if (Rack.NetychordsDMIBox.InDeadZone)
                {
                    Dead_midLine.Opacity = Dead_midLineActiveOpacity;
                }
                else
                {
                    Dead_midLine.Opacity = 0;
                }
            }
        }